01/10/2018, 08:35
Đánh giá thời giá thời gian chạy chương trình
Anh/ chị có thể hướng dẫn em cách đánh gia thời gian chạy chương trình được không ạ?
Bài liên quan
Anh/ chị có thể hướng dẫn em cách đánh gia thời gian chạy chương trình được không ạ?
Chương I Tài liệu chuyên Tin THPT nhé.
Nói thế thôi, bạn cứ nhớ đơn giản là thế này:
Muốn đánh giá đc thời gian chạy chương trình, đầu tiên đánh giá độ phức tạp của code.
-> có m vòng lặp for/while lồng nhau sẽ có độ phức tạp là O(n^k)
Còn thời gian chạy chương trình thì tuỳ thuộc vào bộ nhớ cần sử dụng và cấu hình máy của bạn. Máy tính sẽ chạy khoảng 10^8 phép tính 1s (khoảng thôi, vì nhiều máy khủng hơn sẽ cho thời gian chạy ít hơn)
Kích hoạt một bộ đếm thời gian ở đầu chương trình. Đến cuối chương trình đọc thời gian đã trôi qua từ bộ đếm ta sẽ thu được thời gian thực hiện chương trình tính bằng tick hoặc ms.
Trong .NET nó là Stopwatch, trong C++ QT nó là QElapsedTimer còn các ngôn ngữ khác thì không rõ.
B thử tìm cái này xem Profiling
Profiling (computer programming)
In software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls. Most commonly, profiling information serves to aid program optimization. Profiling is achieved by instrumenting either the program source code or its binary executable form using a tool called a profiler (or code pr...
Em thắc mắc là cái vòng while em không biết độ phức tập của nó như thế nào, tại while chưa chắc là 0(n^k) ạ!
Mình thấy thực nghiệm là chắc ăn nhất với bộ test phù hợp để máy chạy vài giây. Ngoài time thì bạn còn phải lưu ý đến mem nữa.
Còn while 2 vòng vẫn có thể là O(n), như một bài trong hình họa (?) máy tính.
while thì tuỳ trường hợp. Có thể nó chạy 3, 4 lần rồi thoát, nhưng có trường hợp chạy mãi không ngừng.