Tôi sẽ là người đi ngược lại hạt gạo ở đây và nói, không bao giờ là quá sớm để tìm hiểu về tối ưu hóa, đặc biệt là tối ưu hóa lắp ráp và quan trọng hơn là gỡ lỗi trong lắp ráp. Tôi tin rằng bạn sẽ đạt được lợi ích tối đa của nó nếu bạn là sinh viên (bởi vì sau đó bạn có rất ít để mất [tức là thời gian / tiền bạc khôn ngoan]) và mọi thứ để đạt được.
Nếu bạn ở trong ngành và không được giao nhiệm vụ lắp ráp, thì không. Mặt khác, nếu bạn là sinh viên hoặc có thời gian nói chung, tôi sẽ tìm thời gian để học cách tháo rời các chương trình và xem liệu tôi có thể đưa ra giải pháp tốt hơn trình biên dịch hay không. Nếu tôi không thể, ai quan tâm! Tôi vừa học cách viết cũng như trình biên dịch và đó là một điểm cộng lớn khi bạn gặp phải một lỗi trong mã phát hành (không có ký hiệu gỡ lỗi) và nhìn chằm chằm vào phần tháo gỡ vì đó là điều duy nhất bạn có thể nhìn vào.
Câu trả lời
Đây là một trong những tài nguyên tốt nhất tôi đã tìm thấy để tìm hiểu về tối ưu hóa.
http://www.agner.org/optizes/
Lời nói
Nếu bạn đọc một số bài viết của các nhà phát triển lớn (ví dụ, lý do đằng sau việc tạo EASTL và kiểm tra mã chặt chẽ hơn sẽ dẫn bạn đến những nhận xét như đã làm điều này bởi vì GCC rất tệ khi đưa ra tuyên bố này sẽ cho bạn biết, phần lớn mọi người nói với bạn rằng trình biên dịch không phải lúc nào cũng đúng, ĐẶC BIỆT trong phát triển trò chơi) và sau đó đặt chân vào ngành công nghiệp bạn sẽ thấy rằng tối ưu hóa là một việc hàng ngày và biết đầu ra lắp ráp có nghĩa là một điểm cộng lớn. Ngoài ra, mọi người dường như không nhận ra (đặc biệt là trên stackoverflow) rằng các trò chơi hồ sơ rất khó và không phải lúc nào cũng chính xác.
Có một cảnh báo mặc dù. Bạn có thể dành thời gian để tối ưu hóa một cái gì đó và sau đó nhận ra rằng đó là thời gian lãng phí. Nhưng bạn đã học được gì? Bạn đã học cách không lặp lại sai lầm tương tự trong một trường hợp tương tự.
Theo tôi, những gì SO đang thực hiện là theo quan điểm tôn giáo đối với tuyên bố không tối ưu hóa cho đến khi bạn lập hồ sơ và đừng lo lắng, trình biên dịch biết rõ hơn bạn . Nó cản trở việc học. Tôi biết các chuyên gia trong ngành được trả tiền rất tốt (và ý tôi là RẤT tốt tiền) để tìm hiểu về lắp ráp để tối ưu hóa trò chơi và gỡ lỗi vì trình biên dịch kém về nó hoặc đơn giản là không thể giúp bạn, bởi vì, tốt, nó không thể (sự cố liên quan đến GPU, sự cố trong đó dữ liệu liên quan là không thể đọc được trong trình gỡ lỗi, v.v.)!
Điều gì sẽ xảy ra nếu ai đó thích làm điều đó, chưa hoàn toàn nhận ra nó, đặt câu hỏi ở đây và bị tắt / tắt bởi nhiều trình biên dịch câu trả lời biết rõ hơn bạn! và không bao giờ trở thành một trong những lập trình viên được trả lương cao?
Một suy nghĩ cuối cùng. Nếu bạn bắt đầu thực hiện việc này sớm, bạn sẽ thấy rằng bạn sẽ sớm bắt đầu viết mã ở mức tồi tệ nhất, không có cải thiện hiệu suất nào vì trình biên dịch đã tối ưu hóa nó theo cùng một cách hoặc tốt nhất, có một số cải tiến hiệu suất vì bây giờ trình biên dịch có thể tối ưu hóa nó . Trong cả hai trường hợp, nó đã trở thành thói quen và bạn không chậm hơn trong việc viết mã theo cách này so với những gì bạn đã làm trước đây. Một vài ví dụ là (còn nhiều nữa):
- Tăng trước trừ khi bạn thực sự muốn tăng sau
- Viết các vòng lặp cho các thùng chứa bằng cách sử dụng biến kích thước cục bộ không đổi thay vì gọi kích thước () trên vùng chứa trong vòng lặp.
EDIT: Cập nhật sau 8 năm nữa trong ngành. Học lắp ráp. Tìm hiểu cách tối ưu hóa hoạt động và lắp ráp chúng tạo ra (CompilerExplorer là một công cụ tuyệt vời cho việc đó). Tôi đã chạy qua vô số sự cố trong các bản dựng Thử nghiệm (bản dựng được tối ưu hóa cho thử nghiệm nội bộ) trong đó bạn không thể dựa vào trình gỡ lỗi ngay cả với các biểu tượng gỡ lỗi. Trình biên dịch đã tối ưu hóa quá nhiều thứ và lắp ráp là nguồn thông tin có giá trị duy nhất của bạn để tìm lỗi từ bãi chứa sự cố. Mỗi bản dựng mất 30 - 40 phút nếu bạn may mắn và lần đầu tiên trong hàng đợi bản dựng - vì vậy bạn không thể dựa vào một số kỹ thuật truyền thống để cách ly lỗi. Nhiều người chơi làm cho mọi thứ tồi tệ hơn. Biết lắp ráp và cách đọc lắp ráp tối ưu hóa đơn giản sẽ giúp bạn trở nên tốt hơn và cuối cùng có giá trị hơn cho nhóm.