Tôi dự kiến sẽ array.array
nhanh hơn danh sách, vì các mảng dường như không được mở hộp.
Tuy nhiên, tôi nhận được kết quả sau:
In [1]: import array
In [2]: L = list(range(100000000))
In [3]: A = array.array('l', range(100000000))
In [4]: %timeit sum(L)
1 loop, best of 3: 667 ms per loop
In [5]: %timeit sum(A)
1 loop, best of 3: 1.41 s per loop
In [6]: %timeit sum(L)
1 loop, best of 3: 627 ms per loop
In [7]: %timeit sum(A)
1 loop, best of 3: 1.39 s per loop
Điều gì có thể là nguyên nhân của sự khác biệt như vậy?
array
gói. Nếu bạn muốn thực hiện một số lượng đáng kể toán học, Numpy hoạt động ở tốc độ ánh sáng (tức là C), và thường tốt hơn so với việc triển khai ngây thơ những thứ như sum()
).
array
là khá nhanh trong việc chuyển đổi một chuỗi số nguyên (đại diện cho byte ASCII) thành một str
đối tượng. Bản thân Guido chỉ nghĩ ra điều này sau rất nhiều giải pháp khác và khá bất ngờ với màn trình diễn. Dù sao đây là nơi duy nhất mà tôi nhớ rằng nó hữu ích. numpy
tốt hơn nhiều để xử lý các mảng nhưng đó là sự phụ thuộc của bên thứ 3.