当前位置: 首页 > 编程语言 > C#

C#中的快速字符串解析分享

时间:2023-04-10 13:41:03 C#

C#中的快速字符串解析在C#中解析字符串最快的方法是什么?目前我只是使用字符串索引(string[index])并且代码工作得相当好,但我不禁认为索引访问器完成的顺序范围检查必须添加一些东西。所以,我想知道我应该考虑使用哪些技术来提升它。这些是我最初的想法/问题:使用string.IndexOf()和IndexOfAny()方法查找感兴趣的字符。这些比通过string[index]手动扫描字符串更快吗?使用正则表达式。就我个人而言,我不喜欢正则表达式,因为我发现它们很难维护,但是这些能比手动扫描字符串更快吗?使用不安全的代码和指针。这将删除索引范围检查,但我读到不安全的代码不会在不受信任的环境中运行。这到底是什么意思?这是否意味着整个程序集不会加载/运行,或者只是标记为不安全的代码拒绝运行?该库可能会在许多环境中使用,因此能够退回到更慢但更兼容的模式会很好。我还能想到什么?注意:我应该说,我正在解析的字符串可能非常大(比如30k)并且采用没有标准.NET解析器的自定义格式。此外,这段代码的性能并不是非常关键,所以这部分只是好奇的理论问题。30k不是我认为的大。在兴奋之前,我会说。应该对索引器进行微调,以实现灵活性和安全性的最佳平衡。例如,要创建一个128k的字符串(和一个相同大小的单独数组),用垃圾填充它(包括处理Random的时间)并通过索引器对所有字符代码点求和...3ms:varwatch=Stopwatch.StartNew();char[]chars=newchar[128*1024];随机数=newRandom();//fillwithjunkfor(inti=0;iForactuallylargerfiles,thereadermethodshouldbeused-StreamReaderetc.“解析”是一个非常不精确的术语。因为你说的是??30k,你可能正在处理使用某种结构化字符串,可以通过使用解析器生成器工具创建解析器来修复。DevinCook的GOLD解析系统是创建、维护和理解整个过程的一个很好的工具:http://www.devincook.com/goldparser/这可以帮助您为许多文本解析需求创建高效和正确的代码。至于你的观点:通常对解析没有用,这比拆分字符串更进一步。如果没有递归或太复杂的规则,则更合适。如果你还没有真正确定这是一个严重的问题,基本上没有。JIT可以仅在需要时负责范围检查,实际上对于简单循环(典型的for循环)这可以很好地处理。以上就是《C#学习教程:C#快速字符串解析》的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注---本文收集自网络,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处: