So sánh các phương thức lặp: số lần lặp so với thời gian cpu


14

Tôi đang so sánh hai phương pháp lặp để đảo ngược ma trận vuông ngẫu nhiên. Vì các ma trận là ngẫu nhiên, mọi trường hợp thử nghiệm đều có cả số lần lặp khác nhau và thời gian trôi qua khác nhau. Câu hỏi của tôi là, trên thời gian CPU trung bình, là giá trị trung bình của các lần lặp được thực hiện bởi cả hai phương thức thông tin hữu ích để so sánh các phương thức.


4
Tôi sắp xếp lại câu hỏi của bạn để hy vọng làm cho nó rõ ràng hơn. Hãy chắc chắn rằng tôi đã không thay đổi ý nghĩa của bạn theo bất kỳ cách nào.
Godric Seer

3
@GodricSeer Chỉnh sửa của bạn đã cải thiện câu hỏi của tôi. Cảm ơn
srijan

Câu trả lời:


12

Nhìn chung, cả hai phương pháp so sánh hiệu suất đều có vị trí của chúng.

  • So sánh thời gian cpu là một số liệu thú vị nhất, bởi vì vào cuối ngày, bạn thực sự quan tâm đến phương pháp nào nhanh hơn. (Nhưng đảm bảo rằng các tiêu chí chấm dứt có thể so sánh được, ví dụ: cả hai phương pháp đều mang lại một xấp xỉ với cùng độ chính xác). Hạn chế là điều này chỉ cho bạn biết phương pháp nào (và quan trọng hơn là triển khai ) nhanh hơn trên máy bạn đã thực hiện các thử nghiệm trên. Không có gì đảm bảo rằng một máy khác với kiến ​​trúc hoặc phần mềm khác nhau sẽ chọn cùng một người chiến thắng.

  • Mặt khác, so sánh các số lần lặp là độc lập với máy, nhưng có khả năng gây hiểu lầm nếu hai phương thức có các lần lặp rất khác nhau - trong trường hợp này phương pháp với các lần lặp ít hơn nhưng đắt hơn có thể không thích hợp hơn (ví dụ: phương pháp Newton so với phương pháp gradient để tối ưu hóa nếu bạn chỉ cần độ chính xác rất thấp).

Vì vậy, vâng, thật hợp lý khi đưa ra cả hai con số [1] và tôi thường thấy nó được thực hiện trong các ấn phẩm. Ngoài ra còn có một lựa chọn thứ ba:

  • So sánh số lượng các hoạt động cơ bản . Nếu cả hai lần lặp bao gồm cùng một loại hoạt động đắt tiền phù hợp, nhưng yêu cầu một số khác nhau (thậm chí có thể không phải là cùng một số trong mỗi lần lặp), thì việc đếm tổng số các hoạt động này là hợp lý. Trong trường hợp của bạn, một ứng cử viên có khả năng sẽ là phép nhân ma trận-vectơ hoặc ma trận.

[1] Chắc chắn trình bày số liệu thống kê qua nhiều lần chạy; nếu bạn hiển thị phương tiện, đừng quên bao gồm độ lệch chuẩn.


5
Đừng chỉ dùng phương tiện! Nếu bạn có đủ điểm kiểm tra với đầu vào ngẫu nhiên, hãy vẽ sơ đồ phân phối.
Bill Barth

1
@BillBarth - điểm tốt, mặc dù điều đó có thể không phải lúc nào cũng khả thi; nhưng luôn luôn đưa ra độ lệch chuẩn cùng với giá trị trung bình. Trong thực tế, số liệu thống kê để trình bày để báo cáo hiệu suất nghe có vẻ như là một câu hỏi tiếp theo tuyệt vời.
Christian Clason

@BillBarth Bạn đã làm một điểm tốt. Nhưng, tôi đang sử dụng một số ma trận thử nghiệm theo thứ tự tăng dần. Đối với những trường hợp như vậy, không thể lập sơ đồ phân phối kể từ đó tôi phải vẽ sơ đồ phân phối cho tất cả các ma trận thử nghiệm khác. Đó là lý do tại sao tôi muốn lập bảng cho họ. Cảm ơn ý kiến ​​của bạn.
srijan

1
@srijan: Bạn sẽ có dữ liệu, bạn nên vẽ biểu đồ cho chính mình bất cứ nơi nào bạn có thể. Bạn không cần phải xuất bản tất cả, nhưng tôi hứa với bạn rằng một biểu đồ phân phối sẽ cho bạn biết nhiều hơn một biển số hoặc chỉ là mức trung bình từng có.
Bill Barth

Tôi sẽ bao gồm thời gian thực hiện mỗi lần lặp. Vì mỗi ma trận là khác nhau, bạn có thể có số lần lặp khác nhau với thời gian thực hiện khác nhau. Cùng với những gì @Cristian nói, thời gian thực hiện trên mỗi lần lặp sẽ hữu ích.
jbcolmenares

4

Tôi thấy số lần lặp là một số liệu sai lệch bởi vì nó gợi ý "tốc độ" khi nó không. Để biết một ví dụ đơn giản về việc so sánh một vài điều kiện tiên quyết khác nhau cho thấy sự khác biệt này, hãy xem tại đây: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possabilitiesforxtensions


Cảm ơn câu trả lời. Tôi không thể hiểu số lần lặp này của dòng này là một số liệu sai lệch bởi vì nó gợi ý "tốc độ" khi nó không ". Ví dụ mà bạn đã gợi ý là hơi khó hiểu đối với tôi.
srijan

Điều tôi đang nói là chúng ta thường trình bày "số lần lặp" tương đương với "thời gian CPU được sử dụng", ngụ ý rằng một phương pháp yêu cầu số lần lặp ít hơn cũng nhanh hơn. Nhưng điều đó không đúng, như thể hiện trong các số liệu tôi liên kết đến.
Wolfgang Bangerth

Bây giờ, tôi hoàn toàn hiểu quan điểm của bạn. Tương tự tôi đã quan sát với phương pháp newtons để xấp xỉ nghịch đảo của ma trận vuông. Thứ tự của phương thức tăng lên, ban đầu thời gian cpu cũng như số lần lặp đều giảm nhưng khi thứ tự tăng thì thời gian cpu bắt đầu tăng ngay cả khi số lần lặp giảm. Cảm ơn bạn rất nhiều vì câu trả lời của bạn.
srijan

2

Trong trường hợp không rõ ràng trong các câu trả lời khác, số lần lặp nào là tốt cho các đối số big-O.

Nó không tốt cho tốc độ tuyệt đối, bởi vì điều đó phụ thuộc vào thời gian trung bình mỗi lần lặp, có thể khác nhau giữa các phương thức bởi một yếu tố lớn.

Ví dụ, có xu hướng bỏ qua chi phí tính toán các chỉ số mảng và điều đó có thể chiếm một phần lớn thời gian của CPU.

THÊM: Ngoài ra, như tôi đã chỉ ra ở nơi khác, cho mỗi lần gọi phương thức thường có chi phí thiết lập. Sau đó, nếu các ma trận thường không lớn lắm, thì chi phí thiết lập đó có thể chiếm một phần lớn thời gian của CPU (như vậy việc loại bỏ nó sẽ tạo ra sự khác biệt lớn về tốc độ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.