int* Array;
Array = new int[10];
delete[] Array;
Run Code Online (Sandbox Code Playgroud)
该delete懂得分配内存的次数.我用Google搜索它将它存储在内存中,但它依赖于编译器.无论如何使用得到这个计数?
假设我有一个需要优化但同时易于调试的代码.因此,我会为我使用的每个值分配一个字符串.该字符串是否会造成重大性能损失,或者它是否变成了一个从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的"实现细节",但如果以这种方式进行优化,那将是有意义的.
c# ×2
.net ×1
allocation ×1
c++ ×1
cil ×1
enumerator ×1
ienumerator ×1
il ×1
memory ×1
new-operator ×1
string ×1