所以我有一个文件花了几分钟来编译,并将其缩小到它包含的事实,粗略地说,几千行硬编码字符串被传递到Qt函数。该文件是从另一个源自动生成的,因此字符串表示要放入Qt控件中以供选择的枚举值。例如:
方法A
mywidget->insertItem("My value 1, string representation of enum value 1");
mywidget->insertItem("My value 2, string representation of enum value 2");
mywidget->insertItem("My value 3, string representation of enum value 3");
...
然后我注释掉了这段代码的一个部分(大约1000行),并替换为:
方法B
const QString myValues[] = { "My value 1, string representation of enum value 1", "My value 2, string representation of enum value 2", "My value 3, string representation of enum value 3", ... };
for( int item = 0; item < 1000; ++item ){
mywidget->insertItem(myValues[item]);
}
方法B编译得更快。为什么?我已尝试使用优化开/关,而优化开启时间更长,即使关闭,编译也需要很长时间才能使用方法A.
编辑:是的,我认为行数会影响编译时间,但我将时间与另一个文件的时间进行比较,该文件大约是代码行数的一半(只有几个硬编码的字符串行)并且它汇编得更快。似乎有问题的文件呈指数级增长。
谢谢, 丹尼尔