std :: boyer_moore_horspool_searcher比自动cx = data [i] .find(pat)慢。

发布于 2025-02-13 09:12:16 字数 1280 浏览 1 评论 0原文

我正在测试文本行搜索速度的1M行。

我生成1M矢量字符串数据,每个数据都有一个文本行。 PAT是STD :: String搜索关键字。

C ++标准性std :: string.Find 5 TEES比Boyer快。

怎么可能?

for (int i = 1; i <= 5; i++) {
  std::chrono::steady_clock::time_point begin =
      std::chrono::steady_clock::now();
  for (int i = 1; i <= val; ++i) {
    // std::cout << i << "  val:" << val << endl;
    // search(std::to_string(i) + fwtxt + std::to_string(i), pat);
    auto cx = data[i].find(pat); //!= std::string::npos)

    // auto it = std::search(data[i].begin(), data[i].end(),
    //                       std::boyer_moore_horspool_searcher(pat.begin(),
    //                       pat.end()));

    // cout << cx << endl;           // std::cout << "found!" << '\n';

    // search(data[i], pat);
  }

  std::cout << ":: " << data[(rand() % 100)] << endl;
  std::chrono::steady_clock::time_point end =
      std::chrono::steady_clock::now();

  std::cout << "Time difference = "
            << std::chrono::duration_cast<std::chrono::milliseconds>(end -
                                                                     begin)
                   .count()
            << "[ms]" << std::endl;
}

I am testing the text lines search speed for 1M lines.

I generate 1M vector string data , each has a text line .
pat is std::string search keyword.

c++ standard std::string.find 5 tees faster than the Boyer.

how it could be possible?

for (int i = 1; i <= 5; i++) {
  std::chrono::steady_clock::time_point begin =
      std::chrono::steady_clock::now();
  for (int i = 1; i <= val; ++i) {
    // std::cout << i << "  val:" << val << endl;
    // search(std::to_string(i) + fwtxt + std::to_string(i), pat);
    auto cx = data[i].find(pat); //!= std::string::npos)

    // auto it = std::search(data[i].begin(), data[i].end(),
    //                       std::boyer_moore_horspool_searcher(pat.begin(),
    //                       pat.end()));

    // cout << cx << endl;           // std::cout << "found!" << '\n';

    // search(data[i], pat);
  }

  std::cout << ":: " << data[(rand() % 100)] << endl;
  std::chrono::steady_clock::time_point end =
      std::chrono::steady_clock::now();

  std::cout << "Time difference = "
            << std::chrono::duration_cast<std::chrono::milliseconds>(end -
                                                                     begin)
                   .count()
            << "[ms]" << std::endl;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文