我目前正在优化我的程序以使用运行时内存。我有很多位置正在写入文件并且已经知道文件路径。这就是为什么我将文字定义如下:
const QString BLUE_LED = "/sys/class/leds/main:blue/trigger";
我可以通过这样做来优化它以更好地内联:
const char* const BLUE_LED = "/sys/class/leds/main:blue/trigger";
我正在将此文字与具有这些构造函数的类 QFile 一起使用:
QFile(const QString &name, QObject *parent)
QFile(QObject *parent)
QFile(const QString &name)
我正在使用的编译器标志:
-c -pipe -O2 -pipe -g -feliminate-unused-debug-types
我怀疑整体文件大小会下降,但是内存使用量会在几分之一秒内增加,因为为了构建 QFile,将从const char* const
构建中间 QString。这个假设正确吗?有没有办法以某种方式跟踪这些隐含的结构,而不是监视程序内存使用情况?
-
您可以使用 QStringLiteral 包装文件名,但请注意,这在 .rodata 中比字符串文字占用更多内存。
-
如果您必须不惜一切代价减少内存使用量,您可以使用
FILE *fopen(const char *path, const char *mode);
,然后使用
bool QFile::open(FILE *fh, OpenMode mode, FileHandleFlags handleFlags = DontCloseHandle)