vb语句占cpu很大

来源:百度知道 编辑:UC知道 时间:2024/09/22 14:41:57
我这里有这样一个程序,是个17*17的map,然后把他们一行行以文本形式保存,占用cpu非常猛,不知道为什么?谢谢~~
For i = 0 To 16
For j = 0 To 16
MSFlexGrid1.Col = j
MSFlexGrid1.Row = i
data = data + Space(num_sp) + MSFlexGrid1.Text
num_sp = (j + 1) * 8 - Len(data)
Next j
Call FUN_Savemap(data)
data = ""
num_sp = 0
Next i

建议你的循环应对MSFlexGrid控件绑定或关连的数据集进行,而不要对MSFlexGrid控件本身循环取值,这样有助于提高效率,如楼上所说“每循环一次,输入焦点就要变动一次”,此焦点在MSFlexGrid控件上移动,占用系统资源量大。
下面给出MSFlexGrid控件绑定Adodc控件的代码:
For i = 0 To 16
For j = 0 To 16
data = data = data + Space(num_sp) & Adodc1.Recordset(j)
num_sp = (j + 1) * 8 - Len(data)
Next
Adodc1.Recordset.MoveNext
Call FUN_Savemap(data)
data = ""
num_sp = 0
Next

不知道FUN_Savemap()函数的工作效率怎么样
不过第三四五行的效率很差
每循环一次,输入焦点就要变动一次
应该把这三句改成
data = data + Space(num_sp) + MSFlexGrid1.TextMatrix(i,j)

1 你把程序打包出来,在运行!
生成exe文件后运行速度会块很多,占用内存会小很多

2 删掉无用的控件,没必要用控件时就不用

如果上述还是不行的话,可以把你的MSFlexGrid做一个同步数组,对数组进行操作,这也也会块一些