Tôi đã bắt đầu đọc Algorithms và tôi cứ tự hỏi, khi giao dịch với các nguyên thủy cùng loại, đó là hoạt động, phân bổ hoặc so sánh đắt tiền hơn? Điều này có thay đổi rất nhiều giữa các ngôn ngữ không?Điều gì đắt hơn, so sánh hoặc chuyển nhượng?
Trả lời
Tối ưu hóa vi mô hầu như luôn là điều sai trái. Thậm chí không bắt đầu vào nó trừ khi chương trình chạy quá chậm, và bạn sử dụng một profiler để xác định chính xác vị trí các phần chậm.
Một khi bạn đã làm điều đó, lời khuyên của tôi là để xem về cải thiện mã và địa phương dữ liệu, vì nhớ cache gần như chắc chắn tồi tệ hơn so với hướng dẫn tối ưu.
Điều đó đang được thực hiện, trong trường hợp khá kỳ quặc mà bạn có thể sử dụng phương pháp dựa trên bài tập hoặc dựa trên so sánh, hãy thử cả hai và thời gian. Tối ưu hóa vi mô là một trò chơi số. Nếu các con số không đủ tốt, hãy tìm hiểu lý do tại sao, sau đó xác minh rằng những gì bạn đang thực sự hoạt động.
Vì vậy, ý của bạn là gì khi so sánh? Nhảy có điều kiện gây ra vấn đề cho bất kỳ bộ vi xử lý hiện đại mơ hồ nào, nhưng các bộ vi xử lý khác nhau làm những việc khác nhau và không đảm bảo rằng bất kỳ bộ xử lý nào sẽ làm chậm mọi thứ. Ngoài ra, nếu một trong hai nguyên nhân gây ra một bộ nhớ cache bỏ lỡ, đó có lẽ là một chậm hơn không có vấn đề gì.
Cuối cùng, các ngôn ngữ thường được biên dịch thành mã máy và những thứ đơn giản như so sánh và các bài tập thường sẽ được biên dịch giống nhau. Sự khác biệt lớn sẽ là loại CPU.
Bạn nghĩ sao?
Ở mức thấp nhất, một người đọc hai lần, người kia đọc và viết.
Nhưng tại sao bạn thực sự quan tâm? Bạn không nên quan tâm đến hiệu suất ở cấp độ này. Tối ưu hóa cho Big-O
Bạn có thể quan tâm cần lưu ý rằng cuốn sách chủ yếu là về Big-O. Tại sao tôi nên quan tâm? Bởi vì tôi không biết. – cmsjr
Tôi đồng ý rằng đó là một sự tối ưu vô lý, nhưng biết cách mỗi công trình không phải là vô giá trị. 1 từ tôi đến OP và trả lời này. –
Pyro, cảm ơn vì cái nhìn sâu sắc, nếu không phải là giai điệu. – cmsjr
- 1. Giá GUID và so sánh đắt tiền như thế nào so với so sánh chuỗi
- 2. Devexpress hoặc Telerik Điều khiển so sánh
- 3. So sánh số có nhanh hơn so sánh chuỗi không?
- 4. Chuyển nhượng trong điều kiện
- 5. Tại sao string.IsNullOrEmpty nhanh hơn so với so sánh?
- 6. Chuyển nhượng nhà điều hành thừa kế
- 7. Điều gì tốt hơn: DataSet hoặc DataReader?
- 8. So sánh số nguyên Java: lớn hơn
- 9. So sánh chuỗi lớn hơn trong Makefile
- 10. So sánh bộ nhớ, nhanh hơn?
- 11. So sánh UIColors hoặc CGColor hoặc CGColorSpace
- 12. std :: di chuyển bên trong nhà điều hành chuyển nhượng
- 13. Điều gì "không thể được so sánh bởi trình so khớp thời gian" nghĩa là gì?
- 14. So sánh hai JObject hoặc JArray
- 15. RelativeLayout có đắt hơn LinearLayout không?
- 16. Điều nào tốt hơn - PyInstaller hoặc cx_Freeze?
- 17. Điều khiển lưới MVC Grid so sánh
- 18. Điều gì tốt hơn trong CSS: div.something hoặc chỉ .something
- 19. Nhà điều hành chuyển nhượng với thành viên tham chiếu
- 20. Chuyển nhượng tới Không
- 21. So sánh điều hành quá tải
- 22. So sánh với mặc định hoặc trống?
- 23. Ant regex so sánh trong điều kiện
- 24. Chuyển nhượng nhà điều hành tại Gò ngôn ngữ
- 25. Chuyển nhượng Điều kiện trong Python khi Loop
- 26. Tại sao phân chia đắt hơn phép nhân?
- 27. VB.Net LINQ to Entities So sánh Null - 'Không có gì' hoặc '= Không có gì'?
- 28. Các toán tử chuyển nhượng có điều kiện tồn tại trong Coffeescript
- 29. So sánh Object Hoặc Chỉ cần ID
- 30. Regex so sánh thủ công. Cái nào nhanh hơn?
Tôi không chủ động thực hiện tối ưu hóa vi mô, đây chỉ là một số sự tò mò mà tôi có sau khi xem một số phân loại từng phần rồi so sánh các thuật toán. – cmsjr
OK, nhưng câu hỏi về những hoạt động nào nhanh hơn đã trở nên phức tạp hơn nhiều kể từ khi tôi bắt đầu trong lĩnh vực này. Các bộ vi xử lý hiện đại thực sự phức tạp và khó dự đoán. –
trong khi câu trả lời được cung cấp là thực tế, nó tránh được câu hỏi hoàn toàn: | – Darioush