昨天,一位同事在调试 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/