Tôi đang học python gần đây và đang thực hiện nhiều thao tác với ngôn ngữ.Trong python, tại sao đọc từ một mảng chậm hơn so với đọc từ danh sách?
Một điều tôi thấy thú vị là, khi tôi đọc từ một mảng, nó gần như một nửa thời gian chậm hơn so với danh sách. Có ai biết tại sao không?
đây là mã của tôi:
from timeit import Timer import array t = 10000 l = range(t) a = array.array('i', l) def LIST(): for i in xrange(t): l[i] def ARRAY(): for i in xrange(t): a[i] print Timer(LIST).timeit(1000); print Timer(ARRAY).timeit(1000);
đầu ra là:
0.813191890717 1.16269612312
mà chỉ ra rằng đọc mảng là chậm hơn so với danh sách. Tôi nghĩ mảng là bộ nhớ có kích thước cố định, trong khi danh sách là cấu trúc động. Vì vậy, tôi giả định rằng mảng sẽ nhanh hơn danh sách.
Có ai có bất kỳ lời giải thích nào không?
có thể dupe/answer: http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use - Về cơ bản array.array là một trình bao bọc xung quanh một mảng C vì vậy tôi nghĩ rằng có trên không khi truy cập nó. Không sử dụng nó cho toán học. –
Cố gắng đoán hiệu quả Python thứ hai - đặc biệt đối với những người đến từ nền giống như C - thường phản trực giác. Trước tiên hãy viết mã, sau đó tối ưu hóa nếu bạn đo lường vấn đề hiệu suất; điều này cũng áp dụng cho C, nhưng vì các yếu tố ngôn ngữ rất gần với máy mà mọi người thường quên. – msw
Đối với toán học bạn có thể muốn sử dụng gọn gàng (không có sẵn cho python 3 chưa), chỉ có thần biết tại sao numpy không phải là thư viện chuẩn. –