c# – 从char []创建不安全的字符串
我正在研究一种高性能代码,其中这个结构是性能关键部分的一部分.
这是在某些部分中发生的情况: >字符串被“扫描”并且元数据被有效存储. 现在,我知道你可以调用新的字符串(char []),但结果必须被复制. 为了避免这个额外的复制步骤发生,我想我必须可以直接写入字符串的内部缓冲区.即使这将是一个不安全的操作(我知道这带来了许多影响,如溢出,向前兼容). 我已经看到了实现这一目标的几种方法,但没有一种我真的很满意. 有没有人有关于如何实现这一目标的真实建议? 额外的信息: StringBuilder对于少量的concats来说有太多的开销. 编辑: 这是发生的事情: >主字符串已编入索引. 我想要做的是合并第2步和第3步,结果是: >主字符串已编入索引. 需要注意的是,我无法从string []更改输出类型,因为这是一个外部库,项目依赖于它(向后兼容性). 解决方法
如果您这样做会发生什么:
string s = GetBuffer(); fixed (char* pch = s) { pch[0] = 'R'; pch[1] = 'e'; pch[2] = 's'; pch[3] = 'u'; pch[4] = 'l'; pch[5] = 't'; } 我认为世界将会结束(或者至少是.NET管理的部分),但这与StringBuilder的作用非常接近. 您是否有分析器数据显示StringBuilder不够快,或者这是一个假设? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |