lf) do begin Start; // Place code to measure here Sleep(1000); // Place code to measure here Edit1.Text:=Read; Free; end; end; end. 二、三种方法的精度比较 为了比较,采用以上3种方法,分别设置延时时间为1ms、2ms、5ms、10ms、20ms、50ms、100ms、200ms、500ms、1000ms,循环次数为5次,得到实际的延时时间。 1)TTtimer控件 实际延时时间(ms) 1ms: 8.012 21.551 6.875 21.647 9.809 2ms: 9.957 20.675 14.671 11.903 20.551 5ms: 9.952 20.605 9.924 20.705 12.682 10ms:14.852 9.96 21.547 9.82 20.634 20ms:27.512 34.291 26.427 31.244 30.398 50ms:61.196 61.307 64.027 62.048 63.059 100ms:102.495 108.408 112.318 110.322 102.531 200ms:193.955 202.135 207.016 205.082 202.194 500ms:496.659 500.534 503.398 495.551 500.394 1000ms:999.699 1003.576 993.698 1004.443 995.625 2)Sleep函数 1ms: 1.895 1.895 1.896 1.897 1.898 2ms: 2.868 2.874 2.852 2.872 2.869 5ms: 5.8 5.797 5.79 5.79 5.791 10ms:10.675 10.683 10.611 10.669 10.67 20ms:20.404 20.434 20.447 20.477 20.368 50ms:50.67 50.691 50.69 50.682 50.671 100ms:100.515 100.469 100.484 100.481 100.484 200ms:200.101 200.126 199.892 200.066 200.108 500ms:499.961 499.961 499.958 499.961 499.96 1000ms:1000.034 1000.04 1000.03 1000.018 1000.029 3)GetTickCount函数 1ms: 15.54 15.596 15.527 15.566 15.838 2ms: 15.561 15.563 15.603 15.477 15.571 5ms: 15.519 15.549 15.569 15.666 15.394 10ms:15.558 15.561 15.522 15.568 15.518 20ms:31.186 31.137 31.17 31.17 31.19 50ms:62.445 62.4 63.893 60.88 62.404 100ms:109.276 109.298 109.273 109.28 109.28 200ms:203.027 203.084 203.021 203.027 203.046 500ms:499.959 499.961 499.963 499.967 499.965 1000ms:1000.023 1000.022 1000.026 1000.029 1000.021 可见,相对而言,Sleep的精度最高,尤其是在10ms以内的延时,只有sleep函数才能够做到。TTimer控件的定时精度最差,而且稳定性不好,波动很大。GetTickCount函数所能实现的最短延时为15ms左右,稳定性相对TTimer要好一些。
上一页 [1] [2] |