.NET的快速且内存有效的ASCII字符串类

Rob*_*cks 10 .net c# string performance memory-efficient

这可能是之前被问过的,但我找不到任何这样的帖子.是否有类使用ASCII字符串?好处很多:

  1. 比较应该更快,因为它只是逐字节(而不是带有可变编码的UTF-8)
  2. 内存效率高,应该在大字符串中使用大约一半的内存
  3. 更快版本的ToUpper()/ ToLower(),它使用语言不变的查找表

Jon Skeet编写了一个基本的AsciiString实现并证明了#2,但我想知道是否有人进一步采用了这个并完成了这样的课程.我确信会有用途,虽然没有人会采用这样的路线,因为所有现有的String函数都必须手动重新实现.String <> AsciiString之间的转换将分散在各处,使一个简单的程序复杂化.

有这样的课吗?哪里?

Ash*_*ore 6

我以为我会发布我努力实现系统的结果,尽可能多的字符串支持和兼容性.它可能并不完美但它应该给你一个合适的基础,如果需要改进.

ASCIIChar结构和ASCIIString字符串隐式转换为其本机对应项以便于使用.

OP的替换ToUpper/Lower等的建议已经以比查找列表更快的方式实现,并且所有操作都像我可以做到的那样快速和内存友好.

抱歉无法发布消息来源,这太长了.见下面的链接.

  • ASCIIChar - 替换char,将值存储在一个字节而不是int中,并为字符串类提供支持方法和兼容性.实现可用于char的虚拟所有方法和属性.

  • ASCIIChars - 为每个有效的ASCII字符提供静态属性,以便于使用.

  • ASCIIString - 替换字符串,将字符存储在字节数组中,并实现几乎所有可用于字符串的方法和属性.