0
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Gần đây tôi đã viết một triển khai BFS nhanh chóng và bẩn thỉu, để tìm kim cương trong một biểu đồ có hướng. Vòng lặp BFS trông như thế này:
while toVisit:
y = toVisit.pop[]
if y in visited: return "Found diamond"
visited.add[y]
toVisit.extend[G[y]]
[G
là biểu đồ - Từ điển từ tên nút đến danh sách hàng xóm của họ]
Sau đó, phần thú vị: Tôi nghĩ rằng list.pop[]
có lẽ quá chậm, vì vậy tôi đã chạy một trình hồ sơ để so sánh tốc độ của việc triển khai này với deque.pop - và có một chút cải thiện. Sau đó, tôi đã so sánh nó với y = toVisit[0]; toVisit = toVisit[1:]
, và thật ngạc nhiên, lần thực hiện cuối cùng thực sự là nhanh nhất.
Liệu điều này có ý nghĩa gì? Có bất kỳ lý do hiệu suất nào để sử dụng list.pop[]
thay vì hai lớp lót nhanh hơn nhiều?
Khi được hỏi ngày 7 tháng 5 năm 2012 lúc 6:48May 7, 2012 at 6:48
11
Bạn đã đo sai. Với CPython 2.7 trên x64, tôi nhận được kết quả sau:
$ python -m timeit 'l = list[range[10000]]' 'while l: l = l[1:]'
10 loops, best of 3: 365 msec per loop
$ python -m timeit 'l = list[range[10000]]' 'while l: l.pop[]'
1000 loops, best of 3: 1.82 msec per loop
$ python -m timeit 'import collections' \
'l = collections.deque[list[range[10000]]]' 'while l: l.pop[]'
1000 loops, best of 3: 1.67 msec per loop
Đã trả lời ngày 7 tháng 5 năm 2012 lúc 6:54May 7, 2012 at 6:54
Phihagphihagphihag
268K68 Huy hiệu vàng441 Huy hiệu bạc463 Huy hiệu Đồng68 gold badges441 silver badges463 bronze badges
7
Sử dụng máy phát điện cho sự hoàn hảo
python -m timeit 'import itertools' 'l=iter[xrange[10000]]' 'while next[l, None]: l,a = itertools.tee[l]'
$ python -m timeit 'l = list[range[10000]]' 'while l: l = l[1:]'
10 loops, best of 3: 365 msec per loop
$ python -m timeit 'l = list[range[10000]]' 'while l: l.pop[]'
1000 loops, best of 3: 1.82 msec per loop
$ python -m timeit 'import collections' \
'l = collections.deque[list[range[10000]]]' 'while l: l.pop[]'
1000 loops, best of 3: 1.67 msec per loop
0Đã trả lời ngày 19 tháng 1 năm 2014 lúc 11:49Jan 19, 2014 at 11:49
2
Tôi biết có một danh sách.clear [], tôi chỉ chia sẻ rằng tôi không mong đợi rằng sử dụng danh sách.pop [] và list.remove [] cụ thể có thể làm chậm chương trình nhiều như vậy.
li = list[range[500000]]
Tạo một danh sách là nhanh chóng.
Vì vậy, chúng tôi sẽ kiểm tra POP/Xóa các giá trị cụ thể. Với mục đích của "điểm chuẩn" này, chúng tôi sẽ xóa tất cả các yếu tố khỏi danh sách:
while [li]:
li.pop[0]
Phải mất 74,735 & nbsp; giây để bật tất cả các yếu tố! Nó dài một cách vô lý. Tôi biết rằng nó sẽ nhanh hơn nhiều nếu tôi thậm chí đã sử dụng li.pop [] mà không có chỉ số hoặc có thể được sử dụng chức năng bộ lọc, liệt kê sự hiểu biết với điều kiện hoặc bất cứ điều gì nhưng đó là những gì tôi đang cố gắng hiển thị, nó chậm như thế nào Để xóa một số mục danh sách nhất định bằng cách sử dụng các phương thức POP và xóa.74.735 seconds to pop all the
elements! It's ridiculously long.
I KNOW it would have been much faster if I even had used li.pop[] without the index or maybe used filter function, list comprehension with conditional or whatever
But that's what I'm trying to show, how slow it is to remove certain list items specifically using pop and remove methods.
Và li.remove [], luôn yêu cầu một giá trị được chỉ định để loại bỏ, thậm chí còn tệ hơn pop!
for num in li:
li.remove[num]
Cái này đã mất 303.268 & nbsp; giây để hoàn thành. Thật điên rồ.303.268 seconds to complete. How crazy it is.
Tôi đã vui vẻ với các cấu trúc dữ liệu trừu tượng. Các danh sách được liên kết đã triển khai và một hàng đợi chạy trên các danh sách được liên kết.
Và vì lợi ích, tôi quyết định so sánh hiệu suất của hàng đợi dựa trên danh sách được liên kết và danh sách Python thông thường. Và tôi đã rất ngạc nhiên. Khi hàng đợi danh sách được liên kết của tôi định hóa 500.000 yếu tố trong 0,5 giây, trong khi hàng đợi danh sách Python đã thực hiện nó trong 75 giây.
Discussion:
[Gia sư] Tại sao danh sách.pop [0] chậm?
Tôi đã chơi xung quanh với các danh sách rất lớn và được phát hiện bởi Chancethat Pop [0] chậm hơn 8 lần so với pop []. Có thực sự là xấu không? Hiệu suất được cải thiện khi danh sách tôi có được đảo ngược và sử dụng pop []. Xem đoạn mã nhỏ này chẳng hạn: ví dụ:
that pop[0] is 8 times slower than pop[]. Is it really that bad?
Performance improved when the list i have is reversed and used pop[].
See this little snippet of code for example:
--- "" "Điều này cho thấy rằng Poping từ phía sau danh sách nhanh hơn sau đó là TheBeginningof Danh sách" "" Hồ sơ nhập khẩu
"""
This shows that poping from the back of the list is faster then
the
beginning
of the list
"""
import profile
def tạo [num = 2000]: return [[] cho p trong xrange [num]]
return [[] for p in xrange[num]]
def popper [l]: trong khi l: l.pop []
while l:
l.pop[]
def pooper [l]: trong khi l: l.pop [0]
while l:
l.pop[0]
Nếu __name__ == '__main __': in "###### Thời gian được thực hiện để tạo danh sách" Cấu hình.run ['Tạo [50000]'] l = tạo [50000] Pop ở cuối danh sách "hồ sơ.run ['popper [l]'] l = created [l] ']
print "###### Time taken to generate list"
profile.run['generate[50000]']
l = generate[50000]
print "###### Time taken to pop at the end of the list"
profile.run['popper[l]']
l = generate[50000]
print "###### Time taken to pop at
the beginning of the list"
profile.run['pooper[l]']
"" "Bản in này:
This prints:
#Phiếu
3 function calls in 0.260 CPU seconds
Đặt hàng bởi: Tên tiêu chuẩn
NCALLS TOTTIME PERCALL CUMTIME PERCALL FILENAME: Lineno [Hàm] 1 0,040 0.040 0.230 0.230: 1 [?] 1 0.190 0.190 0.190 0.190 0,000 Hồ sơ: 0 [Profiler]
1 0.040 0.040 0.230 0.230 :1[?]
1 0.190 0.190 0.190 0.190 pooperpoper.py:7[generate]
1 0.030 0.030 0.260 0.260 profile:0[generate[50000]]
0 0.000 0.000 profile:0[profiler]
#Phiếu
3 function calls in 0.260 CPU seconds
Đặt hàng bởi: Tên tiêu chuẩn
NCALLS TOTTIME PERCALL CUMTIME PERCALL FILENAME: Lineno [Hàm] 1 0,040 0.040 0.230 0.230: 1 [?] 1 0.190 0.190 0.190 0.190 0,000 Hồ sơ: 0 [Profiler]
1 0.000 0.000 0.260 0.260 :1[?]
1 0.260 0.260 0.260 0.260 pooperpoper.py:10[popper]
1 0.000 0.000 0.260 0.260 profile:0[popper[l]]
0 0.000 0.000 profile:0[profiler]
#Phiếu
3 function calls in 8.870 CPU seconds
Đặt hàng bởi: Tên tiêu chuẩn
NCALLS TOTTIME PERCALL CUMTIME PERCALL FILENAME: Lineno [Hàm] 1 0,040 0.040 0.230 0.230: 1 [?] 1 0.190 0.190 0.190 0.190 0,000 Hồ sơ: 0 [Profiler]
1 0.000 0.000 8.870 8.870 :1[?]
1 8.870 8.870 8.870 8.870 pooperpoper.py:14[pooper]
1 0.000 0.000 8.870 8.870 profile:0[pooper[l]]
0 0.000 0.000 profile:0[profiler]
"""
#Phiếu
Regards: Wari Wahab
RoughingIT - //roughingit.subtlehints.net
PyBlosxom - //roughingit.subtlehints.net/pyblosxom
Ncalls Tottime percall cumtime percall Tên: Lineno [chức năng] 1 0,000 0.000 0.260 0.260: 1 [?] 1 0.260 0.260 0.260 0.260 0,000 Hồ sơ: 0 [Profiler]
I've been playing around with very large lists and found out by chance
that pop[0] is 8 times slower than pop[]. Is it really that bad?
Performance improved when the list i have is reversed and used pop[].
#Phiếu
pop[] removes rightmost list element by shortening the length of the list by 1.
pop[0] removes leftmost element by shifting the
rest of the elements one
place left and then shortening the length of the list by 1.
It is the shifting that is taking a lot of time.
Ncalls Tottime percall cumtime percall Tên: Lineno [chức năng] 1 0,000 0.000 8,870 8.870: 1 [?] 1 8.870 8.870 8.870 8.870 0,000 Hồ sơ: 0 [Profiler] "" "
***@alum.rpi.edu
303 442 2625
Ncalls Tottime percall cumtime percall Tên: Lineno [chức năng] 1 0,000 0.000 0.260 0.260: 1 [?] 1 0.260 0.260 0.260 0.260 0,000 Hồ sơ: 0 [Profiler]
I've been playing around with very large lists and found out by chance
that pop[0] is 8 times slower than pop[]. Is it really that
bad?
Performance improved when the list i have is reversed and used pop[].
#Phiếu
got no measurable difference between pop[] and pop[0].
Alan G.
Đăng bởi Wari Wahabi đã được chơi xung quanh với các danh sách rất lớn và được phát hiện bởi Chancethat Pop [0] chậm hơn 8 lần so với pop []. Là nó thực sự là xấu?
I've been playing around with very large lists and found out by chance
that pop[0] is 8 times slower than pop[].
Is it really that bad?
Chào Wari,
Có: Lý do là vì pop [0] liên quan đến việc chuyển tất cả các phần còn lại trong danh sách của chúng tôi.
elements in our list.
Khi một danh sách nhỏ, nó không phải là vấn đề lớn. Nhưng khi một danh sách lớn, thực hiện một pop [] ở phía trước của một danh sách có thể tốn kém. Nó chậm hơn không cần thiết hơn tám lần: trên thực tế, chi phí quy mô tuyến tính với việc đánh giá cao danh sách.
doing a pop[] at the front of a list can be expensive. It's not
necessarily eight times slower: in fact, the cost scales linearly with the
size of the list.
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
same reason: it ends up doing
a lot of data movement as the elements are
shoved off to the side to make room.
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
of our containers, and when we need to do it efficiently, we really do
need to be aware of how array-like lists behave. We may even need to
think about data structures that will help us do what we want.
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
//www.ibiblio.org/obp/thinkCSpy/chap19.htm
là rất khuyến khích đọc; Nó nói về những vấn đề này.
Chúc bạn may mắn!
Đăng bởi Wari Wahabi đã được chơi xung quanh với các danh sách rất lớn và được phát hiện bởi Chancethat Pop [0] chậm hơn 8 lần so với pop []. Là nó thực sự là xấu?
I've been playing around with very large lists and found out by chance
that pop[0] is 8 times slower than pop[]. Is it really that bad?
Chào Wari,
Có: Lý do là vì pop [0] liên quan đến việc chuyển tất cả các phần còn lại trong danh sách của chúng tôi.
cute
trick we can employ to remove elements from the front of a list: we
can swap the first and last elements, and then do a pop[] off then end of
our list, because popping at the end is quite efficient.
Khi một danh sách nhỏ, nó không phải là vấn đề lớn. Nhưng khi một danh sách lớn, thực hiện một pop [] ở phía trước của một danh sách có thể tốn kém. Nó chậm hơn không cần thiết hơn tám lần: trên thực tế, chi phí quy mô tuyến tính với việc đánh giá cao danh sách.
... L[-1], L[0] = L[0], L[-1]
... return L.pop[]
...
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
mylist
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
removeFront[mylist]
0
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
removeFront[mylist]
9
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
###
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
anywhere in our list. Notice, though, that the list will inevitably get
out of order when we do the swap-with-last-element trick: the
applicability of this technique really depends on the program we're
writing. It might not be the right thing to do if we want to maintain the
relative order of things in our list.
là rất khuyến khích đọc; Nó nói về những vấn đề này.
your lists [lots of deletes, lots of inserts, etc.], we can probably
chat
about efficiency issues on Python-Tutor.
Chúc bạn may mắn!
item = list[0]
del list[0]
return item
Nhân tiện, nếu thứ tự các yếu tố của bạn không quan trọng, thì có thủ thuật cấp tính mà chúng ta có thể sử dụng để loại bỏ các phần tử khỏi mặt trước của danh sách: Wecan hoán đổi các yếu tố đầu tiên và cuối cùng, sau đó thực hiện một pop [] Danh sách, bởi vì xuất hiện ở cuối là khá hiệu quả.
you do "del list[0]" you reshuffle the entire list.
### ... l [-1], l [0] = l [0], l [-1] ... return l.pop [] ...
the list, the bigger the list, the bigger
the time diff.
Đăng bởi Wari Wahab
than a list. We can't really saw what without seeing what you
are trying to do...
mylist = phạm vi [10] Mylist
Magnus Lycka [It's really Lyckå], ***@thinkware.se
Thinkware AB, Sweden, www.thinkware.se
I code Python ~ The Agile Programming Language
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del list[0]
return item
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
removeFront[list]
4
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
là rất khuyến khích đọc; Nó nói về những vấn đề này.
see what the thoughts are.
/Gus
Chúc bạn may mắn!
From: tutor-***@python.org [mailto:tutor-***@python.org]On Behalf Of
Danny Yoo
Sent: Wednesday, June 18, 2003 6:36 PM
To:
Wari Wahab
Cc: ***@python.org
Subject: Re: [Tutor] why is list.pop[0] slow? [swap-with-last-element
trick]
Đăng bởi Wari Wahabi đã được chơi xung quanh với các danh sách rất lớn và được phát hiện bởi Chancethat Pop [0] chậm hơn 8 lần so với pop []. Là nó thực sự là xấu?
I've been playing around with very large lists and found out by chance
that pop[0] is 8 times slower than pop[]. Is it really that bad?
Chào Wari,
Có: Lý do là vì pop [0] liên quan đến việc chuyển tất cả các phần còn lại trong danh sách của chúng tôi.
cute trick we can employ to remove elements from the front of a list: we
can swap the first and last elements, and then do a pop[] off then end of
our list, because popping at the end is quite efficient.
Khi một danh sách nhỏ, nó không phải là vấn đề lớn. Nhưng khi một danh sách lớn, thực hiện một pop [] ở phía trước của một danh sách có thể tốn kém. Nó chậm hơn không cần thiết hơn tám lần: trên thực tế, chi phí quy mô tuyến tính với việc đánh giá cao danh sách.
... L[-1], L[0] = L[0], L[-1]
... return L.pop[]
...
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
mylist
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
removeFront[mylist]
0
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
Nhân tiện, chèn [] vào phía trước của một danh sách có thể tốn kém cho lý do theo ý nghĩa: nó kết thúc việc thực hiện rất nhiều chuyển động dữ liệu khi các yếu tố xuất hiện sang một bên để nhường chỗ.
removeFront[mylist]
9
Khi chúng tôi kết thúc việc thực hiện rất nhiều chèn ở phía trước cũng như các thùng chứa của chúng tôi và khi chúng tôi cần làm điều đó một cách hiệu quả, chúng tôi thực sự đã thực hiện để biết cách thức hoạt động của các danh sách giống như mảng. Chúng tôi thậm chí có thể cần nói về các cấu trúc dữ liệu sẽ giúp chúng tôi làm những gì chúng tôi muốn.
###
Chương 19 của "Làm thế nào để suy nghĩ như một nhà khoa học máy tính":
anywhere in our list. Notice, though, that the list will inevitably get
out of order when we do the swap-with-last-element trick: the
applicability of this technique really depends on the program we're
writing. It might not be the right thing to do if we want to maintain the
relative order of things in our list.
là rất khuyến khích đọc; Nó nói về những vấn đề này.
your lists [lots of deletes, lots of inserts, etc.], we can probably
chat
about efficiency issues on Python-Tutor.
_____________________________________________Tutor Maillist - ***@python.org //mail.python.org/mailman/listinfo/tutor
Tutor maillist - ***@python.org
//mail.python.org/mailman/listinfo/tutor
Đăng bởi Wari Wahabis nó thực sự tệ như vậy?
Is it really that bad?
Tồi tệ hơn nếu bạn tăng kích thước của danh sách ... nhưng không phải vẫn còn khá nhanh?
is still fairly fast?
Đăng bởi Wari Wahabperformance được cải thiện khi danh sách tôi có được đảo ngược và sử dụng pop [].
Performance improved when the list i have is reversed and used pop[].
Có, sau đó bạn chỉ cần tái cấu trúc danh sách một lần.
Danh sách Python không phải là một danh sách được liên kết, nó giống như avector hoặc mảng trong các ngôn ngữ khác. [Trong C ++ STL, tôi nghĩ rằng sự phù hợp gần nhất là một vectơ.]
vector or array in other languages. [In C++ STL, I think
the closest fit is a vector.]
Nếu bạn có một ứng dụng trong đó vấn đề này bạn có thể muốn xem xét các triển khai khác. Rõ ràng, chiến lược .reverse [] sẽ không giúp ích gì nếu bạn xen kẽ giữa việc đẩy và xuất hiện như là phổ biến với hàng đợi.
to consider
other implementations. Obviously, the .reverse[]
strategy won't be of any help if you alternate between pushing
and popping as is common with queues.
Cookbook Python AS ASPN chứa một số ví dụ về những chiếc nhẫn đó là hữu ích.
might be useful.
.
Magnus Lycka [It's really Lyckå], ***@thinkware.se
Thinkware AB, Sweden, www.thinkware.se
I code Python ~ The Agile Programming Language
Đăng bởi Wari Wahabi đã được chơi xung quanh với các danh sách rất lớn và phát hiện ra Bychancethat Pop [0] chậm hơn 8 lần so với pop []. Có thực sự xấu không? Hiệu suất được cải thiện khi danh sách tôi có được đảo ngược và usedPop []. Danh sách của bạn lớn như thế nào? Tôi chỉ đã thử một danh sách thành viên 1 triệu và không có sự khác biệt có thể đo lường được giữa pop [] và pop [0].
I've been playing around with very large lists and found out by
chance
that pop[0] is 8 times slower than pop[]. Is it really that bad?
Performance improved when the list i have is reversed and used
pop[].
How big are your lists? I just tried a 1 million member list and
got no measurable difference between pop[] and pop[0].
Chào mọi người!
Tôi đã thử điều này và [luôn luôn] tìm thấy những điều sau đây
... Đối với i trong phạm vi [3]: ... a = clock [] ... l.pop [] ... b = clock [] ... l.pop [0] ... c = đồng hồ .
... a=clock[]
... l.pop[]
... b=clock[]
... l.pop[0]
... c=clock[]
... print b-a
... print c-b
...
999999
0
0.101023984606
0.059478771889
999998
1
0.0128689504199
0.0605054383992
999997
2
0.0128781694661
0.0593547338127
có nghĩa là: khi được thực hiện lần đầu tiên, pop [] mất khoảng gấp đôi thời gian so với pop [0], trong khi tất cả các lần thực hiện sau đây của cơ thể của looppop [] nhanh hơn khoảng năm lần so với pop [0]. Chỉ có hiệu suất của pop [] thay đổi.
approximately twice as much time as pop[0] , whereas
in all the
following executions of the body of the loop
pop[] is approximately five times faster than pop[0].
Notice that only the performance of pop[] changes.
... Đối với i trong phạm vi [3]: ... a = clock [] ... l.pop [0] ... b = clock [] ... l.pop [] ... c = đồng hồ .
... a=clock[]
... l.pop[0]
... b=clock[]
... l.pop[]
... c=clock[]
... print b-a
... print c-b
...
0
999999
0.14588973015
0.0120258267389
1
999998
0.065228104346
0.0120895219675
2
999997
0.0598760289713
0.0118950839017
Hmmm. Vì vậy, cuộc gọi đầu tiên của phương thức pop phát hành chậm hơn bất kỳ cái nào sau. Andpop [] trên thực tế nhanh hơn năm lần so với pop [0] với danh sách này 1000000 thành viên
significantly slower than any following one. And
pop[] in fact five times faster than pop[0] with
this 1000000-member-list
[Thực hiện trên máy 400 MHz Windows 2000]
Những lời chúc tốt đẹp nhất, Gregor
Loading...