问一个有关TIMER控件的问题

xinxinshou2009 2010-01-13 04:53:08
我现在需要在程序里对许多数据进行大量、连续的计算,打算用timer控件,时间设定为500毫秒,也就是每秒计算两次。而每次计算需要把约2000个数据累加求平均值。我想请教一下,以目前主流电脑的计算速度,能应付这么大、这么快的计算量嘛?

现在的实际情况,需要累计的这些数据,都是10000以内的整数,比如3000,3100,等等,并且求出的平均值也是采用了取整,可是现在得出的结果很不正常,居然有负数,而我的数据源里的数据全部是正值,没有负的。程序段看下来也好像没什么错误,不知道是不是由于计算量太大,半秒的时间来不及计算而导致错误的结果。请高手指点, 谢谢
...全文
81 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxinshou2009 2010-01-14
  • 打赏
  • 举报
回复
问题自己解决了,不在timer控件之内,是外部一个数值搞错了。虽然500毫秒的时间很短,但是这么大的计算量依然能够顺利进行,现在的电脑运算速度真不是吹的。也谢谢各位朋友的指点,结贴了
xinxinshou2009 2010-01-13
  • 打赏
  • 举报
回复
就是类似以下的代码:
a:=0; b:=0;
for k:=1000 downto 1 do
begin
a:=a+round(strtofloat(sl[k]));
b:=b+round(strtofloat(sl[k]));
end;
c:=round(a/1000);
d:=round(b/1000);

其中sl是一个stringlist,没有其他任何语句了,不知道是否会引起溢出
liangpei2008 2010-01-13
  • 打赏
  • 举报
回复
很可能是由于数据类型溢出而导致的负数!
1.可能累加数据溢出
2.Timer中如果有Application.ProcessMessage,则可能由于过程重入导致计算混乱,产生溢出
xinxinshou2009 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 supertitan001 的回复:]
好长时间没有看见你了,呵呵

如果是纯粹的加法和一次除法,按理说时间是足够了
出现负数会不会是你定义的是整型变量范围小了,比如smallint,超过32000多,就变负数了
[/Quote]

呵呵,最近特别忙,估计春节前都不会有休息的时间,所以来的少了。
计算过程就是你说的纯粹的加法,然后一次除法。另外,定义的整型变量是用的integer,会不会是2000个integer相加会超出范围?我感觉应该不会吧
SuperTitan001 2010-01-13
  • 打赏
  • 举报
回复
其实线程用delphi封装的tthread很简单的
idecl 2010-01-13
  • 打赏
  • 举报
回复
速度应该是没有问题了,看你的算法怎么写了
xinxinshou2009 2010-01-13
  • 打赏
  • 举报
回复
具体的速度测试,我没做过,但是现在有这么个情况:

总数据量非常庞大,我现在是按照每次timer跳动,然后依次顺序选择其中的约2000个数据进行一次计算,这就出现了我说的这个错误。但是如果不采用timer控件,对所有数据一次性的进行总运算,在花费约15秒时间后就全部计算结束了,而且计算结果是准确的,没有错误。所以我怀疑是不是500毫秒的时间太短了,根本不够计算的
SuperTitan001 2010-01-13
  • 打赏
  • 举报
回复
好长时间没有看见你了,呵呵

如果是纯粹的加法和一次除法,按理说时间是足够了
出现负数会不会是你定义的是整型变量范围小了,比如smallint,超过32000多,就变负数了
mdejtod 2010-01-13
  • 打赏
  • 举报
回复
那可以试试在计算过程中用临界区保护起来...
xinxinshou2009 2010-01-13
  • 打赏
  • 举报
回复
to mdejtod :计算过程中没有进行任何操作

to bdmh老师:timer使用简单一点,线程方面的知识,还不是很熟悉
dd_zhouqian 2010-01-13
  • 打赏
  • 举报
回复
用线程吧
bdmh 2010-01-13
  • 打赏
  • 举报
回复
能不能应付,你自己需要测试一下,这个很难说,影响因素比较多,为什么要用timer,可以考虑用线程
mdejtod 2010-01-13
  • 打赏
  • 举报
回复
在计算过程中,没有改变原来的输入值吧?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧