Utf8としてエンコードされた事前に割り当てられたアンマネージバッファにC#文字列を書き込む必要があります。回答する前に、次の要件をお読みください。
- 新しい割り当てはありません(バイト配列やその他のインスタンス化の作成に関する回答に私を誘導しないでください)
- アンマネージコードへの移行なし(pinvoke / calliなし)
現在、OpCodes.Cpblkを使用して、生の文字列をC#からアンマネージバッファに16ビット文字を使用してコピーしています。これにより、x64アーキテクチャでアンマネージドmemcpyを使用する場合とほぼ同じパフォーマンスが得られ、スループットをそれに近づける必要があります。
文字列をchar *として修正し、それを反復処理することを検討していますが、ジャンプテーブルなしでエンコーダーを実装することは、パフォーマンスに関しては面倒であり、最適とは言えません。