程序性能慢的一些方法总结

来源:互联网 发布:urlencoder js 解码 编辑:程序博客网 时间:2024/06/14 06:19

项目过程中经常会遇到一些性能需求,现总结如下:
1、多线程处理
2、如果数据量过大,可选择减采样
如vtkPolydata 可用类vtkDecimatePro(用法之前的博客中写过)
vtkImagedata可用类vtkImageResample

 vtkSmartPointer<vtkImageResample> ResampleData = vtkSmartPointer<vtkImageResample>::New();    ResampleData->SetInputData( data );    ResampleData->SetAxisOutputSpacing(0, newpixelSpacing[0]);//新的spacing    ResampleData->SetAxisOutputSpacing(1, newpixelSpacing[1]);    ResampleData->SetAxisOutputSpacing(2, newpixelSpacing[2]);    ResampleData->SetInterpolationModeToCubic();    ResampleData->Update();

或vtkImageShrink3D

   vtkSmartPointer<vtkImageShrink3D> pImageShrink3D = vtkSmartPointer<vtkImageShrink3D>::New();    pImageShrink3D->SetShrinkFactors(3, 3, 3);    pImageShrink3D->AveragingOn();    pImageShrink3D->SetInputData(ImageFir);    pImageShrink3D->Update();

3、减少无用代码的运行,如我用的是mvc框架,触发某个model时会notify很多次,也会有很多暂时无用的view 观察它,所以无用代码很多,还有就是resize函数也是很浪费时间的,确保功能、现象正确的情况下,无用代码越少越好。像导图操作也很占用资源,导致程序很慢,所以切记将导图代码放到合适的位置,且保证程序对的情况下运行次数越少越好。
4、mvc 框架的view中显示actor的情况。
常常发现如果多个view中的actor是相同的(或只有显示视角等不同),如果对actor做一些操作,如旋转或平移等,有可能出现各个view中的actor变换都非常慢的情况,甚至出现白屏,这时可以检查是否是这些view 共用这个actor了,如果是,请将这个actor new 出与view相同的个数,确保每个view都不共用同一个actor,可以发现速度会快很多。
5、如果是刷新慢的问题可以考虑update()
如此view的基类是QWidget,可以用update刷新一下。

阅读全文
0 0
原创粉丝点击