我在几本书中找到了关于避免使用字符串进行值的比较(特别是在循环中)的注释,因为字符串比较要慢得多(使用std :: string).但究竟是为什么呢?
是因为cpu中的整数单位工作得更快吗?
字符串应该在字节中我猜,所以字节比较不会同样地完成这项工作吗?
谢谢!
Seb*_*olm 24
对于整数,在机器级别存在可以在一个循环中执行比较的指令.
但是,字符串由许多字符组成.为了比较字符串,在最坏的情况下,您必须查看字符串的每个字符.
实际上,当您比较字符串时,您最有可能对字符串中的每个字符使用整数比较.与比较两个整数相比,您可能会看到这很快就会变成很多比较.
示例:如果要将1073741822与1073741823进行比较.
这有点简化,当然,但希望得到重点.
Ben*_*igt 12
问题是字符串比较不仅仅是单个比较,它是循环中它们的整个序列.如果比较两个长度为10001个字符且前9000个字符串相同的字符串,您会发生什么?
BTW SSE使得字符串比较比一次一个字符更快,但它永远不会达到整数比较的速度.
| 归档时间: |
|
| 查看次数: |
8775 次 |
| 最近记录: |