Cách đo, tính thời gian chạy của một chương trình, function, thuật toán trong C/C++ sử dụng hàm thời gian. Giúp bạn kiểm tra độ phức tạp và tối ưu thuật toán của mình một cách tốt nhất.
Mục lục bài viết
1. Đặt vấn đề
Thời gian chạy của một chương trình chính là thời gian từ lúc bắt đầu cho tới khi chương trình kết thúc. Thông thường ta thường đo thời gian của một hàm, một thuật toán nào đó. Chủ yếu là dùng để đánh giá độ phức tạp, tốc độ và khả năng tối ưu của chương trình.
Biết được thời gian xử lý của thuật toán sẽ giúp người lập trình đưa ra được các phương pháp xử lý cần thiết. Có thể chúng ta sẽ làm giảm được thời gian chạy của chương trình, tối ưu thuật toán của mình một cách tốt nhất.Thường áp dụng vào kiểm tra: Thuật toán sắp xếp, thuật toán đệ quy, duyệt cây. . .
Tóm lại thứ chúng ta cần là kiểm tra được thời gian để phục vụ các mục đích khác nhau.
2. Cách tính thời gian chạy trong C/C++
Ngôn ngữ C/C++ có cung cấp một thư viện thời gian time.h cung hàm clock() giúp trả về thời gian hiện tại. Dựa vào đặc điểm này ta có thể tính được thời gian từ khi bắt đầu đến khi kết thúc thuật toán.
Ý tưởng:
Khai báo biến để lấy thời gian lúc bắt đầu: start = clock();
Khai báo biến thứ 2 để lấy thời gian lúc kết thúc: end = clock();
Khai báo thêm một biến time_used dùng để lưu thời gian chạy
Thời gian chạy sẽ bằng lúc kết thúc trừ lúc bắt đầu.
Công thức:time_used = (end-start)/CLOCK_PER_SEC;
CLOCK_PER_SEC là một tích tắc trong một giây. Hàm clock() trả về thời gian là tích tắc cho nên mới có công thức bên trên
Cú pháp khai báo biến: clock_t <tên biến>clock_t là một kiểu dữ liệu được định nghĩa sẵn trong thư viện time.h
Ví dụ đo thời gian chạy của thuật toán tìm n!:
// By: friend.com.vn/ #include<iostream> #include<time.h> // Thư viện thời gian using namespace std; // tinh N giai thua su dung de quy int factorial(int n) if(n==1) return 1; return(n*factorial(n-1)); void solve() int n; cout<<“Nhap n: “; cin>>n; clock_t start, end; // Khai báo biến thời gian double time_use; // Thời gian sử dụng start = clock(); // Lấy thời gian trước khi thực hiện thuật toán cout<<“Giai thua cua “<<n<<” la: “<<factorial(n)<<endl; // Thực hiện thuật toán end = clock(); // lấy thời gian sau khi thực hiện time_use = (double)(end – start) / CLOCKS_PER_SEC; //Tính thời gian sử dụng cout<<“Thoi gian chay factorial(n): “<<time_use;
Trong ví dụ, mình đã đo thời gian thuật toán factorial(n) trong thân hàm solve.Kết quả chạy ví dụ trên:
3. Lời kết
Qua bài viết này, hi vọng các bạn sẽ nắm được cách đo thời gian trong lập trình C/C++ và phục vụ được cho mục đích học tập nghiên cứu của mình. Nếu bạn có bất kì thắc mắc, góp ý nào, để lại comment xuống phía dưới bài viết nhé!
Xem thêm các bài viết về lập trình của mình tại đây.
- Share CrocoBlock key trọn đời Download Crocoblock Free
- Cung cấp tài khoản nghe nhạc đỉnh cao Tidal Hifi – chất lượng âm thanh Master cho anh em mê nhạc.
- Đọc hàng nghìn tạp chí báo in quốc tế & Việt Nam với tài khoản Magzter và tài khoản Readly
- Tải Công Thành Xưng Đế Mobile – Download Game công thành Tam Quốc trên
- Tân Anh Hùng Xạ Điêu sắp chiếu, Quách Tĩnh – Hoàng Dung gây thất vọng
- 20 món ăn ngày tết miền Trung ngon, lạ miệng ít người biết
- Hướng dẫn đăng ký gói MIMAX sinh viên Viettel mới nhất