有人可以解释为什么我应该使用 strstr 或 string find() 吗?哪个更快,在哪里?
问问题
7788 次
3 回答
17
在 C++ 中你应该使用 std::string::find(),在 C 中你应该使用 strstr()。性能上的差异不应该是显着的。
于 2012-08-03T16:52:28.757 回答
8
哪个更快并不重要。更重要的是 std::string::find 是安全的。因此,如果您要使用 c++,请使用 std::string 类并避免使用旧的 c 函数。
于 2012-08-03T16:54:55.620 回答
0
我已经对字符串中搜索子字符串的几个版本进行了基准测试。
带有 std=c++20/-O3 的 GCC 10.3 显示以下结果:
- strstr 是最快的
- std::string::find 慢约 3 倍
- std::search 慢约 4.5 倍
- std::string_view::find ~ 慢 11 倍
铿锵声12:
- strstr 是最快的
- std::string::find 慢约 3 倍
- std::search 慢约 5.5 倍
- std::string_view::find ~ 慢 8.5 倍
因此,如果您确实关心性能,请使用 strstr。
于 2022-01-19T10:17:47.437 回答