Hàm clock() trong ngôn ngữ C

Ham Clock Trong Ngon Ngu C



trong này Gợi ý Linux bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng cái đồng hồ() chức năng, một trong những tài nguyên có sẵn trong ngôn ngữ C, để đo thời gian thực hiện của một quy trình hoặc luồng cụ thể.

Mặc dù những khoảng thời gian này dường như không đáng kể, nhưng có những trường hợp quan trọng trong đó khả năng đo lường và tính toán những khoảng thời gian nhỏ này là những yếu tố quan trọng đối với độ chính xác của hệ thống hoặc chính quy trình. Chúng tôi sẽ đưa ra một mô tả lý thuyết về cách cái đồng hồ() hoạt động, giải thích hoạt động của nó và các đơn vị đo lường mà nó sử dụng cho mục đích này.







Sau đó, bằng cách sử dụng các ví dụ thực tế bao gồm các đoạn mã và hình ảnh, chúng ta sẽ thấy cách bạn có thể triển khai chức năng này một cách rõ ràng và chi tiết để đo thời gian quan trọng trong các quy trình thời gian thực trong các hệ thống khác nhau.



Clock() Cú pháp hàm:



clock_t đồng hồ ( khoảng trống )





Clock() Mô tả chức năng bằng ngôn ngữ C

Hàm clock() trống khi được gọi. Nó không chứa đối số đầu vào và trả về số tích tắc của đồng hồ trong “clock_t” tại thời điểm gọi.

Số xung bắt đầu từ 0 khi ứng dụng được khởi động và tiếp tục cho đến khi người dùng hoặc hệ thống thoát khỏi ứng dụng, đặt lại về 0 do tràn trong khoảng 72 phút một lần. Chức năng clock() không sửa đổi hoặc có quyền kiểm soát bộ đếm này; nó chỉ nhận được giá trị của nó khi được gọi.



Để đo tổng thời gian thực hiện của chương trình, chúng ta chỉ cần gọi clock() một lần duy nhất khi kết thúc chương trình. Để đo thời gian trôi qua từ điểm này đến điểm khác của chương trình, chúng ta cần gọi hàm clock() và tính toán hai dữ liệu thu được.

Việc tính toán để xác định số tích tắc đã trôi qua giữa hai lần gọi của cái đồng hồ() chức năng được thực hiện bằng cách trừ kết quả của cuộc gọi đầu tiên từ kết quả của cuộc gọi thứ hai. Chúng ta hãy xem một ví dụ để xác định lượng thời gian đã trôi qua từ điểm này đến điểm khác của chương trình.

Các cái đồng hồ() chức năng được xác định trong chức năng tiêu đề “time.h”. Chúng tôi phải đưa nó vào tệp mã “.c” hoặc “.h” của chúng tôi, như minh họa trong hình ảnh sau đây, để sử dụng nó.

#include

Cách lấy các tích tắc đồng hồ đã trôi qua từ một điểm trong chương trình sang một điểm khác bằng chức năng Clock()

Trong ví dụ này, chúng ta sẽ xem cách lấy số tick đã trôi qua từ điểm này đến điểm khác trong chương trình. Hai điểm này tương ứng với một trong hai lệnh gọi đến cái đồng hồ() chức năng, tương ứng. Để hiểu điều này, hãy xem đoạn mã sau:





#include

#include



khoảng trống chính ( )



{

clock_t ticks_ini, ticks_end;

dấu tích kép;

ticks_ini = đồng hồ ( ) ; // đo bắt đầu

bản inf ( 'đánh dấu khởi tạo thước đo %ld \N ' , ticks_ini ) ;

( int một = 0 ; một < = 456450 ; một ++ ) ;



ticks_end = đồng hồ ( ) ; // đo dừng

ticks = ticks_end - ticks_ini;

bản inf ( 'đánh dấu kết thúc biện pháp  %ld \N ' ,  tick_end ) ;

bản inf ( 'các tích tắc đã trôi qua giữa các lần đo  %f \N ' ,  tích tắc ) ;

trở về ;

}



Đầu tiên, chúng ta tạo hai biến, ve_ini ticks_end , trong đó chúng tôi lưu trữ kết quả của clock() trong hai lệnh gọi của nó. Chúng tôi tính toán nó để lấy số lượng tích tắc đã trôi qua và số nguyên bọ ve , trong đó chúng tôi lưu trữ kết quả cuối cùng của tổng số tích tắc đã trôi qua.

Sau đó, chúng tôi gọi các cái đồng hồ() chức năng trong “chính” của chúng tôi và truy xuất các tích tắc đồng hồ đã xác định trước đó trong ve_ini biến đã trôi qua kể từ khi bắt đầu chương trình cho đến khi gọi hàm này lần đầu tiên. Chúng ta sử dụng hàm printf() để hiển thị giá trị này.

Sau sự chậm trễ này, mà chúng tôi đã tạo ra với , chúng tôi gọi là cái đồng hồ() chức năng lần thứ hai để lấy số tick cho đến thời điểm này. Ta xuất kết quả ra màn hình bằng hàm printf(). Sau đó, chúng tôi nhận được kết quả của số tích tắc chính xác đã trôi qua giữa các cuộc gọi đầu tiên và thứ hai đến cái đồng hồ() bằng cách trừ ve_ini từ ticks_end và lưu trữ kết quả trong biến tick, mà chúng ta xuất ra bàn điều khiển bằng printf().

Bằng cách này, chúng tôi nhận được các dấu tích đã trôi qua từ điểm này sang điểm khác trong mã.

Cách chuyển đổi số lượng tick thu được thành giây bằng hàm Clock()

Khi chúng ta có số tích tắc đã trôi qua kể từ khi chương trình bắt đầu hoặc từ điểm này sang điểm khác, chúng ta có thể chuyển đổi thời gian này được biểu thị bằng tích tắc thành giây bằng cách chia kết quả của ví dụ trước cho hằng số được xác định trước theo thời gian.h ĐỒNG HỒ _PER_ GIÂY, như thể hiện trong đoạn trích sau:

ve = ( ticks_end - ticks_ini ) / ( kép ) CLOCKS_PER_SEC;

bản inf ( 'các tích tắc trôi qua sau vài giây giữa lần đo  %f \N ' ,  tích tắc ) ;

Sự kết luận

trong này Gợi ý Linux bài viết, chúng tôi đã chỉ cho bạn cách triển khai cái đồng hồ() chức năng thực hiện các phép đo thời gian theo tích tắc của đồng hồ hệ thống. Chúng tôi cũng đã giải thích cách bạn có thể đo tất cả hoặc một phần thời gian này trong ứng dụng đang chạy. Chúng tôi đã chỉ cho bạn cách chuyển đổi kết quả thành giây. Chúng tôi hy vọng rằng bạn thấy bài viết này hữu ích. Bạn có thể tìm thêm các mẹo về ngôn ngữ C trong các bài viết của chúng tôi mà bạn có thể tìm thấy bằng cách sử dụng công cụ tìm kiếm của trang web.