C
内存优化
你可以通过使用以下优化功能或技术之一或多个来减少闪存和 RAM 脚印
启用资源压缩
PNG 压缩
通过设置 ImageFiles.MCU.resourceCompression,你可以使用 PNG 压缩存储图像。当需要时,图像将被解压缩到缓存中。这减少了二进制文件的大小,但增加了解压缩开销。有关在 Qt Quick Ultralite 应用程序中使用 PNG 压缩的更多信息,请参阅 ImageFiles.MCU.resourceCompression。
RLE 压缩
不同于使用 ImageFiles.MCU.resourceCompression 的图像,具有 RGB888RLE
、XRGB8888RLE
和 ARGB888RLE
像素格式的 RLE 图像在运行时解码。这显着减少了内存使用量,但不支持转换(缩放、旋转、倾斜和透视)此类图像。
有关更多信息,请参阅 无损压缩图像格式。
帧缓冲区大小
通过选择较低的颜色深度和/或单缓冲区,你可以优化帧缓冲区的大小。有关帧缓冲区大小要求的详细信息,请参阅 Framebuffer Requirements。
如果你支持硬件层,您还可以通过使用硬件层来提高性能。有关更多信息,请参阅 Improving performance using hardware layers。
字体质量
font.quality 属性允许更细粒度的优化,通过提供渲染低质量符号的提示。您可以将 QML 中的字体质量设置为 Font.QualityVeryLow
,这将节省这些符号消耗的内存。有关更多信息,请参阅 MCU.Config.defaultFontQuality。
从不从翻译中省略源语言字符串
在某些用例中,翻译的源语言字符串根本不会被渲染。尤其是当使用基于ID的翻译时,应用程序不应该显示源字符串。使用TranslationFiles.MCU.omitSourceLanguage QmlProject属性将源字符串从应用程序二进制文件中排除。
从字体文件中移除未使用的符号
当使用与字体映射文件一起的Monotype Spark字体引擎时,可以使用Qt Quick Ultralite附带的Monotype FontmapEditor实用程序来减小字体文件的大小。该实用程序允许您指定字体条目的unicode范围,并删除未使用的符号。当应用程序所需字符号集提前已知时,这很有用。特别是在CJK字体文件中,删除未使用的符号可以显著节省空间。
有关如何使用此功能的更多详细信息,请参阅FontmapEditor文档。
注意:此功能适用于FontmapEditor 3.1.1版本。
减少应用程序堆栈大小
根据分析,Qt for MCUs示例和演示不使用超过11 kB的堆栈内存。默认选择的堆栈大小是24 kB,以确保安全。通过基准测试应用程序并检查QulPerf::maxStackUsage的值,相应地减小堆栈大小可能会节省一些内存。
此优化仅适用于在链接器脚本中设置了固定堆栈大小的平台,或者在FreeRTOS上,Qt Quick Ultralite线程堆栈大小可以配置: 线程堆栈大小
根据某些Qt许可证可用。
了解更多。