linux - 仅使用 -r Grep 性能 : using -ri vs.

标签 linux performance grep case-sensitive

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

最佳答案

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?

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

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

关于linux - 仅使用 -r Grep 性能 : using -ri vs.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42802919/

相关文章:

r - R中的快速Levenshtein距离?

css - django 模板中的内联 CSS 文件

c# - 从 PHP 最快访问密集型函数?

linux - 使用 grep 时如何跳过第一行和最后一行?

linux - 如何使用grep命令提取html中标签之间的内容

linux - Shell脚本双引号

linux - shell 脚本 : Fuse all duplcate lines inside a file into 1

max_min.c 编译错误 :(. text+0x3c): undefined reference to `max_func'

shell - 如何使用 grep 将 stdout 拆分为 stdout 和 stderr?

linux - 从管道读取阻塞