の最適化されたバージョンを作成できるかどうかを知りたいと思っていました (現在、私のアプリケーションの 1 つのボトルネックであるためStringBuilder
、少し高速化することに挑戦するため)。残念ながら、私が使用できない「魔法の」システムコールを使用しているようです(またはそう思われます)。
のソース コードを逆コンパイルした後System.Text.StringBuilder
、次の内部(したがって呼び出し不可能な) システム コールを使用していることに気付きました。
[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static string FastAllocateString(int length);
文書化されていない、よく使用される属性もあります。
[ForceTokenStabilization]
すべての呼び出しをFastAllocateString(n)
justに置き換え、すべての属性String.Empty
をコメントアウトすることができました。[ForceTokenStabilization]
これを実行し、他のクラスからいくつかのメソッドをコピーして貼り付けた後、実際にコンパイルすることができました。(完全なコード)。
これら 2 つのトレードオフには理由があると思います。
- 秘密の忍者の別の呼び方を知っている人はいます
FastAllocateString
か? - 誰が
ForceTokenStabilization
実際に何をしているのか知っていますか (そして、おそらくそれを達成するための別の方法はありますか?)