C/C++

Cách đo thời gian thực thi của một function trong C/C++

Giới thiệu

Trong một số trường hợp chúng ta cần đo thời gian thực thi của một function hay một thuật toán nào đó. Điển hình nhất là các thuật toán tìm kiếm và thuật toán sắp xếp.

Hoặc khi xử lý hình ảnh hay 1 frame trong video thì số lượng pixel là rất lớn và làm sao chúng ta biết được thời gian chúng ta xử lý chúng là bao nhiêu và hiệu quả hay không. Thì việc đó thời gian thực thì là rất cần thiết.  Thư viện time.h trong C/C++ có hổ trợ cho chúng làm việc đó. Cách sử dụng thư viện này được giới thiệu ngay dưới đây.

Thư viện sử dụng

Thư viện time.h là một thư viện được xây dựng sẵn trong C. Và nó thường sử dụng để tính toán về thời gian.

Trong C/C++ để sử dụng thư viện này đơn giản chúng ta chỉ cần include thư viện này vào những file nào chúng ta cần dùng

Cấu trúc dữ liệu và function trong time.h

clock(): Hàm này trả về số tick từ khi chương trình được chạy ()

clock_t: Là kiểu mà hàm clock trả về. Thực chất clock_t là kiểu unsinged long và được define như sau:

Marco CLOCKS_PER_SEC là giá trị tick tắc đồng hồ trên 1 giây (number of clock ticks per second). Trong hệ thống 32 bit được define như sau:

Cách sử dụng thư viện time.h để đo thời gian thực thi của function

Mô hình làm việc của chúng ta như sau:

Trước function chúng ta cần đó thực thi chúng ta gọi lệnh clock() để lấy về thời gian start, và sau function chúng ta cần đo thời gian end. Sau đó chúng ta lấy hai thời gian đó trừ cho nhau mà chia cho macro CLOCKS_PER_SEC.

Dưới đây mình sẽ do thời gian thực thi của hai thuật toán đó làm interchangeSort và selectionSort.

Interchange Sort

Kết luận

Thông thường chúng ta thường rất ít khi đo thời gian thực thi của một function như thế nào. Nhưng cách này lại là một cách thực tế để đo độ phức tạp của thuật toán. Xem thuật toán của chúng ta chạy nhanh hay chậm.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.