Hướng dẫn is list comprehension fast in python? - đọc danh sách trong python có nhanh không?
Sau đây là những hướng dẫn sơ bộ và dự đoán được giáo dục dựa trên kinh nghiệm. Bạn nên 2 hoặc hồ sơ trường hợp sử dụng cụ thể của bạn để có được số cứng và những con số đó đôi khi có thể không đồng ý với số dưới đây. Show Một sự hiểu biết danh sách thường nhanh hơn một chút so với vòng 3 tương đương chính xác (thực sự xây dựng một danh sách), rất có thể là vì nó không phải tra cứu danh sách và phương thức 4 của nó trên mọi lần lặp. Tuy nhiên, sự hiểu biết danh sách vẫn thực hiện vòng lặp cấp độ byte:
Sử dụng danh sách hiểu biết thay cho một vòng lặp không xây dựng danh sách, tích lũy vô nghĩa một danh sách các giá trị vô nghĩa và sau đó ném danh sách đi, thường chậm hơn do chi phí tạo và mở rộng danh sách. Danh sách toàn diện không phải là ma thuật vốn đã nhanh hơn một vòng lặp cũ tốt. Đối với các chức năng xử lý danh sách chức năng: Mặc dù chúng được viết bằng C và có thể vượt trội so với các hàm tương đương được viết bằng Python, nhưng chúng không nhất thiết là tùy chọn nhanh nhất. Một số tốc độ lên được mong đợi nếu chức năng được viết bằng C quá. Nhưng hầu hết các trường hợp sử dụng 5 (hoặc chức năng Python khác), chi phí của việc thiết lập các khung ngăn xếp Python liên tục, v.v. ăn bất kỳ khoản tiết kiệm nào. Chỉ cần thực hiện cùng một công việc nội tuyến, không có các cuộc gọi chức năng (ví dụ: khả năng hiểu danh sách thay vì 6 hoặc 7) thường nhanh hơn một chút.if the function is written in C too. But most cases using a 5 (or other Python
function), the overhead of repeatedly setting up Python stack frames etc. eats up any savings. Simply doing the same work in-line, without function calls (e.g. a list comprehension instead of 6 or 7) is often slightly faster.
Rất có thể, nếu mã như thế này chưa đủ nhanh khi được viết bằng python không "không tối ưu" tốt, thì không có số lượng tối ưu hóa vi mô cấp độ trăn sẽ làm cho nó đủ nhanh và bạn nên bắt đầu nghĩ về việc giảm xuống C. Tối ưu hóa vi mô thường có thể tăng tốc mã Python một cách đáng kể, có giới hạn thấp (về mặt tuyệt đối) đối với việc này. Hơn nữa, ngay cả trước khi bạn đạt được trần đó, nó sẽ trở nên hiệu quả hơn về chi phí (tăng tốc 15% so với 300% tăng tốc với cùng một nỗ lực) để cắn viên đạn và viết một số C. C. Đã trả lời ngày 1 tháng 3 năm 2014 lúc 0:56Mar 1, 2014 at 0:56 1 Nếu bạn kiểm tra thông tin trên python.org, bạn có thể thấy bản tóm tắt này:
Nhưng bạn thực sự nên đọc bài viết trên chi tiết để hiểu nguyên nhân của sự khác biệt hiệu suất.should read the above article in details to understand the cause of the performance difference. Tôi cũng đề nghị bạn nên thời gian mã của bạn bằng cách sử dụng thời gian. Vào cuối ngày, có thể có một tình huống, ví dụ, bạn có thể cần phải thoát khỏi vòng lặp 3 khi một điều kiện được đáp ứng. Nó có khả năng có thể nhanh hơn so với việc tìm ra kết quả bằng cách gọi 6.Đã trả lời ngày 1 tháng 3 năm 2014 lúc 0:44Mar 1, 2014 at 0:44
Anthony Konganthony KongAnthony Kong 34,7K39 Huy hiệu vàng157 Huy hiệu bạc286 Huy hiệu Đồng39 gold badges157 silver badges286 bronze badges 4 Bạn hỏi cụ thể về 0, 1 và 2, nhưng tôi cho rằng bạn muốn biết về lập trình chức năng nói chung. Đã tự mình kiểm tra vấn đề tính toán khoảng cách giữa tất cả các điểm trong một tập hợp các điểm, lập trình chức năng (sử dụng hàm 3 từ mô-đun 4 tích hợp , trong thực tế). Đây là mã mẫu tôi đã sử dụng:
Phiên bản chức năng có nhanh hơn phiên bản thủ tục không?
Đã trả lời ngày 1 tháng 3 năm 2014 lúc 0:56Mar 1, 2014 at 0:56
3 Nếu bạn kiểm tra thông tin trên python.org, bạn có thể thấy bản tóm tắt này:
Nhưng bạn thực sự nên đọc bài viết trên chi tiết để hiểu nguyên nhân của sự khác biệt hiệu suất.
IMHO:
34,7K39 Huy hiệu vàng157 Huy hiệu bạc286 Huy hiệu ĐồngFeb 17, 2020 at 1:41
Bạn hỏi cụ thể về 0, 1 và 2, nhưng tôi cho rằng bạn muốn biết về lập trình chức năng nói chung. Đã tự mình kiểm tra vấn đề tính toán khoảng cách giữa tất cả các điểm trong một tập hợp các điểm, lập trình chức năng (sử dụng hàm 3 từ mô-đun 4 tích hợp , trong thực tế). Đây là mã mẫu tôi đã sử dụng:tjysdsgPhiên bản chức năng có nhanh hơn phiên bản thủ tục không?6 silver badges15 bronze badges Tôi đã sửa đổi mã của @Alisa và sử dụng 5 để hiển thị lý do tại sao việc hiểu danh sách nhanh hơn:
Đây là kết quả:Apr 28, 2017 at 10:09
6 và 6 nói chung khá chậm. Không chỉ vậy, sử dụng 8 trên các trình lặp mà 6 trả về chậm, so với 8ing một danh sáchalphiii
3 Danh sách tổng hợp không chỉ dành ít thời gian nhất để xây dựng danh sách mà còn làm cho 8 nhanh hơn nhiều, trái ngược với 6
Đã trả lời ngày 17 tháng 2 năm 2020 lúc 1:41Jul 23, 2019 at 6:55
Thêm một sự thay đổi vào câu trả lời của alphii, thực sự là vòng lặp sẽ tốt nhất thứ hai và chậm hơn khoảng 6 lần so với 6 0Những thay đổi chính là loại bỏ các cuộc gọi 8 chậm, cũng như 4 có lẽ không cần thiết trong trường hợp cuối cùng. Việc đặt For Loop và bản đồ trong cùng một thuật ngữ làm cho nó hoàn toàn thực sự. Hãy nhớ rằng lambdas là các khái niệm chức năng và về mặt lý thuyết không nên có tác dụng phụ, nhưng, tốt, chúng có thể có tác dụng phụ như thêm vào 8. Kết quả trong trường hợp này với Python 3.6.1, Ubuntu 14.04, Intel (R) Core (TM) I7-4770 CPU @ 3,40GHz 1
Đã trả lời ngày 18 tháng 3 năm 2018 lúc 13:27Mar 18, 2018 at 13:27
Jjmerelojjmerelojjmerelo 21.6K7 Huy hiệu vàng35 Huy hiệu bạc82 Huy hiệu Đồng7 gold badges35 silver badges82 bronze badges 1 Bao gồm các toàn bộ danh sách nhanh hơn bao nhiêu?Danh sách hiểu nhanh hơn 50%.50% faster.
Là danh sách hiểu nhanh hơn numpy?Numpy nhanh hơn 61 lần so với việc hiểu danh sách, nhưng đôi khi chúng ta cần sử dụng giá trị này làm danh sách.Ngay cả như một danh sách, phương pháp Numpy vẫn nhanh hơn ít nhất 2,34 so với các phương pháp khác., but sometimes we need to use this value as a list. Even as a list, the method Numpy is at least 2,34 faster than other methods.
Là danh sách hiểu nhanh hơn máy phát điện?Danh sách toàn diện Trả về toàn bộ danh sách và biểu thức trình tạo chỉ trả về đối tượng Trình tạo.Các giá trị sẽ giống như các giá trị trong danh sách, nhưng chúng sẽ được truy cập tại một thời điểm bằng cách sử dụng hàm tiếp theo ().Đây là những gì làm cho toàn bộ danh sách nhanh hơn các biểu thức tạo.list comprehensions faster than generator expressions.
Là danh sách hiểu nhanh hơn Lambda?Trên thực tế, danh sách hiểu rõ hơn và nhanh hơn nhiều so với Filter+Lambda, nhưng bạn có thể sử dụng bất cứ điều gì bạn thấy dễ dàng hơn.Điều đầu tiên là chi phí gọi chức năng: Ngay khi bạn sử dụng hàm Python (dù được tạo bởi def hay Lambda), có khả năng bộ lọc sẽ chậm hơn so với khả năng hiểu danh sách.list comprehension is much clearer and faster than filter+lambda, but you can use whichever you find easier. The first thing is the function call overhead: as soon as you use a Python function (whether created by def or lambda) it is likely that the filter will be slower than the list comprehension. |