在我的代码中有一些情况,我正在构建大量文本字符串,例如复杂的 SQL 语句。我打算将这段文字连续多次放在一起,每次都有一些略有不同的参数。我已经养成使用名为 just 的子程序的习惯,procedure A(const S: String);
它只是将文本 ( S
) 附加到较大的字符串Text := Text + S + #10 + #13;
我想知道这是否会阻碍性能而不是使用传统的字符串连接?我开始认为编译器会优化这样的东西:
Text := 'some' + ' ' + 'text' + ' ' + 'and' + ' ' + 'such';
到
Text := 'some text and such';
这是真的?编译器是否优化了这种情况?如果是这样,我可能会决定将所有内容更改为以下内容:
Text := 'select something from sometable st'+#10+#13+
'join someothertable sot on sot.id = st.sotid'+#10+#13+
'where sot.somevalue = 1'+#10+#13+
'order by sot.sorting';
理论上这会比
Text:= Text + 'select something from sometable st'+#10+#13;
Text:= Text + 'join someothertable sot on sot.id = st.sotid'+#10+#13;
Text:= Text + 'where sot.somevalue = 1'+#10+#13;
Text:= Text + 'order by sot.sorting';
或者我通常是怎么做的:
A('select something from sometable st');
A('join someothertable sot on sot.id = st.sotid');
A('where sot.somevalue = 1');
A('order by sot.sorting');