Tôi sẽ cố gắng trả lời câu hỏi này cũng như tôi có thể.
... nhưng câu hỏi KHÔNG yêu cầu của bạn có lẽ phù hợp hơn: Thuật toán R có thể được thực hiện nhanh hơn trong R không? Câu trả lời ở đây thường là "có". Nó có thể là "đủ nhanh" không? Vâng, đó là không thể trả lời mà không cần cố gắng (và nhìn thấy mã R hiện tại).
Q: Thuật toán R của tôi có nhanh hơn trong C không?
A: Vâng! Nếu bạn viết mã C "tốt nhất" cho thuật toán, nó sẽ rất có thể nhanh hơn. Nó rất có thể cũng sẽ là nhiều hơn nhiều việc hơn để làm như vậy.
Hỏi: Có thể sắp xếp các vectơ lớn được thực hiện nhanh hơn trong C?
A: Có. Sử dụng đa luồng, bạn có thể cải thiện tốc độ khá nhiều. ... Nhưng hãy bắt đầu bằng cách gọi số sort(x, method='quick')
trong R và xem điều đó có cải thiện mọi thứ không! Phương pháp mặc định không phải là rất nhanh cho dữ liệu ngẫu nhiên.
x <- runif(1e7)
system.time(sort(x)) # 2.50 secs
system.time(sort(x, method='quick')) # 1.37 secs
#system.time(tommysort(x)) # 0.51 secs (4 threads)
Q: Thư viện nào bắt chước chức năng cơ bản của R?
A: LAPACK/BLAS xử lý phép toán ma trận trong R. Nếu bạn cần, bạn có thể tìm thấy các thư viện nhanh hơn nhiều so với vani trong R (bạn có thể sử dụng một số trong R để cải thiện hiệu suất!) .
More info on BLAS
Một cách khác là để thực hiện một .Call từ R đến C và từ đó bạn có quyền truy cập vào tất cả các chức năng R! Gói inline
và gói Rcpp
có thể giúp bạn dễ dàng hơn.
Cách thứ ba là nhúng R trong ứng dụng của bạn. Rinside
có thể giúp dễ dàng hơn.
Hỏi: Làm cách nào để đọc dữ liệu CSV vào C?
A: Hãy xem các chức năng fopen
và fscanf
. ... và sử dụng chúng để viết chức năng nhập dữ liệu.
Bạn muốn đạt được tốc độ nào? Tại sao bạn nghĩ rằng R sẽ chậm hơn đáng kể so với C đối với các hoạt động này? Bạn đã học http://stackoverflow.com/questions/1330944/speed-of-r-programming-language chưa? –
nói riêng, 'rowSums' và' colSums' đã khá nhanh - có thể bạn sẽ không thể ép một lượng lớn hiệu năng ở đó (và bạn nên xem xét hỗ trợ ma trận thưa thớt khá phong phú trong 'Ma trận' gói, nếu ma trận của bạn là thưa thớt ...). Bạn có thể cụ thể hơn một chút về "khả năng để nó chạy máy của người dùng khác" không? –
Điều đó sẽ có rất nhiều công việc, đặc biệt. kể từ khi bạn bắt đầu từ đầu với lập trình C. Bạn có thể [cài đặt R] (http://cran.r-project.org/bin/windows/rw-FAQ.html) trên các máy người dùng trong thời gian ít hơn so với việc chuyển đổi mã R bằng tay. – hardmath