请能为我优化一下!!!!
请能为我优化一下!!!!
楼主dycdyc123(重出江湖)2001-09-02 20:44:06 在 C++ Builder / 基础类 提问 void __fastcall SoundMath::DrawWaveShape(TLineSeries *Series1,TStringGrid *StringGrid1,int channel_1)
{
TColor Color=clBlue;
Series1->Clear();
if(channel_1==1)
{
for(int i=1;i<=StringGrid1->RowCount-2;i++)
for(int j=1;j<=StringGrid1->ColCount-1;j++)
Series1->AddXY(i*(StringGrid1->RowCount)+j,StrToFloat(StringGrid1->Cells),"",Color);
}
else
{
for(int i=1;i<=StringGrid1->RowCount-2;i++)
for(int j=1;j<=StringGrid1->ColCount-1;j+=2)
Series1->AddXY(i*(StringGrid1->RowCount)+j,StrToFloat(StringGrid1->Cells),"",Color);
}
}
以上代码在调用时,运行需要较长时间, 请能为我优化一下!!!!
谢谢!!!(其中的StringGrid1中有近25000个数) 问题点数:20、回复次数:10Top
1 楼whitelion(www.ccproj.com)回复于 2001-09-02 21:44:59 得分 0
看后面的兄弟吧Top
2 楼wangledong(雪山之鹰)回复于 2001-09-02 23:27:00 得分 5
你为什么要把数据都存到StringGrid中呢?你过你用数组应该快许多,这样你可以去掉好多多余的操作啊!你试试看吧!Top
3 楼Wingsun(孙春阳)回复于 2001-09-02 23:35:22 得分 5
啊!你的数据太多了吧!而且这样的循环太恐怖了,能不能换一换呢?Top
4 楼songhtao(三十年孤独)回复于 2001-09-03 04:34:07 得分 5
先在内存操作,最后在StringGrid中一次显示因为,StringGrid的显示速度太慢,一次显示可以使性能提高100倍以上。Top
5 楼Ton2000(小顽童XP)回复于 2001-09-03 09:00:31 得分 5
你这样弄每加一次都要刷新太慢了,你应该在加数据时禁止StringGrid刷新才行!Top
6 楼dycdyc123(重出江湖)回复于 2001-09-03 09:26:38 得分 0
能不能换一换呢?
怎莫换???
请教!!!Top
7 楼dycdyc123(重出江湖)回复于 2001-09-03 09:31:59 得分 0
而且, StringGrid1 中的数据本身就处于内存中,, ...
我怎摸才能禁止StringGrid刷新?????,,,,,
这样是不是最好的办法???
Top
8 楼wjzhuang(程序猪)回复于 2001-09-03 09:55:16 得分 0
25000 + 双重循环 = 可怕~~~~~~~~~
代码看起来没什么好修改的
考虑一下换别的方式实现吧,否则不会有很大的改变的Top
9 楼coolsnake_pp(三藏)回复于 2001-09-03 10:08:38 得分 0
同意楼上Top
10 楼dycdyc123(重出江湖)回复于 2001-09-03 10:45:59 得分 0
OK!
I look for a bit!!!!
Change the StrToFloat(..) to StrToInt(..)
That maybe GooDTop
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
