R chậm hơn bao nhiêu so với Python?

Một điều bạn luôn nghe về R là nó chậm như thế nào, đặc biệt là khi mã không được vector hóa tốt hoặc bao gồm các vòng lặp. Nhưng R là một ngôn ngữ thông dịch và điểm mạnh của nó thực sự không phải là tốc độ mà là lợi thế so sánh là 4.284 gói trên CRAN. Chúng tôi chấp nhận tốc độ chậm hơn để tiết kiệm thời gian không phải phát minh lại bánh xe mỗi khi chúng tôi muốn làm điều gì đó mới

Nhưng điều đó không có nghĩa là đôi khi không đáng để tự hỏi R chậm như thế nào so với các ngôn ngữ khác, đặc biệt là với các công cụ mới như gấu trúc trong Python. Tôi tình cờ đang giải bài toán Project Euler với mục tiêu tính 10.001 số nguyên tố đầu tiên. Tôi quyết định xem R hoạt động như thế nào so với các ngôn ngữ chính khác của tôi là Python và C. Tôi cũng muốn xem hiệu suất của R đã thay đổi như thế nào khi tôi sử dụng apply[] và cả gói trình biên dịch [ish] mới

Tôi đã sử dụng cùng một cách tiếp cận cơ bản cho từng ngôn ngữ bằng cách viết hai hàm. Đầu tiên xác định xem một số là số nguyên tố hay hợp số bằng phép chia thử nghiệm với tập hợp {2, 3, 5, …, round[sqrt[number]]} và dừng lại khi phép chia thử nghiệm có mod 0 hoặc khi chúng tôi đã sử dụng hết tất cả các khả năng có thể . Hàm thứ hai xem xét các số lẻ và đếm số lượng các giá trị nguyên tố. Nó trả về giá trị của chỉ mục được cung cấp. Mã cho C, Python và R [có và không sử dụng sapply[]]

Kết quả đúng như mong đợi nhất

time ./euler7
real    0m0.026s
user    0m0.024s
sys     0m0.000s

time python euler7.py 
real    0m0.409s
user    0m0.396s
sys     0m0.004s

time R CMD BATCH euler7.R
real    0m7.058s
user    0m6.268s
sys     0m0.028s

C, ngôn ngữ được biên dịch duy nhất, rất nhanh. Nó nhanh hơn Python gần 16 lần và nhanh hơn R hơn 270 lần. So với R, Python tăng hiệu suất gấp 17 lần. Để diễn giải SAT, C là Python vì Python là R [đối với vấn đề này]

Còn việc sử dụng sapply[] và tận dụng lợi thế của lập trình chức năng Rs thì sao? . Liên quan đến các vòng lặp, sử dụng lập trình chức năng và sapply[] thực sự đã tăng thời gian chạy lên 10. 470 giây

R trông không quá hấp dẫn ở đây. Các gói CRAN vẫn còn giá trị nhưng lợi thế về hiệu suất tương đối của Python và hỗ trợ phân tích ngày càng tăng nhưng phần lớn vẫn chỉ giới hạn ở các lập trình viên làm thống kê. Có một số hy vọng với trình biên dịch mã byte cho R. Chúng tôi nhận được sự gia tăng hiệu suất lớn trong trường hợp này khi chúng tôi biên dịch các chức năng trước khi sử dụng chúng. Sử dụng cmpfun[] giảm thời gian chạy xuống 2. 408 giây so với 7 trước đó. 058 và 10. 470 giây tương ứng. Mặc dù vẫn chậm hơn nhiều so với Python hoặc C, nhưng điều này thể hiện sự gia tăng hiệu suất đáng kể cho R so với trạng thái của nó chỉ một năm trước. Có lẽ chúng ta sẽ không phải mãi mãi phụ thuộc vào các gói đáng kinh ngạc trên CRAN

Có liên quan

Chia sẻTweet

Để lại nhận xét cho tác giả, vui lòng theo liên kết và nhận xét trên blog của họ. jacobs. com

Hãy hiểu bản chất của R và Python. Chúng tôi sẽ kiểm tra mục đích, tính năng và trường hợp sử dụng của chúng. Đọc tiếp để tìm hiểu cách chọn công cụ phù hợp với nhu cầu của bạn

Python và R là gì?

Python và R đều là ngôn ngữ lập trình mã nguồn mở.  

Mặc dù Python có mục đích tổng quát hơn, nhưng R được tạo ra cho các tác vụ cụ thể trong phân tích dữ liệu thống kê [ví dụ: mục đích học thuật]. R và các gói của nó cung cấp cho bạn khả năng trực quan hóa dữ liệu khổng lồ – trí tưởng tượng của bạn là giới hạn duy nhất.  

Python cho đến nay là ngôn ngữ phổ biến hơn. Theo nghiên cứu của JetBrains về 10 triệu Notebook Jupyter có sẵn công khai trên Github vào năm 2020, 8. 9 triệu sổ tay được viết bằng Python và chỉ 77.000 sổ tay được viết bằng R.   

Nghiên cứu của JetBrains trên 10 triệu Máy tính xách tay Jupyter

Trăn và R. Sự khác biệt chính

Dưới đây là một số lĩnh vực mà R và Python có ít điểm chung

Phong cách lập trình

Python là một ngôn ngữ động, được thông dịch [không cần biên dịch], cho phép mã hóa dễ dàng và kiểm tra cú pháp nhanh chóng. Python là một trình bao bọc trên C ++, đó là lý do tại sao nó chậm hơn các ngôn ngữ lập trình khác như chính C ++, Golang và các ngôn ngữ khác. Do Khóa phiên dịch toàn cầu [GIL], có một hạn chế đối với lập trình song song mà không sử dụng bất kỳ thư viện cụ thể nào. Python thuận tiện hơn cho việc phân tích dữ liệu và tạo nguyên mẫu cho máy học và khoa học dữ liệu. Python cũng dễ đọc và thành thạo, trong khi R có cú pháp thống kê cụ thể

R là ngôn ngữ lập trình khoa học, phân tích dữ liệu và phân tích kinh doanh. Ngoài ra, R hỗ trợ nhiều cách hiển thị dữ liệu với nhiều khả năng tùy chỉnh. R cũng hỗ trợ rất nhiều công cụ mô hình thống kê như modelr, Hmisc, v.v.  

R không thể được sử dụng trong mã sản xuất vì nó tập trung vào nghiên cứu, trong khi Python, ngôn ngữ có mục đích chung, có thể được sử dụng cho cả tạo mẫu và như một sản phẩm. Python cũng chạy nhanh hơn R, mặc dù có vấn đề về GIL

Trực quan hóa dữ liệu

Trực quan hóa dữ liệu là một bước cần thiết trong báo cáo phân tích dữ liệu. R được chuẩn bị tốt để trực quan hóa dữ liệu dưới dạng biểu đồ và có hàng nghìn thư viện để trực quan hóa dữ liệu. Python không có nhiều thư viện để trình bày dữ liệu nhưng nó vẫn rất hiệu quả và tiện lợi cho chính các tác vụ phân tích dữ liệu. Các thư viện R phổ biến nhất để trực quan hóa dữ liệu là ggplot2, lattice và dygraphs. Các thư viện trực quan hóa phổ biến nhất cho Python là matplotlib, seaborn và plotly

Trực quan hóa dữ liệu với Plotly trong Datalore

thư viện

R hỗ trợ hơn 12.000 thư viện phân tích dữ liệu, đó là lý do R là lựa chọn hàng đầu cho các tác vụ phân tích dữ liệu. Nhiều thư viện trong số này cũng có thể giúp bạn chuẩn bị kết quả phân tích dữ liệu một cách dễ dàng và thẩm mỹ. Python cũng có một số lượng lớn thư viện phân tích dữ liệu, nhưng Python cũng hỗ trợ các thư viện sản xuất, cho phép người dùng xây dựng ứng dụng.  

Chọn cái gì

Chọn ngôn ngữ lập trình phù hợp nhất – Python hay R – thực sự phụ thuộc vào yêu cầu của bạn. Chúng ta hãy nhìn vào một số trong số họ.  

Khoa học dữ liệu

Cả Python và R đều cho phép bạn tiến hành phân tích dữ liệu và đưa ra dự đoán cho các nhiệm vụ khoa học dữ liệu. Tuy nhiên, nếu bạn dự định thực hiện nghiên cứu với các báo cáo, trình bày kết quả công việc của mình dưới dạng ứng dụng và sử dụng nó trong sản xuất, thì Python là lựa chọn tốt hơn. Sẽ thuận tiện hơn khi tạo và huấn luyện các mô hình của bạn trong các thư viện Python như pytorch và tensorflow. Đối với R, có rất nhiều thư viện dành cho ML, chẳng hạn như Mlr và Caret, vì vậy bạn cũng có thể dùng thử chúng cho các mô hình nguyên mẫu.  

Nghiên cứu

Nếu bạn cần tiến hành nghiên cứu, sự lựa chọn là có thể tranh cãi. Python cung cấp cho bạn các thư viện tiện dụng để phân tích dữ liệu khám phá, chẳng hạn như gấu trúc và có thể thực hiện trực quan hóa bằng biểu đồ. Tuy nhiên, nó chỉ hữu ích cho phân tích mục đích chung. Nếu bạn muốn tiến hành phân tích thống kê với các báo cáo đầy đủ, tốt hơn là nên thử R với các thư viện cụ thể của nó, chẳng hạn như dplyr hoặc esquisse

Nhóm Datalore lấy cảm hứng từ cách thức hoạt động của các gói phân tích dữ liệu R và cũng triển khai các số liệu thống kê vượt trội cho các bộ dữ liệu Python. Hãy xem cách bạn có thể nhận số liệu thống kê mô tả chỉ bằng một cú nhấp chuột

Tab thống kê trong Datalore

Phân tích dữ liệu trong Datalore

nguyên mẫu

Như chúng tôi đã đề cập trước đây, R phù hợp hơn để phân tích dữ liệu và toàn diện để kiểm tra các giả thuyết và lập mô hình. Tuy nhiên, nếu bạn muốn tạo một mô hình học máy và cố gắng quan sát cách nó hoạt động trong ứng dụng của mình, Python là lựa chọn phù hợp. Để tạo một ứng dụng đơn giản, có thể sử dụng các khung dựa trên web này. django, bình hoặc fastapi

Nếu bạn mới bắt đầu lập trình, Datalore có thể giúp bạn xây dựng ứng dụng từ sổ ghi chép Python và R bằng một vài cú nhấp chuột bằng Trình tạo báo cáo

Trình tạo báo cáo trong Datalore

Mở một ví dụ về ứng dụng dữ liệu

Phần kết luận

Trong bài viết này, chúng tôi đã giới thiệu hai ngôn ngữ lập trình phổ biến để phân tích dữ liệu. Trăn và R. Có vẻ như R tốt hơn cho lập trình khoa học và thống kê, trong khi Python phù hợp hơn để đưa phân tích dữ liệu của bạn vào sản xuất. Trong Datalore, bạn có thể sử dụng cả hai ngôn ngữ lập trình và thật dễ dàng để bắt đầu trực tuyến miễn phí với gói Cộng đồng

Cái nút. Dùng thử Datalore miễn phí ngay bây giờ

Đăng ký cập nhật Blog

Bằng cách gửi biểu mẫu này, tôi đồng ý rằng JetBrains s. r. o. ["JetBrains"] có thể sử dụng tên, địa chỉ email và dữ liệu vị trí của tôi để gửi cho tôi các bản tin, bao gồm cả thông tin liên lạc thương mại và để xử lý dữ liệu cá nhân của tôi cho mục đích này. Tôi đồng ý rằng JetBrains có thể xử lý dữ liệu nói trên bằng các dịch vụ của bên thứ ba cho mục đích này theo Chính sách quyền riêng tư của JetBrains. Tôi hiểu rằng tôi có thể rút lại sự đồng ý này bất cứ lúc nào trong hồ sơ của mình. Ngoài ra, một liên kết hủy đăng ký được bao gồm trong mỗi email

R có chậm hơn Python không?

R không thể được sử dụng trong mã sản xuất vì nó tập trung vào nghiên cứu, trong khi Python, một ngôn ngữ có mục đích chung, có thể được sử dụng cho cả việc tạo nguyên mẫu và như một sản phẩm. Python cũng chạy nhanh hơn R , mặc dù có vấn đề về GIL.

Có phải Python luôn nhanh hơn R không?

Tốc độ và hiệu suất . R cũng là một ngôn ngữ cấp thấp. Python là Ngôn ngữ cấp cao có thể chạy với tốc độ nhanh hơn nhiều với mã ngắn hơn, ít phức tạp hơn. Vì vậy, khi nói đến tốc độ, trăn rõ ràng là người chiến thắng. Python is much faster than R when it comes to processing speeds. R is also a Low-level language. Python being a High-Level Language can run at much faster speeds with shorter, less complex code. So, when it comes to speed, python is the clear winner.

Cái nào đòi hỏi nhiều hơn R hoặc Python?

Python là ngôn ngữ có mục đích chung được sử dụng cho phạm vi tác vụ rộng hơn nhiều so với R .

R có phải là ngôn ngữ chậm không?

Mặc dù R chậm so với các ngôn ngữ lập trình khác , đối với hầu hết các mục đích, nó đủ nhanh.

Chủ Đề