2014-09-11 19 views
5

Đối với một dự án, tôi phải đo thời gian chạy của các hoạt động nguyên thủy cơ bản trong C++ đối với máy mà tôi đang sử dụng. Nó nói này:Làm thế nào để đo lường các hoạt động cơ bản, nguyên thủy trong C++?

Viết chương trình xác định giá trị của các thông số thời gian của (fetch, store,+, -, *, /, <, chức năng cuộc gọi, chức năng Đổi lại, new, delete, và []) cho máy chạy trên đó.

fetchstore là:

a = b + 1 

b1 đang được "lấy" (và thêm vào cùng với +), và lưu trữ trong a.

Tôi chưa từng làm điều gì như thế này trước đây. Tôi có cần sử dụng phương pháp đồng hồ để tính thời gian chạy không? Mã mà tôi định thời gian có phức tạp hay đơn giản không? Phải đánh giá bao nhiêu lần?

+0

Nếu bạn đang sử dụng máy x86, nó sẽ có móc hiệu suất. [Xem câu trả lời này] (http://stackoverflow.com/questions/8091182/how-to-read-performance-counters-on-i5-i7-cpus). –

+0

@RossRogers Xin lỗi, tôi là người mới. Móc hiệu suất là gì? Và làm cách nào để biết tôi đang sử dụng máy x86? –

+0

Khi bạn đang đo lường sự hoàn hảo 'của C++ operands rất chính xác bạn thực sự sẽ cần phải có CPU của bạn cho bạn biết họ đã mất bao lâu. Chip x86 của Intel có màn hình hiệu suất đặc biệt được tích hợp vào chip. Dù sao, nếu đây là một dự án làm bài tập về nhà, thì bạn có thể đi một con đường ít chính xác hơn như làm toán hạng hơn và hơn trong một vòng lặp chặt chẽ và sau đó định thời gian toàn bộ quá trình. Ngoài ra, những người khác đã đo thời gian của hướng dẫn và bạn chỉ có thể kiểm đếm thời gian của các toán hạng dựa trên mã assembly được tạo ra. –

Trả lời

1

Tôi nghĩ rằng this có thể hữu ích. Cá nhân tôi sẽ thực hiện một số vòng lặp với số lần lặp khác nhau (bắt đầu từ ví dụ 10 và kết thúc tại 100 000). Tương tự như so sánh các phương pháp sắp xếp.

ofc, nếu bạn cần phương pháp phức tạp hơn, bạn có thể sử dụng móc hiệu suất được đề cập trước đây.

Các vấn đề liên quan