Tôi đã tự hỏi những cách tiếp cận hoặc suy nghĩ của mọi người về việc tự động hóa thử nghiệm hiệu suất trong XNA. Hiện tại tôi đang xem xét chỉ làm việc trong 2d, nhưng điều đó đặt ra nhiều lĩnh vực mà hiệu suất có thể được cải thiện với các triển khai khác nhau.
Một ví dụ sẽ là nếu bạn có 2 cách triển khai phân vùng không gian khác nhau, một cách có thể nhanh hơn cách khác nhưng không thực hiện một số thử nghiệm hiệu năng thực tế, bạn sẽ không thể biết chắc chắn cái nào (trừ khi bạn thấy mã bị chậm một cách rõ ràng các bộ phận). Bạn có thể viết một bài kiểm tra đơn vị trong một khung thời gian nhất định tiếp tục thêm / cập nhật / xóa các thực thể cho cả hai lần triển khai và xem có bao nhiêu được thực hiện trong mỗi khung thời gian và cái cao hơn sẽ là nhanh hơn (trong ví dụ cụ thể này).
Một ví dụ cấp cao hơn sẽ là nếu bạn muốn xem bạn có thể có bao nhiêu thực thể trên màn hình mà không cần xuống dưới 60fps. Vấn đề với điều này là để tự động hóa nó, bạn sẽ cần phải sử dụng thủ thuật ẩn hoặc một số thứ khác để khởi động một trò chơi giả và hoàn toàn kiểm tra những phần bạn quan tâm và vô hiệu hóa mọi thứ khác.
Tôi biết rằng đây thực sự không phải là một vấn đề đơn giản vì ngay cả khi bạn có thể tự động hóa các bài kiểm tra, thực sự sẽ tùy thuộc vào con người để giải thích nếu kết quả đủ hiệu quả, nhưng là một phần của bước xây dựng, bạn có thể chạy các bài kiểm tra này và xuất bản kết quả ở đâu đó để so sánh.
Theo cách này, nếu bạn đi từ phiên bản 1.1 đến 1.2 nhưng đã thay đổi một số thuật toán cơ bản, bạn có thể nhận thấy rằng nhìn chung điểm hiệu năng sẽ tăng lên, có nghĩa là bạn đã cải thiện hiệu suất tổng thể của ứng dụng, và sau đó từ 1.2 đến 1.3 bạn có thể nhận thấy rằng bạn đã giảm hiệu suất tổng thể một chút.
Vì vậy, có ai đã tự động loại điều này trong các dự án của họ không, và nếu vậy làm thế nào để bạn đo lường sự so sánh hiệu suất của bạn ở mức cao và bạn sử dụng khuôn khổ nào để kiểm tra? Khi cung cấp, bạn đã viết mã của mình để có thể kiểm tra / có thể thử nghiệm được đối với hầu hết các phần, bạn chỉ có thể sử dụng các thử nghiệm của mình làm cơ chế để nhận được một số kết quả hiệu suất ...
=== Chỉnh sửa ===
Để rõ ràng, tôi quan tâm nhiều hơn đến cách tốt nhất để sử dụng các thử nghiệm tự động trong XNA để theo dõi hiệu suất của bạn, không chơi thử nghiệm hoặc đoán bằng cách chạy trò chơi của bạn trên máy một cách thủ công. Điều này hoàn toàn khác với việc xem trò chơi của bạn có thể chơi được trên phần cứng X hay không, nó thiên về việc theo dõi sự thay đổi về hiệu suất khi công cụ / khung công cụ trò chơi của bạn thay đổi.
Như đã đề cập trong một trong các ý kiến, bạn có thể dễ dàng kiểm tra "tôi có thể chèn / xóa / cập nhật bao nhiêu nút trong QuadTreeA trong vòng 2 giây", nhưng bạn phải xem xét các kết quả này mỗi lần để xem nó có thay đổi không, có thể thay đổi tốt và vẫn tốt hơn là chỉ dựa vào chơi nó để xem bạn có nhận thấy sự khác biệt nào giữa các phiên bản không. Tuy nhiên, nếu bạn định đưa Assert vào để thông báo cho bạn về sự cố nếu nó xuống thấp hơn mức cho phép 5000 trong 2 giây, bạn sẽ có một bài kiểm tra dễ vỡ vì nó theo ngữ cảnh đối với phần cứng, không chỉ là việc thực hiện. Mặc dù điều đó được nói rằng các loại thử nghiệm tự động này chỉ thực sự được sử dụng nếu bạn đang chạy thử nghiệm như một loại đường ống xây dựng, tức là:
Thanh toán -> Chạy Kiểm tra đơn vị -> Chạy Kiểm tra tích hợp -> Chạy Kiểm tra hiệu suất -> Gói
Vì vậy, sau đó bạn có thể dễ dàng so sánh các số liệu thống kê từ bản dựng này với bản dựng khác trên máy chủ CI dưới dạng báo cáo thuộc loại nào đó và một lần nữa, điều này có thể không có ý nghĩa nhiều với bất kỳ ai nếu bạn không quen với Tích hợp liên tục. Mấu chốt chính của câu hỏi này là xem mọi người quản lý vấn đề này như thế nào giữa các bản dựng và cách họ thấy tốt nhất để báo cáo. Như tôi đã nói nó có thể chủ quan nhưng vì kiến thức sẽ thu được từ các câu trả lời nên nó có vẻ là một câu hỏi đáng giá.