Chúng tôi đang làm việc trên cơ sở mã C ++ có kích thước vừa phải (10Mloc) mà qua các nỗ lực tối ưu hóa của chúng tôi đang trở nên chậm đồng đều .
Cơ sở mã này là một tập hợp các thư viện mà chúng tôi kết hợp để đưa chúng vào hoạt động. Khi khung chung về cách các thư viện này được phát triển, có một số điểm nhấn về hiệu suất và sau này, khi có nhiều phần được thêm vào, khung chung không thay đổi nhiều. Tối ưu hóa được thực hiện khi cần thiết và khi phần cứng của chúng tôi phát triển. Điều này làm cho quyết định sớm đắt tiền rõ ràng chỉ nhiều sau đó. Bây giờ chúng ta đang ở thời điểm tối ưu hóa hơn nữa đắt hơn nhiều vì chúng sẽ yêu cầu viết lại các phần lớn của cơ sở mã. Chúng tôi thấy mình đang tiếp cận một mức tối thiểu cục bộ không mong muốn vì chúng tôi biết rằng về nguyên tắc, mã sẽ có thể chạy nhanh hơn nhiều.
Có phương pháp thành công nào giúp quyết định điều gì sẽ thay đổi sự phát triển của cơ sở mã theo hướng giải pháp tối ưu toàn cầu mà không dễ bị nhầm lẫn bởi các cơ hội tối ưu hóa dễ dàng không?
BIÊN TẬP
Để trả lời câu hỏi làm thế nào chúng tôi hiện hồ sơ:
Chúng tôi thực sự chỉ có 2 kịch bản khác nhau để sử dụng mã này, cả hai đều song song lúng túng. Hồ sơ được thực hiện cả với thời gian đồng hồ treo tường trung bình trên một mẫu lớn đầu vào và chạy chi tiết hơn (chi phí hướng dẫn, dự đoán sai chi nhánh và các vấn đề bộ đệm). Điều này hoạt động tốt vì chúng tôi chạy độc quyền trên các máy cực kỳ đồng nhất của chúng tôi (một cụm gồm vài nghìn máy giống hệt nhau). Vì chúng ta thường giữ cho tất cả các máy của mình bận rộn hầu hết thời gian chạy nhanh hơn có nghĩa là chúng ta có thể xem xét các công cụ mới bổ sung. Tất nhiên, vấn đề là khi các biến thể đầu vào mới xuất hiện, chúng có thể bị phạt muộn vì chúng tôi đã loại bỏ sự thiếu hiệu quả vi mô rõ ràng nhất cho các trường hợp sử dụng khác, do đó có thể thu hẹp số lượng kịch bản "chạy tối ưu".
sloc
. Tôi gọi nó là "kích thước vừa phải" bởi vì tôi không biết cái gì được coi là "lớn" ở đây.