社区
Qt
帖子详情
大家有没有发现QT写的程序很耗内存?
yorksenx
2010-03-30 11:45:43
在Ubuntu 9.10下用QT4.5随便一个什么都没有的QDialog就耗了3MB,我自己最近写的有60个QLabel的空壳界面尽然就耗了10MB,觉得太夸张了。大家有没有遇到相同情况,有没有什么编译选项能解决这个问题?
不知在Windows下效果怎样,个人觉得这样QT程序很难与MFC或Win32API写的程序竞争,至少空间性能上就输了,对于一些需要长时间住留在后台的应用软件用户是很在乎内存消耗的。
...全文
1816
24
打赏
收藏
大家有没有发现QT写的程序很耗内存?
在Ubuntu 9.10下用QT4.5随便一个什么都没有的QDialog就耗了3MB,我自己最近写的有60个QLabel的空壳界面尽然就耗了10MB,觉得太夸张了。大家有没有遇到相同情况,有没有什么编译选项能解决这个问题? 不知在Windows下效果怎样,个人觉得这样QT程序很难与MFC或Win32API写的程序竞争,至少空间性能上就输了,对于一些需要长时间住留在后台的应用软件用户是很在乎内存消耗的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
Qt
动态绘制折线图
内存
增加的解决方法
Qt
动态绘制折线图
内存
增加的解决方法。
QT
加载高清图片的
内存
占用问题
今天遇到个
内存
溢出的问题,在自身的代码上找原因找了很久没有找到,最后
发现
是软件启动时显示LOGO的功能上加载的一张高清背景图片导致的
内存
占用过高,图片分辨率为5120*3845,图片本身大小为686kb。
程序
启动加载这张图片后
发现
内存
占用竟高达100多M,
程序
在ARM设备上运行,本身运行
内存
就比较少,加载如图片后
内存
很快溢出了。
发现
是图片的问题后在windows上
写
了个Demo,加载同一张图片,
发现
内存
占用也去到100多M。 尝试用美图秀秀...
32位应用
程序
如何使用大于2GB的
内存
?
32位应用
程序
如何使用大于2GB的
内存
? 不管是在 32 位 Windows 还是在 64 位 Windows,32 位应用
程序
都只能使用最大 2GB 的
内存
,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使
程序
使用大于 2GB 的
内存
。 为什么 32 位
程序
只能使用最大 2GB
内存
? 32 位寻址空间只有 4GB 大小,于是 32 位应用
程序
(进程)最大只能用到 4GB 的
内存
。然而,除了应用
程序
本身要用
内存
,操作系统内核也需要使用。应用
程序
使用的
内存
空间
Qt
编译代码时占用大量
内存
,造成卡死的问题
Qt
Creator编译优化
Qt
Creator编译代码时,随着单个文件过大,或者文件数量过大,几乎会把
内存
占满,造成电脑卡死的问题,这是需要在
程序
的配置文件中进行如下设置,才可以避免这个问题: CONFIG += resources_big #支持大文件编译 QMAKE_CXXFLAGS += /MP #支持并行编译,加快编译速度,只对MSVC编译器有效 优化链接1:https://blog.csdn.net/libaineu2004/article/details/89352224...
Qt
程序
CPU过高怎么定位解决?性能优化
分析原因,是QVector的内部存储结构导致,push_front每次都会调整QVector的内部存储结构,然后动态的申请大的空间,再去复制数据到大的
内存
空间,这样非常耗性能;但是用push_back,再次分析后,CPU占用了达到了40%左右,还是很高,分析原因,随着插入数据的增加,
发现
还是会调用reallco函数不断的申请更大的空,然后复制数据去更大的空间;(2)自定义结构体中使用的string变量,每次使用string保存字符串时,需要创建大量的空间,会占用很高的CPU;(1)打开vs的性能探测器;
Qt
16,216
社区成员
26,595
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章