Grep 性能:使用 -ri 与仅使用 -r

Grep performance: using -ri vs. just using -r

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

Yesterday a coworker told me during a debug session, that if you use grep -r is much faster as when using grep with case insensitive Flag (e.g grep -ri) . So the question is, is this so?

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

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

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

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

And if so why does it cost so much to transform letters into upper/lowercase characters?

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

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