我需要將C#字符串寫入以Utf8編碼的預分配非託管緩衝區。 之前回答,請閱讀以下要求:使用UTF8編碼將C#字符串寫入預分配的非託管緩衝區
- 沒有新的分配(所以請不要告訴我去涉及創建字節數組或其他實例解答)
- 否轉換到非託管代碼(無pinvoke/calli)
目前,我使用OpCodes.Cpblk將原始字符串從C#複製到使用16位字符的非託管緩衝區。這使我在x64體系結構上使用非託管memcpy的性能大致相同,我真的需要吞吐量接近於此。
我正在考慮固定的字符串作爲字符 *和迭代,但沒有實現跳轉表編碼器將是既麻煩又達不到最佳,當涉及到性能。
有沒有什麼理由不能用C++編寫它? – Gabe 2012-01-31 20:15:29
如果我想避免過渡,使用C++將沒有區別 – 2012-01-31 21:25:27
如果你用C++/CLR編寫它,那麼將不會有轉換。 – Gabe 2012-01-31 21:47:37