MATLAB có nhanh hơn C++ không?
Tôi đã sử dụng Matlab và C++ được khoảng 10 năm. Đối với mọi thuật toán số được triển khai cho nghiên cứu của tôi, tôi luôn bắt đầu từ việc tạo mẫu bằng Matlab và sau đó dịch dự án sang C ++ để đạt được cải thiện hiệu suất gấp 10 lần đến 100 lần (tôi không đùa đâu). Tất nhiên, tôi đang so sánh mã C++ được tối ưu hóa với mã Matlab được vector hóa hoàn toàn. Trung bình, sự cải thiện là khoảng 50 lần Show Có rất nhiều điều tinh tế đằng sau cả hai ngôn ngữ lập trình và sau đây là một số hiểu lầm
Lý do tại sao bạn có thể đạt được hiệu suất 10x~100x trong C++ so với mã Matlab vector hóa
Tuy nhiên, thời gian phát triển trong C++ cũng là một hệ số gấp 10 lần so với Matlab Những lý do tại sao bạn nên sử dụng Matlab thay vì C++
Cuối cùng nhưng không kém phần Bởi vì một khi mã Matlab được vector hóa, lập trình viên sẽ không còn nhiều thời gian để tối ưu hóa, hiệu suất mã Matlab ít nhạy cảm hơn nhiều đối với chất lượng của mã so với mã C++. Do đó, tốt nhất là tối ưu hóa các thuật toán tính toán trong Matlab và các thuật toán tốt hơn một chút thường có hiệu suất tốt hơn một chút trong Matlab. Mặt khác, kiểm tra thuật toán trong C++ yêu cầu lập trình viên giỏi viết các thuật toán được tối ưu hóa ít nhiều theo cùng một cách và để đảm bảo trình biên dịch không tối ưu hóa các thuật toán theo cách khác. Kinh nghiệm gần đây của tôi về C++ và Matlab Tôi đã tạo một số công cụ phân tích dữ liệu Matlab lớn trong năm qua và gặp phải vấn đề về tốc độ chậm của Matlab. Nhưng tôi đã có thể cải thiện tốc độ chương trình Matlab của mình lên gấp 10 lần nhờ các kỹ thuật sau
Mã được cải thiện là ~98% trong Matlab và ~2% trong C++ Tôi tin rằng có thể cải thiện tốc độ thêm 2 lần nữa (tổng cộng 20 lần) nếu toàn bộ công cụ được mã hóa bằng C++, đây là tốc độ cải thiện ~100 lần của các quy trình tính toán. I/O của ổ cứng sau đó sẽ chi phối thời gian chạy chương trình Câu hỏi dành cho kỹ sư Mathworks Khi mã Matlab được véc tơ hóa hoàn toàn, một trong những yếu tố hạn chế hiệu suất là hoạt động lập chỉ mục ma trận. Chẳng hạn, một phép toán sai phân hữu hạn cần được thực hiện trên Ma trận A có kích thước 5000x5000
Hoạt động lập chỉ mục ma trận làm cho mã Matlab chậm hơn nhiều lần so với mã C++. Hiệu suất lập chỉ mục ma trận có thể được cải thiện không? MATLAB hay C cái nào tốt hơn?Theo kinh nghiệm của chúng tôi về máy tính kỹ thuật, chúng tôi thấy rằng MATLAB phù hợp hơn nhiều so với C cho nhiệm vụ này nhưng sự lựa chọn tốt nhất về tính rõ ràng và chức năng của ngôn ngữ được cung cấp bởi Python
Ngôn ngữ nào nhanh hơn C?Đi . Go, còn được gọi là Golang, là một ngôn ngữ lập trình được phát triển bởi Google. Nó biên dịch thành Hợp ngữ giống như hầu hết các ngôn ngữ khác ở đây, nhưng nó có nhiều tính năng hiện đại hơn, cú pháp đơn giản hơn và dễ viết hơn so với ngôn ngữ lập trình nhanh dẫn đầu lâu đời là C/C++.
MATLAB chậm như thế nào so với C++?Vì vậy, bạn có thể trình bày lại quan sát của họ là "MATLAB sử dụng vòng lặp for chậm hơn 9 đến 11 lần so với C++". Vì vậy, vâng, nếu bạn chọn một thuật toán không tốt trong việc vector hóa trong những gì MATLAB cung cấp, thì không có gì ngạc nhiên khi nó chậm hơn từ 9 đến 11 lần.
MATLAB có tốt hơn C++ không?C++ có tốc độ xử lý trung bình nhanh hơn 500 lần so với mã Matlab . Điều này không chỉ áp dụng cho mã này mà còn có thể áp dụng cho bất kỳ so sánh mã nào khác giữa các tệp MEX của Matlab và C++. |