是否有任何更快的解析方法比走每个字节?

ura*_*ray 2 c++ string cpu optimization parsing

是否有任何更快的方法来解析文本而不是通过遍历文本的每个字节?

我想知道是否有任何特殊的CPU(x86/x64)指令用于字符串库使用的字符串操作,它以某种方式用于优化解析例程.

例如,在字符串中查找可由硬件运行的令牌而不是循环每个字节直到找到令牌的指令.

*编辑 - >注意:我更多地要求算法而不是CPU架构,所以我真正的问题是,是否有任何特殊的算法或特定的技术可以优化字符串操作例程给定当前的cpu架构.

zil*_*n01 5

x86有一些字符串指令,但它们在现代处理器上不受欢迎,因为它们变得比执行相同操作的更原始指令慢.

处理器世界越来越多地转向RISC,即简化的指令集.

来自维基百科的报价(强调我的):

第一个高度(或紧密)流水线x86实现,来自Intel,AMD,Cyrix和IBM的486设计,支持其前辈所做的每一条指令,但仅在相当简单的x86子集上实现了最高效率.典型的RISC指令集(即没有典型的RISC加载存储限制).

今天的x86处理器仍然如此.

假设文本中的每个"标记"都是四字节对齐的,那么一次处理四个字节可以获得略微更好的性能.显然,大多数文本都不是这样......所以最好坚持逐字节扫描.

  • 话虽如此,Nehalem上的`SSE4.2`(Core i7*等*)具有PCMPxxx系列字符串比较指令. (4认同)