ZString - Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
ARANK

Cy#の河合です。今回、文字列生成におけるメモリアロケーションをゼロにする「ZString」というライブラリを公開しました。そこで、この記事ではZStringの紹介の他に、あらためてC#の文字列についてを深く分解して解説し、Stringの複雑さと落とし穴、そしてZStringの必要性について解説します。[GitHub – Cysharp/ZString]以下の表は `”x:” + x + ” y:” + y + ” z:” + z` という単純な文字列連結においてのパフォーマンス計測です。それぞれ“x:” + x + ” y:” + y + ” z:” + zZString.Concat(“x:”, x, ” y:”, y, ” z:”, z)string.Format(“x:{0} y:{1} z:{2}”, x, y, z)ZString.Format(“x:{0} y:{1} z:{2}”, x, y, z)new StringBuilder(), Append(), .ToString()ZString.CreateStringBuilder(), Append(), .ToString()におけるメモリアロケーション量と速度の図になっています。ZStringはどのケースにおいても、連結後文字列の56B以外のアロケーションがありません。また、APIの使用勝手としてもStringBuilderあるいはString.Format、String.Concat、String.Joinをそのまま置き換えることができます。String型の構造と生成C#のString型は内部的にはUTF-1…

tech.cygames.co.jp
Related Topics: C# 3D Programming