精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 群件>>个人专集>>kamkam专集>>Domino应用程序优化之八:脚本语言

主题:Domino应用程序优化之八:脚本语言
发信人: kamkam(KK)
整理人: kamkam(2002-05-04 21:58:47), 站内信件
1.谨慎是用redim命令,可以理解,每次redim,是内存堆数据的乾坤大挪移,所以尽可能事先决定数组大小。实在没有办法,也千万不要在循环中redim。以下例子A比B快20%
A
For i = 1 to 10000
  If ( i> iMax) then
     iMax = iMax + 100
     redim Preserve sArray(1 to iMax)
  end if
  sArray(i) = ""
Next

B
For i = 1 to 10000
  Redim Preserve sArray(1 to i)
  sArray(i)=""
Next
以上实际是减少redim的次数,每次增加多些,循环后可能还需要一次redim,让数组空间和实际一致

2.在多维数组中循环,应使用正确的顺序。在外循环中操作后面的维数,在内循环中操作前面的维数(这个最奇怪了,估计跟数组的内存排放有关),下面的例子A比例子B快400%!(实际测试,500的PIII,看不出差别,都很快,当我再想增大数组元素个数的时候,宣称已经超过32K限制了,faint!看来意义不大)
A
For y = 0 to 2
  for q = 0 to 5000
    z = z + x(q,y)
  Next
Next

B
For q = 0 to 5000
  For y = 0 to 2
    z = z + x(q,y)
  next
next

3.比较整数,而不是比较字符串,下面的例子A比例子B快50%,例子C比例子D快30%
A  If(Asc(x$) = Asc("A")) then 
B  If(Left$(X$,1) = "A") then
C  If(Asc(Mid$(x$ , 1, 1) = "A") then
D  If(Mid$(x,1,1) = "A") then
下面比较空串的例子E也比例子F快30%
E  If (Len(x$) = 0) then
F  If (x$="") then

4.将数字转为字符串的时候使用自动造型,不用手工转换,例如 s2$ = "Text" & iNum 比s2$="Text & Cstr(iNum%) 稍微快一点,不过不明显

5.重要:避免过多使用环境变量。环境变量要读取notes.ini文件,对性能造成影响,替代办法是使用profile。如果一定要使用环境变量,将多个环境变量合并成一个,用特殊符号分隔,取出来后再分析成多个。取10个单独的环境变量要比取一个长的环境变量多花10倍时间!


----
---------------
海             

[关闭][返回]