字符串操作是否因为一次访问一个字符而效率低下?

Tim*_*Tim -1 c string performance c-strings

我听说

  • strlen()C 标准库中的字符串操作(例如)访问和操作字符串的字符,一次一个字符。
  • 计算机一次访问内存中的一个单词。
  • 一次访问一个字符效率低下,字符串操作的时间成本很高。

以上是真的吗?

有哪些解决方案可以提高字符串操作的时间性能?

Kaz*_*Kaz 6

问题中的假设是错误的。strlen和其他字符串操作的优化实现实际上一次一个字地工作。

GNU C库(“glibc的”)具有用于此手工优化组件例程,如这一个用于x86_64的。

  • @ShadowRanger 另外,手写的汇编代码与 ISO C 的定义规则无关。 (4认同)
  • 蒂姆,我认为卡兹的意思恰恰相反。如果数据被缓存,“宽字”代码将运行得更快。但是,即使数据没有被缓存,在获取缓存行后,宽获取仍然比单字符代码执行得更快[但是,从 RAM 获取缓存行的时间将使循环的执行时间相形见绌] 。 (2认同)