vfp循环耗时过长,可以优化吗?

augustX 2004-09-21 05:26:27
机器:PIII-733/384M/WIN2000P
codes:

SET TALK OFF
SET STATUS bar OFF
SET ESCAPE OFF

a=SECONDS()
b = 0
FOR i = 1 TO 1000
FOR j = 1 TO 1000
FOR k = 1 TO 1000
b = b+1
b = b-1
ENDFOR
ENDFOR
ENDFOR
?SECONDS() - a

这个程序居然跑了20分钟没出来被我中断了
我测试一层循环1000000000次也要120多秒
可delphi7中3秒左右就完成了上述codes
大大超出我的想象
请问原因
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aabiao 2004-10-11
  • 打赏
  • 举报
回复
很正常。不过没人吃饱了没事干,光空循环不干事的。
VFP的数值型不再分整形、双精度等,而是内部一律用8字节表示,相当于双精度,慢点也正常。
cxmcxm 2004-10-10
  • 打赏
  • 举报
回复
对解释语言,不可能有高效率,但有其灵活性,象宏替换,编译语言就没那么容易就实现.
也不可能象解释语言那样即打即出
如: ?1000*500 这样的东东,编译语言实现起来就很麻烦.
cdbqss1 2004-10-08
  • 打赏
  • 举报
回复
没用过vc及delphi,看不出vfp的代码效率这么低。
machine123 2004-10-08
  • 打赏
  • 举报
回复
I see
Hewiit 2004-09-27
  • 打赏
  • 举报
回复
学习
xclzteb 2004-09-27
  • 打赏
  • 举报
回复
对于你的情况,我想最好是修改程序的结构,减少循环嵌套的层次就是解决办法(除非你你不用VFP写这段代码)!
十豆三 2004-09-27
  • 打赏
  • 举报
回复
不同语言,有他的优点,也有他的缺点,楼主提出的问题体现不出来VFP的优点,但其他方面有优点只是与本题无关罢了。这种问题是正常的。
sbw 2004-09-26
  • 打赏
  • 举报
回复
"可delphi7中3秒左右就完成了上述codes 大大超出我的想象"

我使用VC6完成你的代码几乎不耗时间,是不是大大大大超出你的想象?究其原因是因为VC6把循环给优化掉了。不论b+1也好,b-1也好VC只赋初值了事。遂用汇编完成你的代码,这次是货真价实循环,P4 2.4使用了1.1秒,P3 600 使用了14秒。VFP是解释性语言,你要它循环那么多次,确实勉为其难。对于循环的原则是:在完成目标的前提下,循环体内尽可能的少的代码。还有一种优化方法,可能钱要用的多一些:把你的机子优化掉,换成曙光。
十豆三 2004-09-22
  • 打赏
  • 举报
回复
FOR j = 1 TO 1000
FOR k = 1 TO 1000
b = b+1
b = b-1
ENDFOR
ENDFOR

用了0.978秒
----------------------------------
FOR j = 1 TO 1000
FOR k = 1 TO 1000
b = b+1
ENDFOR
ENDFOR

用了0.521秒
----------------------------------
FOR i = 1 TO 1000
FOR j = 1 TO 1000
FOR k = 1 TO 1000
b = b+1
b = b-1
ENDFOR
ENDFOR
ENDFOR
用了16分种
----------------------------------
FOR i = 1 TO 1000
FOR j = 1 TO 1000
FOR k = 1 TO 1000
b = b+1
ENDFOR
ENDFOR
ENDFOR
用了8分多种


我机子为C2.4,256MB DDR WIN2000P

JohnShen 2004-09-21
  • 打赏
  • 举报
回复
你这个没法优化,这也不是vfp的特长,实在要优化你可以将关键代码用其它语言写成dll文件,在vfp中调用吧。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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