kaz*_*aze 6 .net c# sql performance
编译器是否会优化相当格式化的字符串,或者该代码的运行速度是否比未以可读方式划分的字符串运行得慢?
例如
string sql =
"select * " +
"from person " +
"where id = :id";
Run Code Online (Sandbox Code Playgroud)
要么
string sql = "select * from person where id = :id";
Run Code Online (Sandbox Code Playgroud)
这只是一个小例子.你知道sql有多复杂.
Ant*_*nes 13
只需使用: -
string sql =
@"select *
from person
where id = :id";
Run Code Online (Sandbox Code Playgroud)
从编译器的角度来看,这与单线解决方案相同.虽然我不会惊讶地看到编译器优化了文字字符串的串联.然而,串联方法的常见问题是忘记在字符串末尾包含空格.
And*_*mar 10
你可以用一个简单的程序来测试它:
Console.WriteLine("a" + "b");
Run Code Online (Sandbox Code Playgroud)
使用反射器,您可以轻松地反编译生成的二进制文件.在发布模式下,生成的IL是:
L_0000: ldstr "ab"
L_0005: call void [mscorlib]System.Console::WriteLine(string)
Run Code Online (Sandbox Code Playgroud)
所以.NET确实优化了"非常格式化的字符串".
啊 - C#的永恒真理之一.哪个更好,使用+连接字符串的代码或不连接字符串的代码?在您的情况下,答案取决于您使用的.NET版本.NET1到目前为止只能在单个语句中优化+字符串.单个字符串中的+太多导致性能较差,因为编译器不得不求助于创建新的字符串实例来处理其他字符串部分.从.NET 2开始,体系结构略有改变,编译器将多个+语句无缝连接在一起.
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |