Một cách khác lấy thời gian thực
Một cách khác lấy thời gian thựcNguyễn Xuân TàiKhi viết một chương trình xong,điều quan trọng nhất là nó phải chạy đúng và thứ hai là thời gian thực hiện. Vìvậy cần phải theo dõi thời gian chạy của chương trình và khả năng tối ưu nó. Nhưchúng ta đã biết ở các số báo trước có giới thiệu một số cách lấy thời gianthực của máy tính để nhằm theo dõi và đánh giá hiệu quả của chương trình.Nhưng các cách được nêu đều cónhược điểm.Nhược điểm của cách 1 đã được nêucụ thể còn nhược điểm chính của cách 2 là phải dùng 4 byte bộ nhớ cho biến Timetrong dòng lệnh sau:Var Time: longint absolute 0: $ 46c;Nhiều khi trong lúc lập trình bạnphải thốt lên: Giá như có thêm 2 biến đếm nữa thì hay biết mấy!. Thưa cácbạn, không có lý do gì để cho biến Time giữ khư khư lấy 4 byte quý giá củachúng ta nữa sau khi bạn đọc xong bài này. Vì chúng ta có thể lấy thời gianbằng một cách rẻ tiền hơn nhiều. Vâng, chúng tôi muốn nói đến mảng Meml.Có một điều xưa như trái đấtrằng: hệ điều hành dành bốn byte bộ nhớ bắt đầu từ địa chỉ $0000:$46c để lưutrữ nhịp làm việc của máy tính. Và vấn đề nằm ở chỗ đó mảng Meml là mảng chophép ta truy xuất bốn byte bộ nhớ bắt đầu từ một địa chỉ xác định. Vì thế tạisao ta lại khai báo một biến time nữa Chắc chắn đến đây các bạn đã hiểu cáchlàm của tôi. Nếu còn chỗ nào chưa được rõ, xin bạn hãy tham khảo chương trìnhngắn sau:Uses crt;Var count:longint;timesaved:longint;beginclrscr;timesaved:=meml[0:$46c];for count:=1 to 10000000 do beginend;writeln(Total timeused:,((meml[0:$46c]-timesaved)/18.21):10:10,seconds.);write(Total CPU clock:,meml[0:$46c]-timesaved,.);readln;end.Ở đây, tôi khuyến nghị lấy mộtgiây là 18.21 nhịp đồng hồ để tăng độ chính xác. Nếu muốn có thể lấy chính xáchơn nữa nhưng thiết nghĩ như vậy là đủ và lại dễ nhớ.Nguyễn Xuân Tài . Một cách khác lấy thời gian thựcNguyễn Xuân TàiKhi viết một chương trình xong,điều quan trọng nhất là nó phải chạy đúng và thứ hai là thời gian thực. theo dõi thời gian chạy của chương trình và khả năng tối ưu nó. Nhưchúng ta đã biết ở các số báo trước có giới thiệu một số cách lấy thời gianthực của