大家有没有发现QT写的程序很耗内存?

yorksenx 2010-03-30 11:45:43
在Ubuntu 9.10下用QT4.5随便一个什么都没有的QDialog就耗了3MB,我自己最近写的有60个QLabel的空壳界面尽然就耗了10MB,觉得太夸张了。大家有没有遇到相同情况,有没有什么编译选项能解决这个问题?
不知在Windows下效果怎样,个人觉得这样QT程序很难与MFC或Win32API写的程序竞争,至少空间性能上就输了,对于一些需要长时间住留在后台的应用软件用户是很在乎内存消耗的。
...全文
1816 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
k99186 2011-11-23
  • 打赏
  • 举报
回复
k99186 2011-11-23
  • 打赏
  • 举报
回复

有同感,我写的桌面工具箱,上个 版本最高已经达到了30M左右,本相这个版本减小一半内存呢,
谁知,已经飙到时了42M左右.

千羽鸣 2010-04-09
  • 打赏
  • 举报
回复
编写一个小程序,QT生成的可执行文件就比较大了,反正是明显要高于C+Win32模式写出的同样程序
hhf 2010-04-08
  • 打赏
  • 举报
回复
居然有这样的事??
yorksenx 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 boomworks 的回复:]
建议更改编译参数试试看,Debug版本内存占用多无所谓,Release版需要注意。
[/Quote]

请问有什么编译选项可以降低QT运行期的内存占用量?目前我自己编的Release版本也是一样的耗内存。

看了些QT框架实现的文章,个人觉得QT框架的耗内存是必然的,一个QObject就拥有了太多的成员、关联,而且随着子控件的增多,这些成员容器膨胀也很迅速,个人认为是QT框架在架构上就没把内存占用率看在眼里,因为QT框架试图描述QT应用程序的各控件的地属关系来管理各控件,而这些关系本身就是由底层库(如:X11)掌控并管理的,这使得这个程序的布局方面的管理开销上与X11存在很大的冗余,最终导致过于臃肿。这可能也是QT跨平台的考虑,因为不是所有平台都具备这方面的管理能力。
个人认为QT界面只适用于哪些内存资源很丰富的场景,或本身欠缺组件管理的底层平台,而不是C++ GUI界面的理想解决方案。也就是说使用QT不适合开发非嵌入式环境下的GUI应用。
tingsking18 2010-04-06
  • 打赏
  • 举报
回复
重新编译一下Qt的源代码。
如果是在windows下,可以让编译器进行写优化:
比如说:
-mmx -sse等等。
如果不用rtti,还可以禁用rtti,-no-rtti
这个东西也是很烦人的。

[Quote=引用 19 楼 yorksenx 的回复:]
引用 18 楼 boomworks 的回复:
建议更改编译参数试试看,Debug版本内存占用多无所谓,Release版需要注意。


请问有什么编译选项可以降低QT运行期的内存占用量?目前我自己编的Release版本也是一样的耗内存。

看了些QT框架实现的文章,个人觉得QT框架的耗内存是必然的,一个QObject就拥有了太多的成员、关联,而且随着子控件的增多,这些成员容器膨胀也很……
[/Quote]
boomworks 2010-04-05
  • 打赏
  • 举报
回复
建议更改编译参数试试看,Debug版本内存占用多无所谓,Release版需要注意。
MicroSky2813 2010-04-03
  • 打赏
  • 举报
回复
debug比release大了不少,光dll就差了上百M(只是QtGUi和QtCore)

然后,由于Qt的大多是从底层就开始的,所以实际编程出来的代码也能多不少(相对于用系统高级一点的API)。

但图形速度是不会有大的差别的,并且可能更快。
Spiritring 2010-04-03
  • 打赏
  • 举报
回复
Qt4是比较费...用过wx.也差不多...
FingerStyle 2010-04-03
  • 打赏
  • 举报
回复
我们做的Qt的程序 在Symbian上跑的很好, 在pc上还怕啥。

不过Qt在Symbian上控件存在bug
qsun06 2010-04-01
  • 打赏
  • 举报
回复
是啊,在Symbian的emulator里根本无法运行程序!!!
gueangyik 2010-04-01
  • 打赏
  • 举报
回复
顶 顶
yorksenx 2010-03-31
  • 打赏
  • 举报
回复
release和debug都一样的
yorksenx 2010-03-31
  • 打赏
  • 举报
回复
我是指的程序运行起来在任务管理器里面看到的申请的内存很大,本身编译得的二进制文件还是很小的。不知Windows下运行有没有这个问题,如何解决这个问题。
lizheng092 2010-03-31
  • 打赏
  • 举报
回复
在Windows下没有发现啊,exe文件挺小的。
seufire 2010-03-31
  • 打赏
  • 举报
回复
同关注
dyw 2010-03-31
  • 打赏
  • 举报
回复
lz用的是什么版本?debug还是release?
2010-03-31
  • 打赏
  • 举报
回复
Qt 占资源是比较多……
所以我一般只有明确确认目标系统比较宽裕的时候才会选择 Qt。
yorksenx 2010-03-31
  • 打赏
  • 举报
回复
不知是不是我的系统有问题,大家能方便反馈一下创建一个QDialog的程序所占内存数量吗?
#include <QApplication>
#include <QDialog>

int main(int argc,char* argv[])
{
QApplication app(argc,argv);

QDialog dlg;
dlg.show();

return app.exec();
}
就上面这样么几行在Ubuntu 9.10 上就占了3.2MB.
直接导致我的软件输在起跑线上,不知这个问题怎样解决,可能只有放弃QT了。
yorksenx 2010-03-31
  • 打赏
  • 举报
回复
哦,Windows下还会很慢?那运行起来的内存占用率呢?

ps:
是不是目前的所有平台的特点都是很耗资源啊,比如.Net和JAVA编写的程序都会比原来非托管方式写的程序耗内存或CPU.我觉得这两个平台之所以会这样是因为关注于提高抽象层次,降低编码难度,以便快速交付,本身又包罗万象,因此导致底盘过大。
但是QT作为一个GUI的库相当与一个系统屏蔽层,然后在用OO封装一下,以便于配合C++使用,不应该牵涉太多东西啊,耗那么多资源是另人费解的。
加载更多回复(4)

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧