读书人

怎么加快程序的运行速度

发布时间: 2012-08-13 13:21:53 作者: rapoo

如何加快程序的运行速度?
开辟动态空间 QGraphicsItem *pnode = new QGraphicsItem[6376] (QGraphicsItem是QT里面的一个类)

scene = new QGraphicsScene(0, 0, Xmax*VisZoom, Ymax*VisZoom);

然后通过scene->addItem(&pnode[i])把6376个QGraphicsItem 的对象加到scene上显示,如下图:(每个小红点就是一个GraphicsItem 对象)


但是这样一来,当我同时变化6376个QGraphicsItem的大小时,程序非常慢,要半分钟才能变化完成。

问问大家如何提高运行速度啊?

谢谢







[解决办法]
vector也不快,是标准库里面的,你可以试试
[解决办法]
如果你计算量确实很大,你是没法真的提高的。惟一可能提高的是:如果你现在每次变化一个item都去刷新一下屏幕的话,改正成一批改变完成后再刷新屏幕。如果你已经这么做了,估计你没什么机会提高速度了
[解决办法]
当然,你只有6000多个图像点,如果已经这么做了,还很慢,那就奇怪了,这么少的点,应该很快才对
[解决办法]
这个谁晓得你这个所谓的item怎么绘制的?这得你自己根据你这个对象去找办法

探讨
引用:

如果你计算量确实很大,你是没法真的提高的。惟一可能提高的是:如果你现在每次变化一个item都去刷新一下屏幕的话,改正成一批改变完成后再刷新屏幕。如果你已经这么做了,估计你没什么机会提高速度了


如何改成一批改变完成后再刷新屏幕?

[解决办法]
内存一次性开辟足够,默认构造好.

写一个性能高的赋值函数.

尽量把所有点公共的数据成员共享到staic成员或者共享同一个内存区域来存储公共数据.

每次都new,每次都delete必然悲剧.
[解决办法]

我觉得LZ应该找些工具测试一下,热点到底在什么地方。靠猜测,基本是会错失优化方向的。
[解决办法]
vector这个工具可以测出来
[解决办法]
这个用什么工具可以测出来
[解决办法]
这个用什么工具可以测出来
[解决办法]
用VS里面的profiler发现性能瓶颈!

读书人网 >C++

热点推荐