线程执行一遍的最短时间是多少? 如何加快线程的执行速度?
时间:2011-12-28
来源:互联网
我做了一个最简单的线程:
procedure TDataProcssor2.Execute;
begin
SetName;
{ Place thread code here }
while not Terminated do
begin
Form1.memo2.Lines.Add('线程周期开始。。。'+ formatdatetime('nn:ss.zzz', now));
Form1.memo2.Lines.Add('线程周期结束。。。'+ formatdatetime('nn:ss.zzz', now));
sleep(1);
end;
end;
每执行一遍 Sleep(1),但结果却大大出乎意料:线程执行过程不点时间,但从线程执行完,到再次进入线程执行之间的时间间隔约为16毫秒,将线程的优先级设为最高效果也一样。
同样使用定时器TTimer,将Interval设置为1,定时器的执行的间隔也约为16毫秒。
---------------------------------------------
我想获得一个更加快速的循环执行过程,用于数据处理,不知道可以使用什么方式,请高手赐教。
procedure TDataProcssor2.Execute;
begin
SetName;
{ Place thread code here }
while not Terminated do
begin
Form1.memo2.Lines.Add('线程周期开始。。。'+ formatdatetime('nn:ss.zzz', now));
Form1.memo2.Lines.Add('线程周期结束。。。'+ formatdatetime('nn:ss.zzz', now));
sleep(1);
end;
end;
每执行一遍 Sleep(1),但结果却大大出乎意料:线程执行过程不点时间,但从线程执行完,到再次进入线程执行之间的时间间隔约为16毫秒,将线程的优先级设为最高效果也一样。
同样使用定时器TTimer,将Interval设置为1,定时器的执行的间隔也约为16毫秒。
---------------------------------------------
我想获得一个更加快速的循环执行过程,用于数据处理,不知道可以使用什么方式,请高手赐教。
作者: vipdb003 发布时间: 2011-12-28
这个问题其实没有意义,假设同样代码的前提下线程执行的时间是要看cpu分配给他的时间片,window线程时间片分配机制中优先级,等待时间以及其他线程等等都可以影响线程执行的时间,从线程执行完到再次进入线程执行之间的时间间隔更是要看windows脸色说话,所以理论上同一个线程两次执行的时间可能也是不同的,而且你举了timer的例子,用那玩意统计时间比线程还不靠谱
作者: funxu 发布时间: 2011-12-28
那就别加sleep(1),sleep一次最少睡眠一个时间片,另外你不能直接在线程中操作VCL,会导致出错,输出调试信息可以使用OutputDebugString
作者: pathletboy 发布时间: 2011-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28