Hôm trước có record video về Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản không thấy các bạn cho ý kiến gì, không hiểu có tốt không nữa, nếu k tốt thì sẽ dừng lại làm việc khác 🙂
Hôm nay xin giới thiệu một công cụ đơn giản trong Matlab để tính toán thời gian chạy 1 hàm, chương trình trong Matlab. Thực sự cái này không hề biết là có đảm bảo tính thời gian thực hay không, bởi vì nó phụ thuộc vào PC có bao nhiêu CPU, hệ điều hành có Real-time không ? Do đó, thời gian này là chỉ là thời gian tính từ lúc chạy đến kết thúc, chưa chắc là thời gian thực sự cần để chạy chương trình đó, vì trong lúc chạy thì hệ điều hành Windows còn chạy vài ứng dụng vớ vẩn khác. Nếu chạy trong hệ điều hành Real-Time thì mới biết là đúng dc.
Cách thực hiện rất đơn giản, giống như là bạn có 1 cái đồng hồ điện tử, nếu muốn tính toán thời gian thì ban đầu phải xem giờ là mấy giờ rồi, sau đó nhớ vào, rồi khi xong công việc xem lại rồi trừ đi là ra. Thì thằng Matalb cũng làm vậy.
Cách 1: Dùng TIC/TOC
Để biết tic, toc là gì, nên tự tìm hiểu qua với Help rất đầy đủ. Cú pháp đơn giản như sau:
tic; any_statements; tElapsed = toc;
Như vậy chương trình hay hàm gì gì đó thì vứt vào trong 2 cái tic, toc là xong. Giá trị trả về sẽ được cho vào 1 biến tElapsed hoặc cái nào tùy ý bạn.
Ví dụ sử dụng:
for n = 1:100 A = rand(n,n); b = rand(n,1); tic x = A\b; t(n) = toc; end plot(t)
Cách 2: Dùng etime
Cái này hơi khác trên kia tẹo, cách thực hiện thực sự là theo nguyên tắc mình nói ở trên đầu. Đầu tiên phải lấy thời gian hiện tại dùng hàm clock, rồi sau đó trừ thời gian đi bằng lệnh etime để tính ra sai lệch. Gõ help etime để xem thêm.
Ví dụ đơn giản để sử dụng:
x = rand(800000, 1);
t = clock; fft(x); a = etime(clock, t)
Trong Help của Matlab khuyên dùng TIC/TOC nhưng chuyên gia của Mathworks lại khuyên dùng etime khi dùng với GUI tại đây.