Warning: Constant WP_MEMORY_LIMIT already defined in /home/caocap/public_html/wp-config.php on line 103

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/caocap/public_html/wp-content/plugins/fixed-toc/frontend/html/class-dom.php on line 98
Tính thời gian chạy chương trình trong C/C - friend.com.vn - Friend.com.vn

Tính thời gian chạy chương trình trong C/C – friend.com.vn


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/caocap/public_html/wp-content/plugins/fixed-toc/frontend/html/class-dom.php on line 98

do thoi gian thuc hien chuong trinh

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:

tinh thoi gian chay cua thuat toan c

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *