Tôi đang tìm những thứ như sắp xếp lại mã mà thậm chí có thể phá vỡ mã trong trường hợp của một bộ xử lý đa.Một số thủ thuật mà một bộ xử lý thực hiện để tối ưu hóa mã là gì?
Trả lời
Wikipedia có một danh sách khá toàn diện các kỹ thuật tối ưu hóa here.
+0: Câu trả lời này giải thích cách trình biên dịch mã hóa, chứ không phải cách bộ xử lý làm như vậy. –
Có, nhưng câu hỏi của bạn chính xác là gì?
Tuy nhiên, vì đây là một chủ đề thú vị: các thủ thuật mà trình biên dịch và bộ vi xử lý sử dụng để tối ưu hóa mã không được ngắt mã, ngay cả với nhiều bộ xử lý, trong trường hợp không có điều kiện chủng tộc trong mã đó. Điều này được gọi là bảo đảm tính nhất quán tuần tự: nếu chương trình của bạn không có bất kỳ điều kiện chủng tộc nào và tất cả dữ liệu được khóa chính xác trước khi truy cập, mã sẽ hoạt động như được thực hiện tuần tự.
Có một video thực sự tốt của Herb Sutter nói chuyện về vấn đề này ở đây:
http://video.google.com/videoplay?docid=-4714369049736584770
Mọi người nên xem này :)
Điều quan trọng nhất là truy cập bộ nhớ sắp xếp lại.
Hàng rào bộ nhớ vắng mặt hoặc hướng dẫn tuần tự hóa, bộ xử lý được tự do sắp xếp lại quyền truy cập bộ nhớ. Một số kiến trúc bộ vi xử lý có các hạn chế về số lượng chúng có thể sắp xếp lại; Alpha được biết đến là người yếu nhất (tức là, người có thể sắp xếp lại nhiều nhất).
Việc xử lý rất tốt đối tượng có thể được tìm thấy trong tài liệu nguồn nhân Linux, tại Documentation/memory-barriers.txt.
Hầu hết thời gian, tốt nhất là sử dụng các khóa nguyên thủy từ trình biên dịch hoặc thư viện chuẩn của bạn; đây là những thử nghiệm tốt, nên có tất cả các rào cản bộ nhớ cần thiết tại chỗ, và có lẽ khá tối ưu (tối ưu hóa khóa nguyên thủy là khó khăn; ngay cả các chuyên gia đôi khi có thể làm cho chúng sai).
Câu hỏi liên quan: http://stackoverflow.com/questions/286629/what-is-mean-by-memory-fences – CesarB
Câu trả lời của DavidK là chính xác, tuy nhiên cũng rất quan trọng để biết về mô hình bộ nhớ cho ngôn ngữ/thời gian chạy của bạn. Ngay cả khi không có điều kiện chủng tộc và với tính nhất quán tuần tự và việc sử dụng mutex, mã của bạn vẫn có thể bị ngắt khi dữ liệu đang được lưu trong bộ nhớ cache bởi các luồng khác nhau chạy trong các lõi khác nhau của CPU. Một số ngôn ngữ, Java là một ví dụ, đảm bảo trạng thái dữ liệu giữa các luồng khi một khóa mutex được sử dụng, nhưng hiếm khi đủ để đơn giản đảm bảo rằng không có hai luồng nào có thể truy cập dữ liệu cùng một lúc. Bạn cần sử dụng mutex theo đúng cách để đảm bảo rằng thời gian chạy ngôn ngữ đồng bộ hóa trạng thái dữ liệu giữa hai luồng. Trong java này được thực hiện bằng cách có hai chủ đề đồng bộ hóa trên cùng một đối tượng.
Đây là trang tốt giải thích sự cố và cách xử lý vấn đề trong mô hình bộ nhớ javas.
- 1. Mẹo và thủ thuật tối ưu hóa
- 2. Hiển thị flash: mẹo và thủ thuật tối ưu hóa
- 3. Tối ưu hóa Mã số
- 4. Một số tối ưu hóa rõ ràng cho một máy ảo thực hiện một ngôn ngữ chức năng là gì?
- 5. Tối ưu hóa nào là OK để thực hiện ngay?
- 6. Kỹ thuật tối ưu hóa mã trong extjs?
- 7. Giới hạn tối ưu hóa sử dụng SIMD là gì?
- 8. Tối ưu hóa! - Nó là gì? Làm thế nào là nó được thực hiện?
- 9. Một số kỹ thuật tối ưu hóa cho bảng MySQL với hơn 300 triệu bản ghi là gì?
- 10. tối ưu hóa mã jquery-in-footer (lý thuyết)
- 11. Tối ưu hóa một thuật toán tìm kiếm đơn giản
- 12. Tối ưu hóa mã F # hay nó thực sự chậm?
- 13. Cách tối ưu hóa để thực hiện RPC trong .Net
- 14. Tối ưu hóa Mã số C# Fragment
- 15. Kỹ thuật tối ưu hóa trong C#
- 16. Mã HTML tối ưu hóa hình ảnh tối ưu nhất cho SEO là gì?
- 17. LINQ tối ưu hóa trong một foreach
- 18. Một số gợi ý mà thuật toán nên song song là gì?
- 19. Điều gì có thể làm cho mã F # không được tối ưu hóa nhanh hơn mã được tối ưu hóa?
- 20. Cách đa nền tảng tối ưu để xử lý các chuỗi Unicode trong C++ là gì?
- 21. Thuật toán "unifier chung nhất" tối ưu là gì?
- 22. Tối ưu hóa mã PHP
- 23. Mẹo và thủ thuật về tối ưu hóa truy vấn [SQL Server 2005]
- 24. Thư viện tối ưu hóa lồi tốt là gì?
- 25. Kích thước gói tối đa mà một ổ cắm python có thể xử lý là gì?
- 26. SSE2 tối ưu hóa mã
- 27. Cách tối ưu để xử lý hình ảnh bị hỏng là gì?
- 28. Tối ưu hóa mã SSE của GCC
- 29. Tối ưu hóa thuật toán dựa trên Dijkstra cho bộ nhớ đệm
- 30. Tối ưu hóa yêu cầu HTTP: Giới hạn là gì?
Ông có thể vui lòng cập nhật để cụm từ này dưới dạng một câu hỏi? –
Bạn có nghĩa là trình biên dịch? Bởi vì bạn sẽ nhận được các câu trả lời rất khác nhau ... –
Trình duyệt nào? Nền tảng nào? –