今天开始要处理大数据,大约有百G的地理道路数据文件,按照网格来切分生成地图数据。
普通情况下:
(1)单机运行时间太长,性能低
(2)内存不够
(3)本身算法是否可以改进
(4)C++程序写的性能问题,使用的是MFC框架,大量CString对象构建;频繁的 new/delete过程;多线程(对于纯计算类,多线程意义不大,多核并行似乎更合适)
-----------------------------------------------------
今天,发现,sendmessage在多线程中比postmessage耗时不在一个数量级上!去掉,就能提搞20%的性能.
PostMessage和SendMessage的区别:
PostMessage一个属于异步消息,并不等待消息处理,直接返回继续处理;因此,当多线程时,要比SendMessage快,SendMessage需要2次线程切换,才能继续,因此同步开销很大
另外,PostMessage的参数,必须注意到:
不是立即释放的局部变量,否则,当消息处理时,LPARAM指针指向的内容可能已经不存在或者发生改变。
如
CHAR szText[100]
PostMessage(XXX,NULL,szText);
--------------------------------------
当消息出