複雑な SQL ステートメントなど、大量のテキスト文字列を作成するコードのケースがいくつかあります。私は、このテキストを何回も続けてまとめようと思っています。私は、より大きな文字列にprocedure A(const S: String);
テキスト ( ) を単純に追加する、 just という名前のサブルーチンを使用する習慣を身につけました。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');