C# 用于.NET的快速且内存高效的ASCII字符串类
以前可能有人问过这个问题,但我找不到任何这样的帖子。是否有一个类可以处理ASCII字符串?好处很多:C# 用于.NET的快速且内存高效的ASCII字符串类,c#,.net,string,performance,memory-efficient,C#,.net,String,Performance,Memory Efficient,以前可能有人问过这个问题,但我找不到任何这样的帖子。是否有一个类可以处理ASCII字符串?好处很多: 比较应该更快,因为它只是逐字节比较(而不是使用变量编码的UTF-8) 内存效率高,应该在大字符串中使用大约一半的内存 ToUpper()/ToLower()的更快版本,使用语言不变的查找表 乔恩·斯基特写了一本基础的、经过验证的书,但我想知道是否有人更进一步,完成了这样一门课。我相信会有一些用途,尽管没有人会采取这样的方法,因为所有现有的字符串函数都必须手工重新实现。字符串和字符串之间的转换将分
有这样的课吗?其中?Dotnet没有直接支持ASCII字符串。字符串是UTF16,因为Windows API只能使用ASCII(onr char-一个字节)或UTF16。Utf8将是最好的解决方案(java使用它),但.NET不支持它,因为Windows不支持
Windows API可以在字符集之间转换,但Windows API只能使用1字节字符或2字节字符,因此,如果在.NET中使用UTF8字符串,则每次都必须转换它们,这对性能有影响。Dotnet可以通过BinaryWriter/BinaryReader或简单的StreamWriter/StreamReader使用UTF8和其他编码。我想我会尽可能多地发布我努力实现系统的结果,以尽可能多的字符串支持和兼容性。它可能并不完美,但如果需要的话,它应该给你一个良好的基础来改进 为了便于使用,ASCICHAR结构和ASCIIString字符串隐式转换为其本机对应项 OP提出的替换ToUpper/Lower等的建议以一种比查找列表快得多的方式实现,并且所有操作都像我所能做的那样快速且对内存友好 抱歉,无法发布源代码,时间太长。请参阅下面的链接
- -替换char,将值存储在字节而不是int中,并为string类提供支持方法和兼容性。实现可用于char的所有虚拟方法和属性
- -为每个有效ASCII字符提供静态属性,以便于使用
- -替换字符串,将字符存储在字节数组中,并实现几乎所有可用于字符串的方法和属性