假设我有一个需要优化但同时易于调试的代码.因此,我会为我使用的每个值分配一个字符串.该字符串是否会造成重大性能损失,或者它是否变成了一个从string.Intern在JIT/ AOTcompilation中获得的常量引用,从而变成一条简单的指令?
例:
在IL中它会是ldstr "gazilion lines".
它是在JIT/AOT编译期间变成类似的东西ldsflda string.InternCache.ID_0000647516166
并被const string ID_0000647516166 = "gazilion lines";
添加到string.InternCache?
是的,我理论上可以查看https://github.com/mono/mono但我不知道如何找到它.
是的,我正在混合使用CIL,C#以及编译的CIL,但是你明白了.
为ldstr保证是O(1)?
是的,它是CLR的"实现细节",但如果以这种方式进行优化,那将是有意义的.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |