首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QString性能优化小Tips

在项目文件中添加一句即可优化QString性能。

  下面的代码底层实现需要至少2个malloc。第一个malloc是"Hello"字符串,另一个malloc是"world!"字符串。并且每次添加时,malloc的数量都会增加。

  如果最终QString的长度事先已知,则可以避免额外的malloc。因此在Qt 4.6中引入了QStringBuilder的内部类,该类可以一次为连接链保留内存。通过使上面的每个操作返回不同的类(不再是QString)来实现此目的。此类跟踪每个步骤中要附加的字符串和所需的内存。在最后一步转换为QString时,它将在一次分配所需内存,并按顺序复制链中的所有字符串。

  启用该功能需要包含头文件并使用操作符。例如:

  另外,QStringBuilder使用表达式模板并重新实现运算符,这样当你将用于字符串连接而不是时,「多个子字符串连接将被延迟,直到最终结果将被分配给一个QString」。在这一点上,最终结果所需的内存是已知的。然后调用内存分配器一次以获得所需的空间,并将子字符串逐个复制到其中。

  通过内联和减少引用计数可以获得额外的效率(从QStringBuilder创建的QString通常有一个1的引用计数,而需要额外的测试花销)。

「此外我们还可以在项目文件(*.pro)中加入下列代码自动让识别为操作符,这样可以用最少的修改来达到QString的性能优化」

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200321A0RT2E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券