首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

为什么编译后运行速度变慢

2012-03-16 
求助:为什么编译后运行速度变慢?我做的是文件共享的网络程序,在开发vfp环境下1秒就刷新的界面,编译后要10

求助:为什么编译后运行速度变慢?
我做的是文件共享的网络程序,在开发vfp环境下1秒就刷新的界面,编译后要10秒左右才能刷新。是否是设置的问题,请高手给以解答。

[解决办法]
在 
SELECT * FROM z:\jxcgl WHERE ALLTRIM(xsdsbm)==ALLTRIM(temp_list_gk_sp.xsdsbm) INTO cursor temp_jxcgl
之前加上
Declare long GetTickCount In kernel32 
lnStartTime = GetTickCount()

并在select 语句之后加上
lnEndTime = GetTickCount()
messagebox(lnEndTime - lnStartTime)
看看数值是多少(单位是毫秒)
[解决办法]
SELECT * FROM z:\jxcgl WHERE ALLTRIM(xsdsbm)==ALLTRIM(temp_list_gk_sp.xsdsbm) INTO cursor temp_jxcgl

这个语句设计时与开发时不应该有性能区别的。

你换个表试试,你换成非映射盘,用本地盘符中的表试试。


[解决办法]
1、先打开表,再SELECT:
SELE 0
USE z:\jxcgl ALIAS jxcgl
SELECT * FROM jxcgl WHERE xsdsbm=temp_list_gk_sp.xsdsbm INTO cursor temp_jxcgl

另外,where条件:ALLTRIM(xsdsbm)==ALLTRIM(temp_list_gk_sp.xsdsbm)
修改为:xsdsbm=temp_list_gk_sp.xsdsbm
这样可以使用vfp的rushmore技术。

2、确保已设置:
SET Collate TO "MACHINE"
vfp开发环境可以存储SET...状态(在注册表中),
但运行环境不会读取注册表中的设置。

3、检查rushmore分析结果:
=SYS(3054,12)


完整的测试代码:

SELE 0
USE z:\jxcgl ALIAS jxcgl

?SET("COLLATE")
=SYS(3054,12)

t1=second()
SELECT * FROM jxcgl WHERE xsdsbm=temp_list_gk_sp.xsdsbm INTO cursor temp_jxcgl
t2=second()
?t2-t1
WAIT

热点排行