- vừa được xem lúc

plotters-rs - Bộ thư viện trực quan hóa dữ liệu bằng Rust

0 0 5

Người đăng: RustDEV VietNam

Theo Viblo Asia

Trực quan hóa dữ liệu là yếu tố quan trọng trong việc phân tích dữ liệu và trong nhiều năm dường như mathplotlib viết bằng Python là lựa chọn hiển nhiên. Tuy nhiên, trong thực tế, đặc biệt là trong môi trường Production, các ứng dụng ngày càng đòi hỏi phải có tốc độ cao hơn, khả năng xử lý khối lượng dữ liệu lớn hơn nhưng không làm cháy túi vì chi tiêu cho tài nguyên hệ thống (RAM, CPU/GPU), có khả năng mở rộng tốt hơn, và do đó các lập trình viên luôn cố tìm kiếm những lựa chọn khả dĩ hơn. plotter-rs là một thư viện viết bằng Rust, có khả năng giải quyết các vấn đề này nhưng không đánh đổi bất cứ chức năng nào mà mathplotlib có.

Để tìm hiểu về cách sử dụng plotter-rs tronng Jupyter Notebook, hãy xem video "#0033 - Vẽ đồ thị với plotters-rs (Phần 01)” trên kênh Youtube RustDEV Vietnam. Đây là video đầu tiên trong chuỗi video về chủ đề này.

Tại sao nên thử plotter-rs?

Chúng ta đã có mathplotlib, vậy tại sao lại nên thử dùng plotter-rs? Vậy chúng ta hãy cùng lướt qua một vài khác biệt cơ bản giữa hai thư viện này nhé!

mathplotlib và các thư viện trực quan hóa dữ liệu dựa trên nó (ví dụ: plotly) đều dùng Python, một ngôn ngữ thông dịch. plotter-rs được viết bằng Rust, một ngôn ngữ biên dịch. Sự khác biệt về tốc độ và tối ưu sử dụng tài nguyên hệ thông (với giả thiết trên cùng một thuật toán, cho cùng một chức năng) giữa các chương trình thông dịch và biên dịch là rất khác nhau. Các chương trình biên dịch luôn chiếm ưu thế đặc biệt khi phải xử lý các khối dữ liệu lớn hoặc có tính toán phức tạp.

Rust được thiết kế để đảm bảo “zero-cost abstraction” trong khi đó Python chưa có khả năng này, càng nhiều lớp trừu tượng hóa càng ảnh hưởng đến tốc độ và việc sử dụng tài nguyên của chương trình. Rõ ràng rằng, cả plotter-rsmathplotlib đều là thư viện, do đó sẽ phải sử dụng rất nhiều lớp trừu tượng hóa để tăng tính kế thừa và mở rộng.

Mô hình “ownership” của Rust loại bỏ tất cả các vấn đề về sử dụng bộ nhớ mà các ngôn ngữ khác gặp phải trong đó có cả Python nhưng tất nhiên không làm ảnh hưởng chút nào đến tốc độ và năng lực xử lý của chương trình. Tất cả được xử lý và đảm bảo chắc chắn ngay từ khi biên dịch, trong khi đó Python dựa vào một “garbage collector” và kết quả là các lập trình viên không thể kiểm soát chi tiết bộ nhớ và khi mathplotlib phải vẽ những độ thị phức tạp thì hiện tượng phân mảnh bộ nhớ là khó tránh khỏi.

plotter-rs hỗ trợ rất tốt WebAssembly. Trên thực tế, Rust có thể coi là ngôn ngữ hỗ trợ WebAssembly tốt nhất. Python thì chưa có khả năng này do vậy mathplotlib cũng chưa hỗ trợ WebAssembly. Rust cũng hộ trợ rất tốt WebGPU do vậy plotter-rs chắc chắn sẽ được tích hợp trực tiếp khả năng này trong tương lai gần (tại thời điểm viết bài này, việc kết hợp plotter-rs với WebGPU mới chỉ là gián tiếp qua cơ chế mở rộng “backend” với thư viện bên thứ ba wgpu-rs). Python cũng có hỗ trợ WebGPU nhưng do bản chất ngôn ngữ nên cũng có những giới hạn so với Rust, hơn nữa, mathplotlib thì hoàn toàn không được thiết kế để hỗ trợ.

Cuối cùng, tất nhiên việc chọn lựa thư viện, công cụ nào phụ thuộc rất nhiều vào mục đích. Nếu chúng ta muốn liền mạch từ mô phỏng, thử nghiệm mô hình giải pháp trực quan hóa dữ liệu trên các khối dữ liệu lớn, tính toán phức tạp đến triển khai vào Production thì tôi cho rằng plotter-rs sẽ là lựa chọn tối ưu. Đặc biệt, khi bạn mới bắt đầu với khoa học dữ liệu và tìm hiểu về trực quan hóa dữ liệu thì nên bắt đầu luôn với plotter-rs.

Để tìm hiểu về cách sử dụng plotter-rs tronng Jupyter Notebook, hãy xem video "#0033 - Vẽ đồ thị với plotters-rs (Phần 01)” trên kênh Youtube RustDEV Vietnam. Đây là video đầu tiên trong chuỗi video về chủ đề này.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Chuyện cái comment

Chuyện cái comment. Chuyện rằng, có một ông bạn nọ có cái blog ở trên mạng, cũng có dăm.

0 0 43

- vừa được xem lúc

Đừng đánh nhau với borrow checker

Đừng đánh nhau với borrow checker. TL;DR: Đừng bao giờ đánh nhau với borrow checker, nó được sinh ra để bạn phải phục tùng nó .

0 0 38

- vừa được xem lúc

Chuyện biểu diễn ma trận trên máy tính

Chuyện biểu diễn ma trận trên máy tính. Cách đây mấy hôm mình có share cái screenshot trên Facebook, khoe linh tinh vụ mình đang viết lại cái CHIP-8 emulator bằng Rust.

0 0 54

- vừa được xem lúc

Rust và Lập trình Web

Rust và Lập trình Web. Bài viết được dịch lại từ bản gốc "Rust for the Web" đăng tại phiên bản blog tiếng Anh của mình.

0 0 46

- vừa được xem lúc

Viết ứng dụng đọc tin HackerNews bằng Rust

Viết ứng dụng đọc tin HackerNews bằng Rust. Dạo này mình toàn viết bài linh tinh, lâu rồi chưa thấy viết bài kĩ thuật nào mới nên hôm nay mình viết trở lại, mất công các bạn lại bảo mình không biết co

0 0 33

- vừa được xem lúc

Cài đặt Rust trên Arch Linux

Cài đặt Rust trên Arch Linux. Việc cài đặt Rust trên môi trường Arch Linux khá là đơn giản.

0 0 52