Thông thường, cách tốt nhất để đạt được hiệu suất là thay đổi thuật toán của bạn. Việc thực hiện càng ít nói chung, bạn càng có thể tiếp cận với kim loại.
Giả sử đã được thực hiện ....
Nếu đó thực sự là mã quan trọng, hãy cố gắng tránh đọc bộ nhớ, cố gắng tránh tính toán những thứ có thể được tính toán trước (mặc dù không có bảng tra cứu vì chúng vi phạm quy tắc số 1). Biết những gì thuật toán của bạn làm và viết nó theo cách mà trình biên dịch cũng biết nó. Kiểm tra lắp ráp để chắc chắn nó làm.
Tránh bỏ lỡ bộ nhớ cache. Xử lý hàng loạt càng nhiều càng tốt. Tránh các chức năng ảo và các chỉ dẫn khác.
Cuối cùng, đo lường mọi thứ. Các quy tắc thay đổi tất cả các thời gian. Những gì được sử dụng để tăng tốc mã 3 năm trước bây giờ làm chậm nó. Một ví dụ điển hình là 'sử dụng các hàm toán học kép thay vì các phiên bản float'. Tôi sẽ không nhận ra rằng nếu tôi không đọc nó.
Tôi đã quên - không có các hàm tạo mặc định xác định các biến của bạn hoặc nếu bạn khăng khăng, ít nhất cũng tạo các hàm tạo không. Hãy nhận biết những điều không hiển thị trong hồ sơ. Khi bạn mất một chu kỳ không cần thiết cho mỗi dòng mã, sẽ không có gì hiển thị trong hồ sơ của bạn, nhưng bạn sẽ mất toàn bộ rất nhiều chu kỳ. Một lần nữa, biết mã của bạn đang làm gì. Làm cho chức năng cốt lõi của bạn nạc thay vì hoàn hảo. Phiên bản Foolproof có thể được gọi nếu cần, nhưng không phải lúc nào cũng cần thiết. Tính linh hoạt có giá - hiệu suất là một.
Được chỉnh sửa để giải thích tại sao không có khởi tạo mặc định: Rất nhiều mã nói: Vector3 bla; bla = DoS Something ();
Việc định hướng trong hàm tạo bị lãng phí thời gian. Ngoài ra, trong trường hợp này, thời gian lãng phí là nhỏ (có thể xóa vectơ), tuy nhiên nếu các lập trình viên của bạn làm điều này theo thói quen thì nó sẽ tăng lên. Ngoài ra, rất nhiều hàm tạo ra một toán tử tạm thời (nghĩ rằng quá tải), được khởi tạo về 0 và được gán ngay sau đó. Các chu kỳ bị mất ẩn quá nhỏ để thấy sự tăng đột biến trong trình lược tả của bạn, nhưng các chu kỳ bị chảy máu trên khắp cơ sở mã của bạn. Ngoài ra, một số người làm nhiều hơn trong các nhà xây dựng (rõ ràng là không có). Tôi đã thấy mức tăng nhiều mili giây từ một biến không được sử dụng trong đó hàm tạo tình cờ hơi nặng nề. Ngay khi hàm tạo gây ra tác dụng phụ, trình biên dịch sẽ không thể tối ưu hóa nó, vì vậy trừ khi bạn không bao giờ sử dụng mã ở trên, tôi thích một hàm tạo không khởi tạo, hoặc, như tôi đã nói,
Vector3 bla (noInit); bla = doS Something ();