我在WINCE 5.0自己建了个坐标系,更新坐标系的时候,如果没有点数据,则只更新XY坐标轴,如果有数据,就绘制波形曲线,数据大概有6000个点,发现绘制的时候特别慢,大概要耗时2-4秒,样子,为什么会这么慢,能提高速度吗?如果改成WINCE 6.0速度会快吗?如果只更新XY轴坐标是一瞬间的如下面的图的绿色波形,大概有6000个点组成,白颜色的坐标轴绘制起来瞬间就好了
------解决方案--------------------
GetTickCount也可以到MS级了,你自己估的可是S级,
80%是代码的问题
不测光想是搞不出来的
------解决方案--------------------
代码问题,我画6w多个点才不到100ms(不算画坐标轴)
------解决方案--------------------
vb看不懂,但是运算量比较大到时,很多地方都没有优化。
------解决方案--------------------
很抱歉不會寫 VB 的程式
15L 的程式不知 LZ 在 PC 上跑的速度如何, CPU 越快, 程式就越可以亂寫, 若 CPU Hardware 不支援 floating point, 則程式就要考慮是否可能全用 integer 來實現, 像 line 8 & 9 就應整合為 For i = 0 To (UBound(RecDataArr) - 23), for loop 中的 ReDim 就應考慮是否可以用別的不花 CPU time 的方式來達到相同目的 (譬如在 for loop 外就宣告一個足夠大的 array) 等. 基本上, 很直覺的程式寫法, 執行效率都不會太高.
建議 LZ 將程式重發到 VB forum 去找如何 Optimize 的解答, 至於畫圖的部份, if f(x) is continuous, 且螢幕 X-axis 解析度遠小於資料筆數, 則只要繪製 X-axis pixel resolution 筆資料即可, 眼睛是看不出差異的, 且時間可縮短為 (x pixel)/(data count), 若6000筆資料繪在 800 pixel 的螢幕, 則只要 800/6000 = 1/7 的時間.
Paul, Chao @ Tecware