这个问题并不是那么容易发现,表面上看起来好像没有问题一样.
如果您们对界面执行效率要求不高,也许根本就发现不了
环境三星2440, windows CE 6.0 800×480的分辨率.
我们有一个程序在windows CE 5.0下跑得很流畅,但同样的代码移植到三星2440的windows ce 6.0后发现界面很卡,而移植到A4方案上的机器上又不卡.
这个问题有些奇怪,之前也没有遇到过,我们怀疑过很多东西,甚至怀疑是不是windows CE 6.0系统本身的问题.
经过我们一点一点的分析,最后找到了问题的根源:
读写CreateDIBSection所关联的内存和读写new出来的内存效率差别很大.
代码示例:
//引用CreateDIBSection返回的内存
BYTE *pBmpData = NULL;
CreateDIBSection (NULL, pbmi, DIB_RGB_COLORS, (void**)&pBmpData, NULL, 0) ;
//引用new返回的内存
BYTE* pNewData = new BYTE[800*480*sizeof(DWORD)];
读写pBmpData和读写pNewData的效率差很多,大概读写pBmpData比读写pNewData慢三倍左右
测试程序在这里下载
请大家帮帮忙,看看怎么解决下,谢谢!!!!!