Tôi đã làm code Python của mình chạy nhanh gấp 66 lần

Trời ơi tin được không tôi đã thử nghiệm 1 hàm Python chạy nhanh gấp 66 lần so với trước đó, và bạn hoàn toàn có thể thử nghiệm trong dự án của bạn.

Python là một ngôn ngữ tuyệt vời, đơn giản và dễ học

Nhưng bạn biết đấy, không có gì là hoàn hảo cả và Python cũng không ngoại lệ. Python chạy chậm hơn nhiều so với các ngôn ngữ biên dịch như C++ và Rust.

Nhưng chậm hơn bao nhiêu thì ít có người làm bài test so sánh thực tế.

Vậy nên tôi sẽ thử  so sánh Rust và Python với 1 hàm tính Fibonaci cơ bản nhé.

Đoạn code Python sau đây đo thời gian cần thiết để tính số Fibonacci thứ 30 trong 50 lần thử:

python-basic-run
Hàm này chạy hết 15 giây 84

“Nhanh điên” (Blazingly fast) là từ mà trang chủ của Rust nói về hiệu suất ngôn ngữ của họ, để xem họ có xạo không nhé ?

Tôi đã viết 1 hàm tương tự với Rust, và đây là kết quả đo được.

 

Rust-normal-run
0.24 giây – 240 ms , “nhanh điên” là có thật

Nhanh gấp 66 lần so với Python. Vậy đã tới lúc từ bỏ Python được rồi nhỉ, Rust mạnh điên.

KHÔNG HỀ NHỚ !!!

Syntax của Rust nói chung cũng không được gọn gàng như Python, đặc biệt là với những người đã code Python đủ lâu thì khá khó chịu khi phải chuyển sang các ngôn ngữ khác có Syntax phức tạp hơn.

Ngoài ra Python còn rất phù hợp với khi bạn làm ML và Data science.

Vậy nên lời khuyên của tôi là cứ sử dụng Python làm ngôn ngữ chính của dự án và tăng tốc một vài phần bằng Rust.

Chúng ta làm điều đó như thế nào ?

Viết lại các hàm Python chậm bằng Rust

Cộng đồng Python đã biến ý tưởng đó thành hiện thực, có rất nhiều cách để viết lại các hàm Python có hiệu suất thấp bằng Rust. Và một trong những cách nổi tiếng nhất là sử dụng PyO3.

Về cách cài đặt và sử dụng PyO3 bạn có thể tham khảo bài viết này của tôi nhé, còn nội dung bài blog này tôi sẽ chỉ tập trung vào so sánh hiệu suất thôi.

Cài đặt Maturin để kết nối giữa Rust và Python qua một dự án đơn giản

Sau một vài bước cài đặt PyO3, bạn có thể viết Rust code trong file lib.rs như sau.

rust-in-python

Rồi bắt đầu sử dụng trong hàm Python thôi, cùng so sánh thời gian chạy nhé.

Rust-in-Python

0.24s, tức là cũng ngang với Rust thông thường, vẫn nhanh gấp 66 lần so với Python (điều quan trọng phải nhấn mạnh lại)

Chúng ta đã khiến Python chạy “nhanh điên” như Rust bằng Rust nhưng không phải chuyển cả dự án sang Rust.

Lời kết

Năm 2022, tôi đã từng “xui” các bạn học Rust qua bài blog này :

Quẳng Python, Javascript, Java đi – đây mới là ngôn ngữ bạn nên học trong thời gian tới

Và tới giờ tôi thấy điều đó là hoàn toàn đúng đắn khi Rust bắt đầu được chú ý nhiều hơn, tích hợp được vào Python để nâng cao hiệu suất, và trên tất cả chúng ta không cần phải lựa chọn Python hay Rust. Nhiều người nói tại sao phải học trước ngôn ngữ khác, khi nào được giao vào một dự án Rust thì học cũng không muộn là một quan niệm sai lầm nhé. Chúng ta cần phải luôn cập nhật kĩ năng và làm mới bản thân để sẵn sàng cho những thay đổi trong tương lai. Bản thân tôi nhờ những thử nghiệm này cũng đang cân nhắc sử dụng Rust để tăng tốc độ cho dự án Python hiện tại của công ty.

Trẻ con mới phải lựa chọn, còn người trưởng thành thì chọn cả 2.

Cảm ơn đã đọc hết bài blog này. Chúc các bạn luôn hạnh phúc cùng “2 con vợ” Python và Rust nhé.

Add a Comment

Scroll Up