Trước hết, như được viết bởi @bmu, , bạn nên sử dụng kết hợp các phép tính được vector hóa, ufunc và lập chỉ mục. Thực tế có một số trường hợp yêu cầu lặp rõ ràng, nhưng những trường hợp này thực sự hiếm.
Nếu cần vòng lặp rõ ràng, với trăn 2.6 và 2.7, bạn nên sử dụng xrange (xem bên dưới). Từ những gì bạn nói, trong Python 3, phạm vi giống với xrange (trả về trình tạo). Vì vậy, có thể phạm vi là tốt cho bạn.
Bây giờ, bạn nên thử nó cho mình (sử dụng timeit: - ở đây ipython "ma thuật chức năng"):
%timeit for i in range(1000000): pass
[out] 10 loops, best of 3: 63.6 ms per loop
%timeit for i in np.arange(1000000): pass
[out] 10 loops, best of 3: 158 ms per loop
%timeit for i in xrange(1000000): pass
[out] 10 loops, best of 3: 23.4 ms per loop
Một lần nữa, như đã đề cập ở trên, hầu hết thời gian nó có thể sử dụng vector NumPy/mảng công thức (hoặc ufunc vv ...) chạy tốc độ ac: nhanh hơn nhiều. Đây là những gì chúng ta có thể gọi là "lập trình vector". Nó làm cho chương trình dễ thực hiện hơn C (và dễ đọc hơn) nhưng hầu như nhanh ở cuối.
Nguồn
2012-05-22 09:52:05
Cảm ơn, tôi không biết về chức năng ma thuật. – clstaudt
Có một mô-đun python 'timeit' chuẩn cho phép thực hiện tương tự mà không có IPython. Nhưng nó dễ dàng hơn nhiều khi sử dụng chức năng ma thuật này. –
-1 vì tôi nghĩ đây không phải là điểm chuẩn tốt. looping trên một mảng numpy là không hiệu quả. – bmu