【问题标题】:Grep performance: using -ri vs. just using -rGrep 性能:使用 -ri 与仅使用 -r
【发布时间】:2017-03-15 06:53:16
【问题描述】:

昨天一位同事在调试会话期间告诉我,如果您使用 grep -r 会比使用不区分大小写标志的 grep (例如 grep -ri) 快得多。那么问题来了,是这样吗?如果是这样,为什么将字母转换为大写/小写字符要花这么多钱?提前致谢

【问题讨论】:

  • 请问您是否需要澄清。
  • SO 的重点是更具体的编程问题,而不是验证同事的陈述。

标签: linux performance grep case-sensitive


【解决方案1】:

昨天一位同事在调试会话期间告诉我,如果您使用 grep -r 与使用不区分大小写标志的 grep 时相比要快得多 (例如 grep -ri)。那么问题来了,是这样吗?

为什么不呢?执行不区分大小写的比较比通常的区分大小写的匹配复杂。

为了让您更简单地理解,请考虑以下示例:

如果非要进行单词比较,那么ASCII值可以简单匹配;如果考虑不区分大小写,则必须考虑 toupper()/tolower(),然后对其进行检查。

因此,考虑不区分大小写的搜索比区分大小写的搜索要复杂一些,因此速度要慢一些。但是,您将无法找出简单搜索中的差异。

如果是这样,为什么将字母转换为 大写/小写字符?

如上所述,您正在使用额外的函数调用来成功执行搜索,因此与完全匹配相比,它的成本更高。

最后,这完全取决于您想要的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2016-11-09
    • 2021-11-15
    相关资源
    最近更新 更多