Tôi là một sinh viên tốt nghiệp kỹ thuật hiện đang thực hiện việc chuyển đổi từ MATLAB sang Python với mục đích mô phỏng bằng số. Tôi đã bị ấn tượng vì thao tác mảng cơ bản, Numpy sẽ nhanh như MATLAB. Tuy nhiên, nó xuất hiện cho hai chương trình khác nhau tôi viết rằng MATLAB là một chút dưới hai lần nhanh như Numpy. Các mã kiểm tra Tôi đang sử dụng cho numpy (Python 3.3) là:MATLAB hai lần nhanh như Numpy
import numpy as np
import time
a = np.random.rand(5000,5000,3)
tic = time.time()
a[:,:,0] = a[:,:,1]
a[:,:,2] = a[:,:,0]
a[:,:,1] = a[:,:,2]
toc = time.time() - tic
print(toc)
Trong khi cho MATLAB 2012a Tôi đang sử dụng:
a = rand(5000,5000,3);
tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc
Thuật toán tôi đang sử dụng là một trong những sử dụng trên một NASA website so sánh Numpy và MATLAB. Trang web cho thấy Numpy vượt qua MATLAB về mặt tốc độ cho thuật toán này. Tuy nhiên, kết quả của tôi cho thấy thời gian mô phỏng 0,49 s cho Numpy và thời gian mô phỏng 0,29 giây cho MATLAB. Tôi cũng đã chạy một bộ giải Gauss-Seidel trên cả Numpy và Matlab và tôi nhận được kết quả tương tự (16,5 s so với 9,5 s)
Tôi mới sử dụng Python và không vô cùng biết chữ về lập trình. Tôi đang sử dụng phân phối Python WinPython 64 bit nhưng cũng đã thử Pythonxy không có kết quả.
Một điều tôi đã đọc nên cải thiện hiệu suất là xây dựng Numpy bằng cách sử dụng MKL. Thật không may tôi không có ý tưởng làm thế nào để làm điều này trên Windows. Tôi thậm chí cần phải làm điều này?
Mọi đề xuất?
Christoph Gohlke cung cấp các tệp nhị phân Windows được biên dịch sẵn cho nhiều gói Python, với NumPy được liên kết với Intel MKL: http://www.lfd.uci.edu/~gohlke/pythonlibs/ – Amro
Đúng. Python sử dụng thậm chí còn chậm hơn so với Matlab nên bạn may mắn. :-) – horchler
Phân phối hiện tại của WinPython [đã đi kèm với NumPy-MKL] (https://code.google.com/p/winpython/wiki/PackageIndex_33). – Jaime