diff --git a/collector/compile-benchmarks/README.md b/collector/compile-benchmarks/README.md index 03fa760c6..b8cd263e6 100644 --- a/collector/compile-benchmarks/README.md +++ b/collector/compile-benchmarks/README.md @@ -40,8 +40,6 @@ They mostly consist of real-world crates. - **regex-1.5.5**: A regular expression parser. Used by many Rust programs. - **regex-automata-0.4.8**: A regular expression matching engine. Used by `regex`, which is used by many Rust programs. -- **ripgrep-13.0.0**: A line-oriented search tool. A widely-used utility, and a - binary crate. - **ripgrep-14.1.1**: A line-oriented search tool. A widely-used utility, and a binary crate. - **serde-1.0.219**: A serialization/deserialization crate. Used by many other diff --git a/collector/compile-benchmarks/REUSE.toml b/collector/compile-benchmarks/REUSE.toml index 9523f4767..a757c06af 100644 --- a/collector/compile-benchmarks/REUSE.toml +++ b/collector/compile-benchmarks/REUSE.toml @@ -195,11 +195,6 @@ path = "regression-31157/**" SPDX-FileCopyrightText = "The Rust Project Developers (see https://thanks.rust-lang.org)" SPDX-License-Identifier = "MIT" -[[annotations]] -path = "ripgrep-13.0.0/**" -SPDX-FileCopyrightText = "ripgrep contributors" -SPDX-License-Identifier = "MIT OR Unlicense" - [[annotations]] path = "ripgrep-13.0.0-tiny/**" SPDX-FileCopyrightText = "ripgrep contributors" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.cargo/config.toml b/collector/compile-benchmarks/ripgrep-13.0.0/.cargo/config.toml deleted file mode 100644 index 7db936b49..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.cargo/config.toml +++ /dev/null @@ -1,8 +0,0 @@ -# On Windows MSVC, statically link the C runtime so that the resulting EXE does -# not depend on the vcruntime DLL. -# -# See: https://github.com/BurntSushi/ripgrep/pull/1613 -[target.x86_64-pc-windows-msvc] -rustflags = ["-C", "target-feature=+crt-static"] -[target.i686-pc-windows-msvc] -rustflags = ["-C", "target-feature=+crt-static"] diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.cargo_vcs_info.json b/collector/compile-benchmarks/ripgrep-13.0.0/.cargo_vcs_info.json deleted file mode 100644 index 280bfe1cb..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.cargo_vcs_info.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "af6b6c543b224d348a8876f0c06245d9ea7929c5" - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/bug_report.md b/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 0eac905c0..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -name: Bug report -about: An issue with ripgrep or any of its crates (ignore, globset, etc.) -title: '' -labels: '' -assignees: '' ---- - - -#### What version of ripgrep are you using? - -Replace this text with the output of `rg --version`. - -#### How did you install ripgrep? - -If you installed ripgrep with snap and are getting strange file permission or -file not found errors, then please do not file a bug. Instead, use one of the -Github binary releases. - -#### What operating system are you using ripgrep on? - -Replace this text with your operating system and version. - -#### Describe your bug. - -Give a high level description of the bug. - -#### What are the steps to reproduce the behavior? - -If possible, please include both your search patterns and the corpus on which -you are searching. Unless the bug is very obvious, then it is unlikely that it -will be fixed if the ripgrep maintainers cannot reproduce it. - -If the corpus is too big and you cannot decrease its size, file the bug anyway -and the ripgrep maintainers will help figure out next steps. - -#### What is the actual behavior? - -Show the command you ran and the actual output. Include the `--debug` flag in -your invocation of ripgrep. - -If the output is large, put it in a gist: https://gist.github.com/ - -If the output is small, put it in code fences: - -``` -your -output -goes -here -``` - -#### What is the expected behavior? - -What do you think ripgrep should have done? diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/config.yml b/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index edc820657..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,6 +0,0 @@ -blank_issues_enabled: true -contact_links: - - name: Ask a question - about: | - You've come to seek help or want to discuss something related to ripgrep. - url: https://github.com/BurntSushi/ripgrep/discussions/new diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/feature_request.md b/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index d126467f7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest a new feature for ripgrep -title: '' -labels: '' -assignees: '' ---- - - -#### Describe your feature request - -Please describe the behavior you want and the motivation. Please also provide -examples of how ripgrep would be used if your feature request were added. - -If you're not sure what to write here, then try imagining what the ideal -documentation of your new feature would look like in ripgrep's man page. Then -try to write it. - -If you're requesting the addition or change of default file types, please open -a PR. We can discuss it there if necessary. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/ci.yml b/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/ci.yml deleted file mode 100644 index ab154ec3d..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/ci.yml +++ /dev/null @@ -1,213 +0,0 @@ -name: ci -on: - pull_request: - push: - branches: - - master - schedule: - - cron: '00 01 * * *' -jobs: - test: - name: test - env: - # For some builds, we use cross to test on 32-bit and big-endian - # systems. - CARGO: cargo - # When CARGO is set to CROSS, this is set to `--target matrix.target`. - TARGET_FLAGS: - # When CARGO is set to CROSS, TARGET_DIR includes matrix.target. - TARGET_DIR: ./target - # Emit backtraces on panics. - RUST_BACKTRACE: 1 - runs-on: ${{ matrix.os }} - strategy: - matrix: - build: - # We test ripgrep on a pinned version of Rust, along with the moving - # targets of 'stable' and 'beta' for good measure. - - pinned - - stable - - beta - # Our release builds are generated by a nightly compiler to take - # advantage of the latest optimizations/compile time improvements. So - # we test all of them here. (We don't do mips releases, but test on - # mips for big-endian coverage.) - - nightly - - nightly-musl - - nightly-32 - - nightly-mips - - nightly-arm - - macos - - win-msvc - - win-gnu - include: - - build: pinned - os: ubuntu-18.04 - rust: 1.52.1 - - build: stable - os: ubuntu-18.04 - rust: stable - - build: beta - os: ubuntu-18.04 - rust: beta - - build: nightly - os: ubuntu-18.04 - rust: nightly - - build: nightly-musl - os: ubuntu-18.04 - rust: nightly - target: x86_64-unknown-linux-musl - - build: nightly-32 - os: ubuntu-18.04 - rust: nightly - target: i686-unknown-linux-gnu - - build: nightly-mips - os: ubuntu-18.04 - rust: nightly - target: mips64-unknown-linux-gnuabi64 - - build: nightly-arm - os: ubuntu-18.04 - rust: nightly - # For stripping release binaries: - # docker run --rm -v $PWD/target:/target:Z \ - # rustembedded/cross:arm-unknown-linux-gnueabihf \ - # arm-linux-gnueabihf-strip \ - # /target/arm-unknown-linux-gnueabihf/debug/rg - target: arm-unknown-linux-gnueabihf - - build: macos - os: macos-latest - rust: nightly - - build: win-msvc - os: windows-2019 - rust: nightly - - build: win-gnu - os: windows-2019 - rust: nightly-x86_64-gnu - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Install packages (Ubuntu) - if: matrix.os == 'ubuntu-18.04' - run: | - ci/ubuntu-install-packages - - - name: Install packages (macOS) - if: matrix.os == 'macos-latest' - run: | - ci/macos-install-packages - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: ${{ matrix.rust }} - profile: minimal - override: true - - - name: Use Cross - if: matrix.target != '' - run: | - cargo install cross - echo "CARGO=cross" >> $GITHUB_ENV - echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV - echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV - - - name: Show command used for Cargo - run: | - echo "cargo command is: ${{ env.CARGO }}" - echo "target flag is: ${{ env.TARGET_FLAGS }}" - - - name: Build ripgrep and all crates - run: ${{ env.CARGO }} build --verbose --workspace ${{ env.TARGET_FLAGS }} - - - name: Build ripgrep with PCRE2 - run: ${{ env.CARGO }} build --verbose --workspace --features pcre2 ${{ env.TARGET_FLAGS }} - - # This is useful for debugging problems when the expected build artifacts - # (like shell completions and man pages) aren't generated. - - name: Show build.rs stderr - shell: bash - run: | - set +x - stderr="$(find "${{ env.TARGET_DIR }}/debug" -name stderr -print0 | xargs -0 ls -t | head -n1)" - if [ -s "$stderr" ]; then - echo "===== $stderr ===== " - cat "$stderr" - echo "=====" - fi - set -x - - - name: Run tests with PCRE2 (sans cross) - if: matrix.target == '' - run: ${{ env.CARGO }} test --verbose --workspace --features pcre2 ${{ env.TARGET_FLAGS }} - - - name: Run tests without PCRE2 (with cross) - # These tests should actually work, but they almost double the runtime. - # Every integration test spins up qemu to run 'rg', and when PCRE2 is - # enabled, every integration test is run twice: one with the default - # regex engine and once with PCRE2. - if: matrix.target != '' - run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }} - - - name: Test for existence of build artifacts (Windows) - if: matrix.os == 'windows-2019' - shell: bash - run: | - outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")" - ls "$outdir/_rg.ps1" && file "$outdir/_rg.ps1" - - - name: Test for existence of build artifacts (Unix) - if: matrix.os != 'windows-2019' - shell: bash - run: | - outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")" - # TODO: Check for the man page generation here. For whatever reason, - # it seems to be intermittently failing in CI. No idea why. - # for f in rg.bash rg.fish rg.1; do - for f in rg.bash rg.fish; do - # We could use file -E here, but it isn't supported on macOS. - ls "$outdir/$f" && file "$outdir/$f" - done - - - name: Test zsh shell completions (Unix, sans cross) - # We could test this when using Cross, but we'd have to execute the - # 'rg' binary (done in test-complete) with qemu, which is a pain and - # doesn't really gain us much. If shell completion works in one place, - # it probably works everywhere. - if: matrix.target == '' && matrix.os != 'windows-2019' - shell: bash - run: ci/test-complete - - rustfmt: - name: rustfmt - runs-on: ubuntu-18.04 - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - profile: minimal - components: rustfmt - - name: Check formatting - run: | - cargo fmt --all -- --check - - docs: - name: Docs - runs-on: ubuntu-20.04 - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true - - name: Check documentation - env: - RUSTDOCFLAGS: -D warnings - run: cargo doc --no-deps --document-private-items --workspace diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/release.yml b/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/release.yml deleted file mode 100644 index 7cfb6a46e..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.github/workflows/release.yml +++ /dev/null @@ -1,184 +0,0 @@ -# The way this works is the following: -# -# The create-release job runs purely to initialize the GitHub release itself -# and to output upload_url for the following job. -# -# The build-release job runs only once create-release is finished. It gets the -# release upload URL from create-release job outputs, then builds the release -# executables for each supported platform and attaches them as release assets -# to the previously created release. -# -# The key here is that we create the release only once. -# -# Reference: -# https://eugene-babichenko.github.io/blog/2020/05/09/github-actions-cross-platform-auto-releases/ - -name: release -on: - push: - # Enable when testing release infrastructure on a branch. - # branches: - # - ag/work - tags: - - "[0-9]+.[0-9]+.[0-9]+" -jobs: - create-release: - name: create-release - runs-on: ubuntu-latest - # env: - # Set to force version number, e.g., when no tag exists. - # RG_VERSION: TEST-0.0.0 - outputs: - upload_url: ${{ steps.release.outputs.upload_url }} - rg_version: ${{ env.RG_VERSION }} - steps: - - name: Get the release version from the tag - shell: bash - if: env.RG_VERSION == '' - run: | - # Apparently, this is the right way to get a tag name. Really? - # - # See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027 - echo "RG_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - echo "version is: ${{ env.RG_VERSION }}" - - name: Create GitHub release - id: release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.RG_VERSION }} - release_name: ${{ env.RG_VERSION }} - - build-release: - name: build-release - needs: ['create-release'] - runs-on: ${{ matrix.os }} - env: - # For some builds, we use cross to test on 32-bit and big-endian - # systems. - CARGO: cargo - # When CARGO is set to CROSS, this is set to `--target matrix.target`. - TARGET_FLAGS: "" - # When CARGO is set to CROSS, TARGET_DIR includes matrix.target. - TARGET_DIR: ./target - # Emit backtraces on panics. - RUST_BACKTRACE: 1 - # Build static releases with PCRE2. - PCRE2_SYS_STATIC: 1 - strategy: - matrix: - build: [linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc] - include: - - build: linux - os: ubuntu-18.04 - rust: nightly - target: x86_64-unknown-linux-musl - - build: linux-arm - os: ubuntu-18.04 - rust: nightly - target: arm-unknown-linux-gnueabihf - - build: macos - os: macos-latest - rust: nightly - target: x86_64-apple-darwin - - build: win-msvc - os: windows-2019 - rust: nightly - target: x86_64-pc-windows-msvc - - build: win-gnu - os: windows-2019 - rust: nightly-x86_64-gnu - target: x86_64-pc-windows-gnu - - build: win32-msvc - os: windows-2019 - rust: nightly - target: i686-pc-windows-msvc - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - - name: Install packages (Ubuntu) - if: matrix.os == 'ubuntu-18.04' - run: | - ci/ubuntu-install-packages - - - name: Install packages (macOS) - if: matrix.os == 'macos-latest' - run: | - ci/macos-install-packages - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: ${{ matrix.rust }} - profile: minimal - override: true - target: ${{ matrix.target }} - - - name: Use Cross - shell: bash - run: | - cargo install cross - echo "CARGO=cross" >> $GITHUB_ENV - echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV - echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV - - - name: Show command used for Cargo - run: | - echo "cargo command is: ${{ env.CARGO }}" - echo "target flag is: ${{ env.TARGET_FLAGS }}" - echo "target dir is: ${{ env.TARGET_DIR }}" - - - name: Build release binary - run: ${{ env.CARGO }} build --verbose --release --features pcre2 ${{ env.TARGET_FLAGS }} - - - name: Strip release binary (linux and macos) - if: matrix.build == 'linux' || matrix.build == 'macos' - run: strip "target/${{ matrix.target }}/release/rg" - - - name: Strip release binary (arm) - if: matrix.build == 'linux-arm' - run: | - docker run --rm -v \ - "$PWD/target:/target:Z" \ - rustembedded/cross:arm-unknown-linux-gnueabihf \ - arm-linux-gnueabihf-strip \ - /target/arm-unknown-linux-gnueabihf/release/rg - - - name: Build archive - shell: bash - run: | - outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")" - staging="ripgrep-${{ needs.create-release.outputs.rg_version }}-${{ matrix.target }}" - mkdir -p "$staging"/{complete,doc} - - cp {README.md,COPYING,UNLICENSE,LICENSE-MIT} "$staging/" - cp {CHANGELOG.md,FAQ.md,GUIDE.md} "$staging/doc/" - cp "$outdir"/{rg.bash,rg.fish,_rg.ps1} "$staging/complete/" - cp complete/_rg "$staging/complete/" - - if [ "${{ matrix.os }}" = "windows-2019" ]; then - cp "target/${{ matrix.target }}/release/rg.exe" "$staging/" - 7z a "$staging.zip" "$staging" - echo "ASSET=$staging.zip" >> $GITHUB_ENV - else - # The man page is only generated on Unix systems. ¯\_(ツ)_/¯ - cp "$outdir"/rg.1 "$staging/doc/" - cp "target/${{ matrix.target }}/release/rg" "$staging/" - tar czf "$staging.tar.gz" "$staging" - echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV - fi - - - name: Upload release archive - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.create-release.outputs.upload_url }} - asset_path: ${{ env.ASSET }} - asset_name: ${{ env.ASSET }} - asset_content_type: application/octet-stream diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/.gitignore b/collector/compile-benchmarks/ripgrep-13.0.0/.gitignore deleted file mode 100644 index aefc2c0ed..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -.*.swp -tags -target -/grep/Cargo.lock -/globset/Cargo.lock -/ignore/Cargo.lock -/termcolor/Cargo.lock -/wincolor/Cargo.lock -/deployment - -# Snapcraft files -stage -prime -parts -*.snap -*.pyc -ripgrep*_source.tar.bz2 - -# Cargo timings -cargo-timing-*.html -cargo-timing.html diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/0-println.patch b/collector/compile-benchmarks/ripgrep-13.0.0/0-println.patch deleted file mode 100644 index 4ad828a2d..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/0-println.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/crates/core/search.rs b/crates/core/search.rs -index 6dc51cfe..a8a569e2 100644 ---- a/crates/core/search.rs -+++ b/crates/core/search.rs -@@ -477,6 +477,7 @@ fn search_path( - printer: &mut Printer, - path: &Path, - ) -> io::Result { -+ println!("testing"); - match *printer { - Printer::Standard(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/CHANGELOG.md b/collector/compile-benchmarks/ripgrep-13.0.0/CHANGELOG.md deleted file mode 100644 index 1d02996fe..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/CHANGELOG.md +++ /dev/null @@ -1,1477 +0,0 @@ -13.0.0 (2021-06-12) -=================== -ripgrep 13 is a new major version release of ripgrep that primarily contains -bug fixes, some performance improvements and a few minor breaking changes. -There is also a fix for a security vulnerability on Windows -([CVE-2021-3013](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3013)). - -Some highlights: - -A new short flag, `-.`, has been added. It is an alias for the `--hidden` flag, -which instructs ripgrep to search hidden files and directories. - -ripgrep is now using a new -[vectorized implementation of `memmem`](https://github.com/BurntSushi/memchr/pull/82), -which accelerates many common searches. If you notice any performance -regressions (or major improvements), I'd love to hear about them through an -issue report! - -Also, for Windows users targeting MSVC, Cargo will now build fully static -executables of ripgrep. The release binaries for ripgrep 13 have been compiled -using this configuration. - -**BREAKING CHANGES**: - -**Binary detection output has changed slightly.** - -In this release, a small tweak has been made to the output format when a binary -file is detected. Previously, it looked like this: - -``` -Binary file FOO matches (found "\0" byte around offset XXX) -``` - -Now it looks like this: - -``` -FOO: binary file matches (found "\0" byte around offset XXX) -``` - -**vimgrep output in multi-line now only prints the first line for each match.** - -See [issue 1866](https://github.com/BurntSushi/ripgrep/issues/1866) for more -discussion on this. Previously, every line in a match was duplicated, even -when it spanned multiple lines. There are no changes to vimgrep output when -multi-line mode is disabled. - -**In multi-line mode, --count is now equivalent to --count-matches.** - -This appears to match how `pcre2grep` implements `--count`. Previously, ripgrep -would produce outright incorrect counts. Another alternative would be to simply -count the number of lines---even if it's more than the number of matches---but -that seems highly unintuitive. - -**FULL LIST OF FIXES AND IMPROVEMENTS:** - -Security fixes: - -* [CVE-2021-3013](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3013): - Fixes a security hole on Windows where running ripgrep with either the - `-z/--search-zip` or `--pre` flags can result in running arbitrary - executables from the current directory. -* [VULN #1773](https://github.com/BurntSushi/ripgrep/issues/1773): - This is the public facing issue tracking CVE-2021-3013. ripgrep's README - now contains a section describing how to report a vulnerability. - -Performance improvements: - -* [PERF #1657](https://github.com/BurntSushi/ripgrep/discussions/1657): - Check if a file should be ignored first before issuing stat calls. -* [PERF memchr#82](https://github.com/BurntSushi/memchr/pull/82): - ripgrep now uses a new vectorized implementation of `memmem`. - -Feature enhancements: - -* Added or improved file type filtering for ASP, Bazel, dvc, FlatBuffers, - Futhark, minified files, Mint, pofiles (from GNU gettext) Racket, Red, Ruby, - VCL, Yang. -* [FEATURE #1404](https://github.com/BurntSushi/ripgrep/pull/1404): - ripgrep now prints a warning if nothing is searched. -* [FEATURE #1613](https://github.com/BurntSushi/ripgrep/pull/1613): - Cargo will now produce static executables on Windows when using MSVC. -* [FEATURE #1680](https://github.com/BurntSushi/ripgrep/pull/1680): - Add `-.` as a short flag alias for `--hidden`. -* [FEATURE #1842](https://github.com/BurntSushi/ripgrep/issues/1842): - Add `--field-{context,match}-separator` for customizing field delimiters. -* [FEATURE #1856](https://github.com/BurntSushi/ripgrep/pull/1856): - The README now links to a - [Spanish translation](https://github.com/UltiRequiem/traducciones/tree/master/ripgrep). - -Bug fixes: - -* [BUG #1277](https://github.com/BurntSushi/ripgrep/issues/1277): - Document cygwin path translation behavior in the FAQ. -* [BUG #1739](https://github.com/BurntSushi/ripgrep/issues/1739): - Fix bug where replacements were buggy if the regex matched a line terminator. -* [BUG #1311](https://github.com/BurntSushi/ripgrep/issues/1311): - Fix multi-line bug where a search & replace for `\n` didn't work as expected. -* [BUG #1401](https://github.com/BurntSushi/ripgrep/issues/1401): - Fix buggy interaction between PCRE2 look-around and `-o/--only-matching`. -* [BUG #1412](https://github.com/BurntSushi/ripgrep/issues/1412): - Fix multi-line bug with searches using look-around past matching lines. -* [BUG #1577](https://github.com/BurntSushi/ripgrep/issues/1577): - Fish shell completions will continue to be auto-generated. -* [BUG #1642](https://github.com/BurntSushi/ripgrep/issues/1642): - Fixes a bug where using `-m` and `-A` printed more matches than the limit. -* [BUG #1703](https://github.com/BurntSushi/ripgrep/issues/1703): - Clarify the function of `-u/--unrestricted`. -* [BUG #1708](https://github.com/BurntSushi/ripgrep/issues/1708): - Clarify how `-S/--smart-case` works. -* [BUG #1730](https://github.com/BurntSushi/ripgrep/issues/1730): - Clarify that CLI invocation must always be valid, regardless of config file. -* [BUG #1741](https://github.com/BurntSushi/ripgrep/issues/1741): - Fix stdin detection when using PowerShell in UNIX environments. -* [BUG #1756](https://github.com/BurntSushi/ripgrep/pull/1756): - Fix bug where `foo/**` would match `foo`, but it shouldn't. -* [BUG #1765](https://github.com/BurntSushi/ripgrep/issues/1765): - Fix panic when `--crlf` is used in some cases. -* [BUG #1638](https://github.com/BurntSushi/ripgrep/issues/1638): - Correctly sniff UTF-8 and do transcoding, like we do for UTF-16. -* [BUG #1816](https://github.com/BurntSushi/ripgrep/issues/1816): - Add documentation for glob alternate syntax, e.g., `{a,b,..}`. -* [BUG #1847](https://github.com/BurntSushi/ripgrep/issues/1847): - Clarify how the `--hidden` flag works. -* [BUG #1866](https://github.com/BurntSushi/ripgrep/issues/1866#issuecomment-841635553): - Fix bug when computing column numbers in `--vimgrep` mode. -* [BUG #1868](https://github.com/BurntSushi/ripgrep/issues/1868): - Fix bug where `--passthru` and `-A/-B/-C` did not override each other. -* [BUG #1869](https://github.com/BurntSushi/ripgrep/pull/1869): - Clarify docs for `--files-with-matches` and `--files-without-match`. -* [BUG #1878](https://github.com/BurntSushi/ripgrep/issues/1878): - Fix bug where `\A` could produce unanchored matches in multiline search. -* [BUG 94e4b8e3](https://github.com/BurntSushi/ripgrep/commit/94e4b8e3): - Fix column numbers with `--vimgrep` is used with `-U/--multiline`. - - -12.1.1 (2020-05-29) -=================== -ripgrep 12.1.1 is a patch release that fixes a couple small bugs. In -particular, the ripgrep 12.1.0 release did not tag new releases for all of its -in-tree dependencies. As a result, ripgrep built dependencies from crates.io -would produce a different build than compiling ripgrep from source on the -`12.1.0` tag. Namely, some crates like `grep-cli` had unreleased changes. - -Bug fixes: - -* [BUG #1581](https://github.com/BurntSushi/ripgrep/issues/1581): - Corrects some egregious markup output in `--help`. -* [BUG #1591](https://github.com/BurntSushi/ripgrep/issues/1591): - Mention the special `$0` capture group in docs for the `-r/--replace` flag. -* [BUG #1602](https://github.com/BurntSushi/ripgrep/issues/1602): - Fix failing test resulting from out-of-sync dependencies. - - -12.1.0 (2020-05-09) -=================== -ripgrep 12.1.0 is a small minor version release that mostly includes bug fixes -and documentation improvements. This release also contains some important -notices for downstream packagers. - -**Notices for downstream ripgrep package maintainers:** - -* Fish shell completions will be removed in the ripgrep 13 release. - See [#1577](https://github.com/BurntSushi/ripgrep/issues/1577) - for more details. -* ripgrep has switched from `a2x` to `asciidoctor` to generate the man page. - If `asciidoctor` is not present, then ripgrep will currently fall back to - `a2x`. Support for `a2x` will be dropped in the ripgrep 13 release. - See [#1544](https://github.com/BurntSushi/ripgrep/issues/1544) - for more details. - -Feature enhancements: - -* [FEATURE #1547](https://github.com/BurntSushi/ripgrep/pull/1547): - Support decompressing `.Z` files via `uncompress`. - -Bug fixes: - -* [BUG #1252](https://github.com/BurntSushi/ripgrep/issues/1252): - Add a section on the `--pre` flag to the GUIDE. -* [BUG #1339](https://github.com/BurntSushi/ripgrep/issues/1339): - Improve error message when a pattern with invalid UTF-8 is provided. -* [BUG #1524](https://github.com/BurntSushi/ripgrep/issues/1524): - Note how to escape a `$` when using `--replace`. -* [BUG #1537](https://github.com/BurntSushi/ripgrep/issues/1537): - Fix match bug caused by inner literal optimization. -* [BUG #1544](https://github.com/BurntSushi/ripgrep/issues/1544): - ripgrep now uses `asciidoctor` instead of `a2x` to generate its man page. -* [BUG #1550](https://github.com/BurntSushi/ripgrep/issues/1550): - Substantially reduce peak memory usage when searching wide directories. -* [BUG #1571](https://github.com/BurntSushi/ripgrep/issues/1571): - Add note about configuration files in `--type-{add,clear}` docs. -* [BUG #1573](https://github.com/BurntSushi/ripgrep/issues/1573): - Fix incorrect `--count-matches` output when using look-around. - - -12.0.1 (2020-03-29) -=================== -ripgrep 12.0.1 is a small patch release that includes a minor bug fix relating -to superfluous error messages when searching git repositories with sub-modules. -This was a regression introduced in the 12.0.0 release. - -Bug fixes: - -* [BUG #1520](https://github.com/BurntSushi/ripgrep/issues/1520): - Don't emit spurious error messages in git repositories with submodules. - - -12.0.0 (2020-03-15) -=================== -ripgrep 12 is a new major version release of ripgrep that contains many bug -fixes, several important performance improvements and a few minor new features. - -In a near future release, I am hoping to add an -[indexing feature](https://github.com/BurntSushi/ripgrep/issues/1497) -to ripgrep, which will dramatically speed up searching by building an index. -Feedback would very much be appreciated, especially on the user experience -which will be difficult to get right. - -This release has no known breaking changes. - -Deprecations: - -* The `--no-pcre2-unicode` flag is deprecated. Instead, use the `--no-unicode` - flag, which applies to both the default regex engine and PCRE2. For now, - `--no-pcre2-unicode` and `--pcre2-unicode` are aliases to `--no-unicode` - and `--unicode`, respectively. The `--[no-]pcre2-unicode` flags may be - removed in a future release. -* The `--auto-hybrid-regex` flag is deprecated. Instead, use the new `--engine` - flag with the `auto` value. - -Performance improvements: - -* [PERF #1087](https://github.com/BurntSushi/ripgrep/pull/1087): - ripgrep is smarter when detected literals are whitespace. -* [PERF #1381](https://github.com/BurntSushi/ripgrep/pull/1381): - Directory traversal is sped up with speculative ignore-file existence checks. -* [PERF cd8ec38a](https://github.com/BurntSushi/ripgrep/commit/cd8ec38a): - Improve inner literal detection to cover more cases more effectively. - e.g., ` +Sherlock Holmes +` now has ` Sherlock Holmes ` extracted instead - of ` `. -* [PERF 6a0e0147](https://github.com/BurntSushi/ripgrep/commit/6a0e0147): - Improve literal detection when the `-w/--word-regexp` flag is used. -* [PERF ad97e9c9](https://github.com/BurntSushi/ripgrep/commit/ad97e9c9): - Improve overall performance of the `-w/--word-regexp` flag. - -Feature enhancements: - -* Added or improved file type filtering for erb, diff, Gradle, HAML, Org, - Postscript, Skim, Slim, Slime, RPM Spec files, Typoscript, xml. -* [FEATURE #1370](https://github.com/BurntSushi/ripgrep/pull/1370): - Add `--include-zero` flag that shows files searched without matches. -* [FEATURE #1390](https://github.com/BurntSushi/ripgrep/pull/1390): - Add `--no-context-separator` flag that always hides context separators. -* [FEATURE #1414](https://github.com/BurntSushi/ripgrep/pull/1414): - Add `--no-require-git` flag to allow ripgrep to respect gitignores anywhere. -* [FEATURE #1420](https://github.com/BurntSushi/ripgrep/pull/1420): - Add `--no-ignore-exclude` to disregard rules in `.git/info/exclude` files. -* [FEATURE #1466](https://github.com/BurntSushi/ripgrep/pull/1466): - Add `--no-ignore-files` flag to disable all `--ignore-file` flags. -* [FEATURE #1488](https://github.com/BurntSushi/ripgrep/pull/1488): - Add '--engine' flag for easier switching between regex engines. -* [FEATURE 75cbe88f](https://github.com/BurntSushi/ripgrep/commit/75cbe88f): - Add `--no-unicode` flag. This works on all supported regex engines. - -Bug fixes: - -* [BUG #1291](https://github.com/BurntSushi/ripgrep/issues/1291): - ripgrep now works in non-existent directories. -* [BUG #1319](https://github.com/BurntSushi/ripgrep/issues/1319): - Fix match bug due to errant literal detection. -* [**BUG #1335**](https://github.com/BurntSushi/ripgrep/issues/1335): - Fixes a performance bug when searching plain text files with very long lines. - This was a serious performance regression in some cases. -* [BUG #1344](https://github.com/BurntSushi/ripgrep/issues/1344): - Document usage of `--type all`. -* [BUG #1389](https://github.com/BurntSushi/ripgrep/issues/1389): - Fixes a bug where ripgrep would panic when searching a symlinked directory. -* [BUG #1439](https://github.com/BurntSushi/ripgrep/issues/1439): - Improve documentation for ripgrep's automatic stdin detection. -* [BUG #1441](https://github.com/BurntSushi/ripgrep/issues/1441): - Remove CPU features from man page. -* [BUG #1442](https://github.com/BurntSushi/ripgrep/issues/1442), - [BUG #1478](https://github.com/BurntSushi/ripgrep/issues/1478): - Improve documentation of the `-g/--glob` flag. -* [BUG #1445](https://github.com/BurntSushi/ripgrep/issues/1445): - ripgrep now respects ignore rules from .git/info/exclude in worktrees. -* [BUG #1485](https://github.com/BurntSushi/ripgrep/issues/1485): - Fish shell completions from the release Debian package are now installed to - `/usr/share/fish/vendor_completions.d/rg.fish`. - - -11.0.2 (2019-08-01) -=================== -ripgrep 11.0.2 is a new patch release that fixes a few bugs, including a -performance regression and a matching bug when using the `-F/--fixed-strings` -flag. - -Feature enhancements: - -* [FEATURE #1293](https://github.com/BurntSushi/ripgrep/issues/1293): - Added `--glob-case-insensitive` flag that makes `--glob` behave as `--iglob`. - -Bug fixes: - -* [BUG #1246](https://github.com/BurntSushi/ripgrep/issues/1246): - Add translations to README, starting with an unofficial Chinese translation. -* [BUG #1259](https://github.com/BurntSushi/ripgrep/issues/1259): - Fix bug where the last byte of a `-f file` was stripped if it wasn't a `\n`. -* [BUG #1261](https://github.com/BurntSushi/ripgrep/issues/1261): - Document that no error is reported when searching for `\n` with `-P/--pcre2`. -* [BUG #1284](https://github.com/BurntSushi/ripgrep/issues/1284): - Mention `.ignore` and `.rgignore` more prominently in the README. -* [BUG #1292](https://github.com/BurntSushi/ripgrep/issues/1292): - Fix bug where `--with-filename` was sometimes enabled incorrectly. -* [BUG #1268](https://github.com/BurntSushi/ripgrep/issues/1268): - Fix major performance regression in GitHub `x86_64-linux` binary release. -* [BUG #1302](https://github.com/BurntSushi/ripgrep/issues/1302): - Show better error messages when a non-existent preprocessor command is given. -* [BUG #1334](https://github.com/BurntSushi/ripgrep/issues/1334): - Fix match regression with `-F` flag when patterns contain meta characters. - - -11.0.1 (2019-04-16) -=================== -ripgrep 11.0.1 is a new patch release that fixes a search regression introduced -in the previous 11.0.0 release. In particular, ripgrep can enter an infinite -loop for some search patterns when searching invalid UTF-8. - -Bug fixes: - -* [BUG #1247](https://github.com/BurntSushi/ripgrep/issues/1247): - Fix search bug that can cause ripgrep to enter an infinite loop. - - -11.0.0 (2019-04-15) -=================== -ripgrep 11 is a new major version release of ripgrep that contains many bug -fixes, some performance improvements and a few feature enhancements. Notably, -ripgrep's user experience for binary file filtering has been improved. See the -[guide's new section on binary data](GUIDE.md#binary-data) for more details. - -This release also marks a change in ripgrep's versioning. Where as the previous -version was `0.10.0`, this version is `11.0.0`. Moving forward, ripgrep's -major version will be increased a few times per year. ripgrep will continue to -be conservative with respect to backwards compatibility, but may occasionally -introduce breaking changes, which will always be documented in this CHANGELOG. -See [issue 1172](https://github.com/BurntSushi/ripgrep/issues/1172) for a bit -more detail on why this versioning change was made. - -This release increases the **minimum supported Rust version** from 1.28.0 to -1.34.0. - -**BREAKING CHANGES**: - -* ripgrep has tweaked its exit status codes to be more like GNU grep's. Namely, - if a non-fatal error occurs during a search, then ripgrep will now always - emit a `2` exit status code, regardless of whether a match is found or not. - Previously, ripgrep would only emit a `2` exit status code for a catastrophic - error (e.g., regex syntax error). One exception to this is if ripgrep is run - with `-q/--quiet`. In that case, if an error occurs and a match is found, - then ripgrep will exit with a `0` exit status code. -* Supplying the `-u/--unrestricted` flag three times is now equivalent to - supplying `--no-ignore --hidden --binary`. Previously, `-uuu` was equivalent - to `--no-ignore --hidden --text`. The difference is that `--binary` disables - binary file filtering without potentially dumping binary data into your - terminal. That is, `rg -uuu foo` should now be equivalent to `grep -r foo`. -* The `avx-accel` feature of ripgrep has been removed since it is no longer - necessary. All uses of AVX in ripgrep are now enabled automatically via - runtime CPU feature detection. The `simd-accel` feature does remain available - (only for enabling SIMD for transcoding), however, it does increase - compilation times substantially at the moment. - -Performance improvements: - -* [PERF #497](https://github.com/BurntSushi/ripgrep/issues/497), - [PERF #838](https://github.com/BurntSushi/ripgrep/issues/838): - Make `rg -F -f dictionary-of-literals` much faster. - -Feature enhancements: - -* Added or improved file type filtering for Apache Thrift, ASP, Bazel, Brotli, - BuildStream, bzip2, C, C++, Cython, gzip, Java, Make, Postscript, QML, Tex, - XML, xz, zig and zstd. -* [FEATURE #855](https://github.com/BurntSushi/ripgrep/issues/855): - Add `--binary` flag for disabling binary file filtering. -* [FEATURE #1078](https://github.com/BurntSushi/ripgrep/pull/1078): - Add `--max-columns-preview` flag for showing a preview of long lines. -* [FEATURE #1099](https://github.com/BurntSushi/ripgrep/pull/1099): - Add support for Brotli and Zstd to the `-z/--search-zip` flag. -* [FEATURE #1138](https://github.com/BurntSushi/ripgrep/pull/1138): - Add `--no-ignore-dot` flag for ignoring `.ignore` files. -* [FEATURE #1155](https://github.com/BurntSushi/ripgrep/pull/1155): - Add `--auto-hybrid-regex` flag for automatically falling back to PCRE2. -* [FEATURE #1159](https://github.com/BurntSushi/ripgrep/pull/1159): - ripgrep's exit status logic should now match GNU grep. See updated man page. -* [FEATURE #1164](https://github.com/BurntSushi/ripgrep/pull/1164): - Add `--ignore-file-case-insensitive` for case insensitive ignore globs. -* [FEATURE #1185](https://github.com/BurntSushi/ripgrep/pull/1185): - Add `-I` flag as a short option for the `--no-filename` flag. -* [FEATURE #1207](https://github.com/BurntSushi/ripgrep/pull/1207): - Add `none` value to `-E/--encoding` to forcefully disable all transcoding. -* [FEATURE da9d7204](https://github.com/BurntSushi/ripgrep/commit/da9d7204): - Add `--pcre2-version` for querying showing PCRE2 version information. - -Bug fixes: - -* [BUG #306](https://github.com/BurntSushi/ripgrep/issues/306), - [BUG #855](https://github.com/BurntSushi/ripgrep/issues/855): - Improve the user experience for ripgrep's binary file filtering. -* [BUG #373](https://github.com/BurntSushi/ripgrep/issues/373), - [BUG #1098](https://github.com/BurntSushi/ripgrep/issues/1098): - `**` is now accepted as valid syntax anywhere in a glob. -* [BUG #916](https://github.com/BurntSushi/ripgrep/issues/916): - ripgrep no longer hangs when searching `/proc` with a zombie process present. -* [BUG #1052](https://github.com/BurntSushi/ripgrep/issues/1052): - Fix bug where ripgrep could panic when transcoding UTF-16 files. -* [BUG #1055](https://github.com/BurntSushi/ripgrep/issues/1055): - Suggest `-U/--multiline` when a pattern contains a `\n`. -* [BUG #1063](https://github.com/BurntSushi/ripgrep/issues/1063): - Always strip a BOM if it's present, even for UTF-8. -* [BUG #1064](https://github.com/BurntSushi/ripgrep/issues/1064): - Fix inner literal detection that could lead to incorrect matches. -* [BUG #1079](https://github.com/BurntSushi/ripgrep/issues/1079): - Fixes a bug where the order of globs could result in missing a match. -* [BUG #1089](https://github.com/BurntSushi/ripgrep/issues/1089): - Fix another bug where ripgrep could panic when transcoding UTF-16 files. -* [BUG #1091](https://github.com/BurntSushi/ripgrep/issues/1091): - Add note about inverted flags to the man page. -* [BUG #1093](https://github.com/BurntSushi/ripgrep/pull/1093): - Fix handling of literal slashes in gitignore patterns. -* [BUG #1095](https://github.com/BurntSushi/ripgrep/issues/1095): - Fix corner cases involving the `--crlf` flag. -* [BUG #1101](https://github.com/BurntSushi/ripgrep/issues/1101): - Fix AsciiDoc escaping for man page output. -* [BUG #1103](https://github.com/BurntSushi/ripgrep/issues/1103): - Clarify what `--encoding auto` does. -* [BUG #1106](https://github.com/BurntSushi/ripgrep/issues/1106): - `--files-with-matches` and `--files-without-match` work with one file. -* [BUG #1121](https://github.com/BurntSushi/ripgrep/issues/1121): - Fix bug that was triggering Windows antimalware when using the `--files` - flag. -* [BUG #1125](https://github.com/BurntSushi/ripgrep/issues/1125), - [BUG #1159](https://github.com/BurntSushi/ripgrep/issues/1159): - ripgrep shouldn't panic for `rg -h | rg` and should emit correct exit status. -* [BUG #1144](https://github.com/BurntSushi/ripgrep/issues/1144): - Fixes a bug where line numbers could be wrong on big-endian machines. -* [BUG #1154](https://github.com/BurntSushi/ripgrep/issues/1154): - Windows files with "hidden" attribute are now treated as hidden. -* [BUG #1173](https://github.com/BurntSushi/ripgrep/issues/1173): - Fix handling of `**` patterns in gitignore files. -* [BUG #1174](https://github.com/BurntSushi/ripgrep/issues/1174): - Fix handling of repeated `**` patterns in gitignore files. -* [BUG #1176](https://github.com/BurntSushi/ripgrep/issues/1176): - Fix bug where `-F`/`-x` weren't applied to patterns given via `-f`. -* [BUG #1189](https://github.com/BurntSushi/ripgrep/issues/1189): - Document cases where ripgrep may use a lot of memory. -* [BUG #1203](https://github.com/BurntSushi/ripgrep/issues/1203): - Fix a matching bug related to the suffix literal optimization. -* [BUG 8f14cb18](https://github.com/BurntSushi/ripgrep/commit/8f14cb18): - Increase the default stack size for PCRE2's JIT. - - -0.10.0 (2018-09-07) -=================== -This is a new minor version release of ripgrep that contains some major new -features, a huge number of bug fixes, and is the first release based on -libripgrep. The entirety of ripgrep's core search and printing code has been -rewritten and generalized so that anyone can make use of it. - -Major new features include PCRE2 support, multi-line search and a JSON output -format. - -**BREAKING CHANGES**: - -* The minimum version required to compile Rust has now changed to track the - latest stable version of Rust. Patch releases will continue to compile with - the same version of Rust as the previous patch release, but new minor - versions will use the current stable version of the Rust compile as its - minimum supported version. -* The match semantics of `-w/--word-regexp` have changed slightly. They used - to be `\b(?:)\b`, but now it's - `(?:^|\W)(?:)(?:$|\W)`. This matches the behavior of GNU grep - and is believed to be closer to the intended semantics of the flag. See - [#389](https://github.com/BurntSushi/ripgrep/issues/389) for more details. - -Feature enhancements: - -* [FEATURE #162](https://github.com/BurntSushi/ripgrep/issues/162): - libripgrep is now a thing. The primary crate is - [`grep`](https://docs.rs/grep). -* [FEATURE #176](https://github.com/BurntSushi/ripgrep/issues/176): - Add `-U/--multiline` flag that permits matching over multiple lines. -* [FEATURE #188](https://github.com/BurntSushi/ripgrep/issues/188): - Add `-P/--pcre2` flag that gives support for look-around and backreferences. -* [FEATURE #244](https://github.com/BurntSushi/ripgrep/issues/244): - Add `--json` flag that prints results in a JSON Lines format. -* [FEATURE #321](https://github.com/BurntSushi/ripgrep/issues/321): - Add `--one-file-system` flag to skip directories on different file systems. -* [FEATURE #404](https://github.com/BurntSushi/ripgrep/issues/404): - Add `--sort` and `--sortr` flag for more sorting. Deprecate `--sort-files`. -* [FEATURE #416](https://github.com/BurntSushi/ripgrep/issues/416): - Add `--crlf` flag to permit `$` to work with carriage returns on Windows. -* [FEATURE #917](https://github.com/BurntSushi/ripgrep/issues/917): - The `--trim` flag strips prefix whitespace from all lines printed. -* [FEATURE #993](https://github.com/BurntSushi/ripgrep/issues/993): - Add `--null-data` flag, which makes ripgrep use NUL as a line terminator. -* [FEATURE #997](https://github.com/BurntSushi/ripgrep/issues/997): - The `--passthru` flag now works with the `--replace` flag. -* [FEATURE #1038-1](https://github.com/BurntSushi/ripgrep/issues/1038): - Add `--line-buffered` and `--block-buffered` for forcing a buffer strategy. -* [FEATURE #1038-2](https://github.com/BurntSushi/ripgrep/issues/1038): - Add `--pre-glob` for filtering files through the `--pre` flag. - -Bug fixes: - -* [BUG #2](https://github.com/BurntSushi/ripgrep/issues/2): - Searching with non-zero context can now use memory maps if appropriate. -* [BUG #200](https://github.com/BurntSushi/ripgrep/issues/200): - ripgrep will now stop correctly when its output pipe is closed. -* [BUG #389](https://github.com/BurntSushi/ripgrep/issues/389): - The `-w/--word-regexp` flag now works more intuitively. -* [BUG #643](https://github.com/BurntSushi/ripgrep/issues/643): - Detection of readable stdin has improved on Windows. -* [BUG #441](https://github.com/BurntSushi/ripgrep/issues/441), - [BUG #690](https://github.com/BurntSushi/ripgrep/issues/690), - [BUG #980](https://github.com/BurntSushi/ripgrep/issues/980): - Matching empty lines now works correctly in several corner cases. -* [BUG #764](https://github.com/BurntSushi/ripgrep/issues/764): - Color escape sequences now coalesce, which reduces output size. -* [BUG #842](https://github.com/BurntSushi/ripgrep/issues/842): - Add man page to binary Debian package. -* [BUG #922](https://github.com/BurntSushi/ripgrep/issues/922): - ripgrep is now more robust with respect to memory maps failing. -* [BUG #937](https://github.com/BurntSushi/ripgrep/issues/937): - Color escape sequences are no longer emitted for empty matches. -* [BUG #940](https://github.com/BurntSushi/ripgrep/issues/940): - Context from the `--passthru` flag should not impact process exit status. -* [BUG #984](https://github.com/BurntSushi/ripgrep/issues/984): - Fixes bug in `ignore` crate where first path was always treated as a symlink. -* [BUG #990](https://github.com/BurntSushi/ripgrep/issues/990): - Read stderr asynchronously when running a process. -* [BUG #1013](https://github.com/BurntSushi/ripgrep/issues/1013): - Add compile time and runtime CPU features to `--version` output. -* [BUG #1028](https://github.com/BurntSushi/ripgrep/pull/1028): - Don't complete bare pattern after `-f` in zsh. - - -0.9.0 (2018-08-03) -================== -This is a new minor version release of ripgrep that contains some minor new -features and a panoply of bug fixes. - -Releases provided on Github for `x86_64` will now work on all target CPUs, and -will also automatically take advantage of features found on modern CPUs (such -as AVX2) for additional optimizations. - -This release increases the **minimum supported Rust version** from 1.20.0 to -1.23.0. - -It is anticipated that the next release of ripgrep (0.10.0) will provide -multi-line search support and a JSON output format. - -**BREAKING CHANGES**: - -* When `--count` and `--only-matching` are provided simultaneously, the - behavior of ripgrep is as if the `--count-matches` flag was given. That is, - the total number of matches is reported, where there may be multiple matches - per line. Previously, the behavior of ripgrep was to report the total number - of matching lines. (Note that this behavior diverges from the behavior of - GNU grep.) -* Octal syntax is no longer supported. ripgrep previously accepted expressions - like `\1` as syntax for matching `U+0001`, but ripgrep will now report an - error instead. -* The `--line-number-width` flag has been removed. Its functionality was not - carefully considered with all ripgrep output formats. - See [#795](https://github.com/BurntSushi/ripgrep/issues/795) for more - details. - -Feature enhancements: - -* Added or improved file type filtering for Android, Bazel, Fuchsia, Haskell, - Java and Puppet. -* [FEATURE #411](https://github.com/BurntSushi/ripgrep/issues/411): - Add a `--stats` flag, which emits aggregate statistics after search results. -* [FEATURE #646](https://github.com/BurntSushi/ripgrep/issues/646): - Add a `--no-ignore-messages` flag, which suppresses parse errors from reading - `.ignore` and `.gitignore` files. -* [FEATURE #702](https://github.com/BurntSushi/ripgrep/issues/702): - Support `\u{..}` Unicode escape sequences. -* [FEATURE #812](https://github.com/BurntSushi/ripgrep/issues/812): - Add `-b/--byte-offset` flag that shows the byte offset of each matching line. -* [FEATURE #814](https://github.com/BurntSushi/ripgrep/issues/814): - Add `--count-matches` flag, which is like `--count`, but for each match. -* [FEATURE #880](https://github.com/BurntSushi/ripgrep/issues/880): - Add a `--no-column` flag, which disables column numbers in the output. -* [FEATURE #898](https://github.com/BurntSushi/ripgrep/issues/898): - Add support for `lz4` when using the `-z/--search-zip` flag. -* [FEATURE #924](https://github.com/BurntSushi/ripgrep/issues/924): - `termcolor` has moved to its own repository: - https://github.com/BurntSushi/termcolor -* [FEATURE #934](https://github.com/BurntSushi/ripgrep/issues/934): - Add a new flag, `--no-ignore-global`, that permits disabling global - gitignores. -* [FEATURE #967](https://github.com/BurntSushi/ripgrep/issues/967): - Rename `--maxdepth` to `--max-depth` for consistency. Keep `--maxdepth` for - backwards compatibility. -* [FEATURE #978](https://github.com/BurntSushi/ripgrep/issues/978): - Add a `--pre` option to filter inputs with an arbitrary program. -* [FEATURE fca9709d](https://github.com/BurntSushi/ripgrep/commit/fca9709d): - Improve zsh completion. - -Bug fixes: - -* [BUG #135](https://github.com/BurntSushi/ripgrep/issues/135): - Release portable binaries that conditionally use SSSE3, AVX2, etc., at - runtime. -* [BUG #268](https://github.com/BurntSushi/ripgrep/issues/268): - Print descriptive error message when trying to use look-around or - backreferences. -* [BUG #395](https://github.com/BurntSushi/ripgrep/issues/395): - Show comprehensible error messages for regexes like `\s*{`. -* [BUG #526](https://github.com/BurntSushi/ripgrep/issues/526): - Support backslash escapes in globs. -* [BUG #795](https://github.com/BurntSushi/ripgrep/issues/795): - Fix problems with `--line-number-width` by removing it. -* [BUG #832](https://github.com/BurntSushi/ripgrep/issues/832): - Clarify usage instructions for `-f/--file` flag. -* [BUG #835](https://github.com/BurntSushi/ripgrep/issues/835): - Fix small performance regression while crawling very large directory trees. -* [BUG #851](https://github.com/BurntSushi/ripgrep/issues/851): - Fix `-S/--smart-case` detection once and for all. -* [BUG #852](https://github.com/BurntSushi/ripgrep/issues/852): - Be robust with respect to `ENOMEM` errors returned by `mmap`. -* [BUG #853](https://github.com/BurntSushi/ripgrep/issues/853): - Upgrade `grep` crate to `regex-syntax 0.6.0`. -* [BUG #893](https://github.com/BurntSushi/ripgrep/issues/893): - Improve support for git submodules. -* [BUG #900](https://github.com/BurntSushi/ripgrep/issues/900): - When no patterns are given, ripgrep should never match anything. -* [BUG #907](https://github.com/BurntSushi/ripgrep/issues/907): - ripgrep will now stop traversing after the first file when `--quiet --files` - is used. -* [BUG #918](https://github.com/BurntSushi/ripgrep/issues/918): - Don't skip tar archives when `-z/--search-zip` is used. -* [BUG #934](https://github.com/BurntSushi/ripgrep/issues/934): - Don't respect gitignore files when searching outside git repositories. -* [BUG #948](https://github.com/BurntSushi/ripgrep/issues/948): - Use exit code 2 to indicate error, and use exit code 1 to indicate no - matches. -* [BUG #951](https://github.com/BurntSushi/ripgrep/issues/951): - Add stdin example to ripgrep usage documentation. -* [BUG #955](https://github.com/BurntSushi/ripgrep/issues/955): - Use buffered writing when not printing to a tty, which fixes a performance - regression. -* [BUG #957](https://github.com/BurntSushi/ripgrep/issues/957): - Improve the error message shown for `--path separator /` in some Windows - shells. -* [BUG #964](https://github.com/BurntSushi/ripgrep/issues/964): - Add a `--no-fixed-strings` flag to disable `-F/--fixed-strings`. -* [BUG #988](https://github.com/BurntSushi/ripgrep/issues/988): - Fix a bug in the `ignore` crate that prevented the use of explicit ignore - files after disabling all other ignore rules. -* [BUG #995](https://github.com/BurntSushi/ripgrep/issues/995): - Respect `$XDG_CONFIG_DIR/git/config` for detecting `core.excludesFile`. - - -0.8.1 (2018-02-20) -================== -This is a patch release of ripgrep that primarily fixes regressions introduced -in 0.8.0 (#820 and #824) in directory traversal on Windows. These regressions -do not impact non-Windows users. - -Feature enhancements: - -* Added or improved file type filtering for csv and VHDL. -* [FEATURE #798](https://github.com/BurntSushi/ripgrep/issues/798): - Add `underline` support to `termcolor` and ripgrep. See documentation on the - `--colors` flag for details. - -Bug fixes: - -* [BUG #684](https://github.com/BurntSushi/ripgrep/issues/684): - Improve documentation for the `--ignore-file` flag. -* [BUG #789](https://github.com/BurntSushi/ripgrep/issues/789): - Don't show `(rev )` if the revision wasn't available during the build. -* [BUG #791](https://github.com/BurntSushi/ripgrep/issues/791): - Add man page to ARM release. -* [BUG #797](https://github.com/BurntSushi/ripgrep/issues/797): - Improve documentation for "intense" setting in `termcolor`. -* [BUG #800](https://github.com/BurntSushi/ripgrep/issues/800): - Fix a bug in the `ignore` crate for custom ignore files. This had no impact - on ripgrep. -* [BUG #807](https://github.com/BurntSushi/ripgrep/issues/807): - Fix a bug where `rg --hidden .` behaved differently from `rg --hidden ./`. -* [BUG #815](https://github.com/BurntSushi/ripgrep/issues/815): - Clarify a common failure mode in user guide. -* [BUG #820](https://github.com/BurntSushi/ripgrep/issues/820): - Fixes a bug on Windows where symlinks were followed even if not requested. -* [BUG #824](https://github.com/BurntSushi/ripgrep/issues/824): - Fix a performance regression in directory traversal on Windows. - - -0.8.0 (2018-02-11) -================== -This is a new minor version release of ripgrep that satisfies several popular -feature requests (config files, search compressed files, true colors), fixes -many bugs and improves the quality of life for ripgrep maintainers. This -release also includes greatly improved documentation in the form of a -[User Guide](GUIDE.md) and a [FAQ](FAQ.md). - -This release increases the **minimum supported Rust version** from 1.17 to -1.20. - -**BREAKING CHANGES**: - -Note that these are all very minor and unlikely to impact most users. - -* In order to support configuration files, flag overrides needed to be - rethought. In some cases, this changed ripgrep's behavior. For example, - in ripgrep 0.7.1, `rg foo -s -i` will perform a case sensitive search - since the `-s/--case-sensitive` flag was defined to always take precedence - over the `-i/--ignore-case` flag, regardless of position. In ripgrep 0.8.0 - however, the override rule for all flags has changed to "the most recent - flag wins among competing flags." That is, `rg foo -s -i` now performs a - case insensitive search. -* The `-M/--max-columns` flag was tweaked so that specifying a value of `0` - now makes ripgrep behave as if the flag was absent. This makes it possible - to set a default value in a configuration file and then override it. The - previous ripgrep behavior was to suppress all matching non-empty lines. -* In all globs, `[^...]` is now equivalent to `[!...]` (indicating class - negation). Previously, `^` had no special significance in a character class. -* For **downstream packagers**, the directory hierarchy in ripgrep's archive - releases has changed. The root directory now only contains the executable, - README and license. There is now a new directory called `doc` which contains - the man page (previously in the root), a user guide (new), a FAQ (new) and - the CHANGELOG (previously not included in release). The `complete` - directory remains the same. - -Feature enhancements: - -* Added or improved file type filtering for - Apache Avro, C++, GN, Google Closure Templates, Jupyter notebooks, man pages, - Protocol Buffers, Smarty and Web IDL. -* [FEATURE #196](https://github.com/BurntSushi/ripgrep/issues/196): - Support a configuration file. See - [the new user guide](GUIDE.md#configuration-file) - for details. -* [FEATURE #261](https://github.com/BurntSushi/ripgrep/issues/261): - Add extended or "true" color support. Works in Windows 10! - [See the FAQ for details.](FAQ.md#colors) -* [FEATURE #539](https://github.com/BurntSushi/ripgrep/issues/539): - Search gzip, bzip2, lzma or xz files when given `-z/--search-zip` flag. -* [FEATURE #544](https://github.com/BurntSushi/ripgrep/issues/544): - Add support for line number alignment via a new `--line-number-width` flag. -* [FEATURE #654](https://github.com/BurntSushi/ripgrep/pull/654): - Support linuxbrew in ripgrep's Brew tap. -* [FEATURE #673](https://github.com/BurntSushi/ripgrep/issues/673): - Bring back `.rgignore` files. (A higher precedent, application specific - version of `.ignore`.) -* [FEATURE #676](https://github.com/BurntSushi/ripgrep/issues/676): - Provide ARM binaries. **WARNING:** This will be provided on a best effort - basis. -* [FEATURE #709](https://github.com/BurntSushi/ripgrep/issues/709): - Suggest `-F/--fixed-strings` flag on a regex syntax error. -* [FEATURE #740](https://github.com/BurntSushi/ripgrep/issues/740): - Add a `--passthru` flag that causes ripgrep to print every line it reads. -* [FEATURE #785](https://github.com/BurntSushi/ripgrep/pull/785): - Overhaul documentation. Cleaned up README, added user guide and FAQ. -* [FEATURE 7f5c07](https://github.com/BurntSushi/ripgrep/commit/7f5c07434be92103b5bf7e216b9c7494aed2d8cb): - Add hidden flags for convenient overrides (e.g., `--no-text`). - -Bug fixes: - -* [BUG #553](https://github.com/BurntSushi/ripgrep/issues/553): - Permit flags to be repeated. -* [BUG #633](https://github.com/BurntSushi/ripgrep/issues/633): - Fix a bug where ripgrep would panic on Windows while following symlinks. -* [BUG #649](https://github.com/BurntSushi/ripgrep/issues/649): - Fix handling of `!**/` in `.gitignore`. -* [BUG #663](https://github.com/BurntSushi/ripgrep/issues/663): - **BREAKING CHANGE:** Support `[^...]` glob syntax (as identical to `[!...]`). -* [BUG #693](https://github.com/BurntSushi/ripgrep/issues/693): - Don't display context separators when not printing matches. -* [BUG #705](https://github.com/BurntSushi/ripgrep/issues/705): - Fix a bug that prevented ripgrep from searching OneDrive directories. -* [BUG #717](https://github.com/BurntSushi/ripgrep/issues/717): - Improve `--smart-case` uppercase character detection. -* [BUG #725](https://github.com/BurntSushi/ripgrep/issues/725): - Clarify that globs do not override explicitly given paths to search. -* [BUG #742](https://github.com/BurntSushi/ripgrep/pull/742): - Write ANSI reset code as `\x1B[0m` instead of `\x1B[m`. -* [BUG #747](https://github.com/BurntSushi/ripgrep/issues/747): - Remove `yarn.lock` from YAML file type. -* [BUG #760](https://github.com/BurntSushi/ripgrep/issues/760): - ripgrep can now search `/sys/devices/system/cpu/vulnerabilities/*` files. -* [BUG #761](https://github.com/BurntSushi/ripgrep/issues/761): - Fix handling of gitignore patterns that contain a `/`. -* [BUG #776](https://github.com/BurntSushi/ripgrep/pull/776): - **BREAKING CHANGE:** `--max-columns=0` now disables the limit. -* [BUG #779](https://github.com/BurntSushi/ripgrep/issues/779): - Clarify documentation for `--files-without-match`. -* [BUG #780](https://github.com/BurntSushi/ripgrep/issues/780), - [BUG #781](https://github.com/BurntSushi/ripgrep/issues/781): - Fix bug where ripgrep missed some matching lines. - -Maintenance fixes: - -* [MAINT #772](https://github.com/BurntSushi/ripgrep/pull/772): - Drop `env_logger` in favor of simpler logger to avoid many new dependencies. -* [MAINT #772](https://github.com/BurntSushi/ripgrep/pull/772): - Add git revision hash to ripgrep's version string. -* [MAINT #772](https://github.com/BurntSushi/ripgrep/pull/772): - (Seemingly) improve compile times. -* [MAINT #776](https://github.com/BurntSushi/ripgrep/pull/776): - Automatically generate man page during build. -* [MAINT #786](https://github.com/BurntSushi/ripgrep/pull/786): - Remove use of `unsafe` in `globset`. :tada: -* [MAINT e9d448](https://github.com/BurntSushi/ripgrep/commit/e9d448e93bb4e1fb3b0c1afc29adb5af6ed5283d): - Add an issue template (has already drastically improved bug reports). -* [MAINT ae2d03](https://github.com/BurntSushi/ripgrep/commit/ae2d036dd4ba2a46acac9c2d77c32e7c667eb850): - Remove the `compile` script. - -Friends of ripgrep: - -I'd like to extend my gratitude to -[@balajisivaraman](https://github.com/balajisivaraman) -for their recent hard work in a number of areas, and in particular, for -implementing the "search compressed files" feature. Their work in sketching out -a specification for that and other work has been exemplary. - -Thanks -[@balajisivaraman](https://github.com/balajisivaraman)! - - -0.7.1 (2017-10-22) -================== -This is a patch release of ripgrep that includes a fix to very bad regression -introduced in ripgrep 0.7.0. - -Bug fixes: - -* [BUG #648](https://github.com/BurntSushi/ripgrep/issues/648): - Fix a bug where it was very easy to exceed standard file descriptor limits. - - -0.7.0 (2017-10-20) -================== -This is a new minor version release of ripgrep that includes mostly bug fixes. - -ripgrep continues to require Rust 1.17, and there are no known breaking changes -introduced in this release. - -Feature enhancements: - -* Added or improved file type filtering for config & license files, Elm, - Purescript, Standard ML, sh, systemd, Terraform -* [FEATURE #593](https://github.com/BurntSushi/ripgrep/pull/593): - Using both `-o/--only-matching` and `-r/--replace` does the right thing. - -Bug fixes: - -* [BUG #200](https://github.com/BurntSushi/ripgrep/issues/200): - ripgrep will stop when its pipe is closed. -* [BUG #402](https://github.com/BurntSushi/ripgrep/issues/402): - Fix context printing bug when the `-m/--max-count` flag is used. -* [BUG #521](https://github.com/BurntSushi/ripgrep/issues/521): - Fix interaction between `-r/--replace` and terminal colors. -* [BUG #559](https://github.com/BurntSushi/ripgrep/issues/559): - Ignore test that tried reading a non-UTF-8 file path on macOS. -* [BUG #599](https://github.com/BurntSushi/ripgrep/issues/599): - Fix color escapes on empty matches. -* [BUG #600](https://github.com/BurntSushi/ripgrep/issues/600): - Avoid expensive (on Windows) file handle check when using --files. -* [BUG #618](https://github.com/BurntSushi/ripgrep/issues/618): - Clarify installation instructions for Ubuntu users. -* [BUG #633](https://github.com/BurntSushi/ripgrep/issues/633): - Faster symlink loop checking on Windows. - - -0.6.0 (2017-08-23) -================== -This is a new minor version release of ripgrep that includes many bug fixes -and a few new features such as `--iglob` and `-x/--line-regexp`. - -Note that this release increases the minimum supported Rust version from 1.12 -to 1.17. - -Feature enhancements: - -* Added or improved file type filtering for BitBake, C++, Cabal, cshtml, Julia, - Make, msbuild, QMake, Yocto -* [FEATURE #163](https://github.com/BurntSushi/ripgrep/issues/163): - Add an `--iglob` flag that is like `-g/--glob`, but matches globs - case insensitively. -* [FEATURE #520](https://github.com/BurntSushi/ripgrep/pull/518): - Add `-x/--line-regexp` flag, which requires a match to span an entire line. -* [FEATURE #551](https://github.com/BurntSushi/ripgrep/pull/551), - [FEATURE #554](https://github.com/BurntSushi/ripgrep/pull/554): - `ignore`: add new `matched_path_or_any_parents` method. - -Bug fixes: - -* [BUG #342](https://github.com/BurntSushi/ripgrep/issues/342): - Fix invisible text in some PowerShell environments by changing the - default color scheme on Windows. -* [BUG #413](https://github.com/BurntSushi/ripgrep/issues/413): - Release binaries on Unix are now `strip`'d by default. This decreases - binary size by an order of magnitude. -* [BUG #483](https://github.com/BurntSushi/ripgrep/issues/483): - When `--quiet` is passed, `--files` should be quiet. -* [BUG #488](https://github.com/BurntSushi/ripgrep/pull/488): - When `--vimgrep` is passed, `--with-filename` should be enabled - automatically. -* [BUG #493](https://github.com/BurntSushi/ripgrep/issues/493): - Fix another bug in the implementation of the `-o/--only-matching` - flag. -* [BUG #499](https://github.com/BurntSushi/ripgrep/pull/499): - Permit certain flags to override others. -* [BUG #523](https://github.com/BurntSushi/ripgrep/pull/523): - `wincolor`: Re-fetch Windows console on all calls. -* [BUG #523](https://github.com/BurntSushi/ripgrep/issues/524): - `--version` now shows enabled compile-time features. -* [BUG #532](https://github.com/BurntSushi/ripgrep/issues/532), - [BUG #536](https://github.com/BurntSushi/ripgrep/pull/536), - [BUG #538](https://github.com/BurntSushi/ripgrep/pull/538), - [BUG #540](https://github.com/BurntSushi/ripgrep/pull/540), - [BUG #560](https://github.com/BurntSushi/ripgrep/pull/560), - [BUG #565](https://github.com/BurntSushi/ripgrep/pull/565): - Improve zsh completion. -* [BUG #578](https://github.com/BurntSushi/ripgrep/pull/578): - Enable SIMD for `encoding_rs` when appropriate. -* [BUG #580](https://github.com/BurntSushi/ripgrep/issues/580): - Fix `-w/--word-regexp` in the presence of capturing groups. -* [BUG #581](https://github.com/BurntSushi/ripgrep/issues/581): - Document that ripgrep may terminate unexpectedly when searching via - memory maps (which can happen using default settings). - -Friends of ripgrep: - -I'd like to give a big Thank You to @okdana for their recent hard work on -ripgrep. This includes new features like `--line-regexp`, heroic effort on -zsh auto-completion and thinking through some thorny argv issues with me. - -I'd also like to thank @ericbn for their work on improving ripgrep's argv -parsing by allowing some flags to override others. - -Thanks @okdana and @ericbn! - - -0.5.2 (2017-05-11) -================== -Feature enhancements: - -* Added or improved file type filtering for Nix. -* [FEATURE #362](https://github.com/BurntSushi/ripgrep/issues/362): - Add `--regex-size-limit` and `--dfa-size-limit` flags. -* [FEATURE #444](https://github.com/BurntSushi/ripgrep/issues/444): - Improve error messages for invalid globs. - -Bug fixes: - -* [BUG #442](https://github.com/BurntSushi/ripgrep/issues/442): - Fix line wrapping in `--help` output. -* [BUG #451](https://github.com/BurntSushi/ripgrep/issues/451): - Fix bug with duplicate output when using `-o/--only-matching` flag. - - -0.5.1 (2017-04-09) -================== -Feature enhancements: - -* Added or improved file type filtering for vim. -* [FEATURE #34](https://github.com/BurntSushi/ripgrep/issues/34): - Add a `-o/--only-matching` flag. -* [FEATURE #377](https://github.com/BurntSushi/ripgrep/issues/377): - Column numbers can now be customized with a color. (The default is - no color.) -* [FEATURE #419](https://github.com/BurntSushi/ripgrep/issues/419): - Added `-0` short flag option for `--null`. - -Bug fixes: - -* [BUG #381](https://github.com/BurntSushi/ripgrep/issues/381): - Include license text in all subcrates. -* [BUG #418](https://github.com/BurntSushi/ripgrep/issues/418), - [BUG #426](https://github.com/BurntSushi/ripgrep/issues/426), - [BUG #439](https://github.com/BurntSushi/ripgrep/issues/439): - Fix a few bugs with `-h/--help` output. - - -0.5.0 (2017-03-12) -================== -This is a new minor version release of ripgrep that includes one minor breaking -change, bug fixes and several new features including support for text encodings -other than UTF-8. - -A notable accomplishment with respect to Rust is that ripgrep proper now only -contains a single `unsafe` use (for accessing the contents of a memory map). - -The **breaking change** is: - -* [FEATURE #380](https://github.com/BurntSushi/ripgrep/issues/380): - Line numbers are now hidden by default when ripgrep is printing to a tty - **and** the only thing searched is stdin. - -Feature enhancements: - -* Added or improved file type filtering for Ceylon, CSS, Elixir, HTML, log, - SASS, SVG, Twig -* [FEATURE #1](https://github.com/BurntSushi/ripgrep/issues/1): - Add support for additional text encodings, including automatic detection for - UTF-16 via BOM sniffing. Explicit text encoding support with the - `-E/--encoding` flag was also added for latin-1, GBK, EUC-JP - and Shift_JIS, among others. The full list can be found here: - https://encoding.spec.whatwg.org/#concept-encoding-get -* [FEATURE #129](https://github.com/BurntSushi/ripgrep/issues/129): - Add a new `-M/--max-columns` flag that omits lines longer than the given - number of bytes. (Disabled by default!) -* [FEATURE #369](https://github.com/BurntSushi/ripgrep/issues/369): - A new flag, `--max-filesize`, was added for limiting searches to files with - a maximum file size. - -Bug fixes: - -* [BUG #52](https://github.com/BurntSushi/ripgrep/issues/52), - [BUG #311](https://github.com/BurntSushi/ripgrep/issues/311): - Tweak how binary files are detected and handled. (We are slightly less - conservative and will no longer use memory without bound.) -* [BUG #326](https://github.com/BurntSushi/ripgrep/issues/326): - When --files flag is given, we should never attempt to parse positional - arguments as regexes. -* [BUG #327](https://github.com/BurntSushi/ripgrep/issues/327): - Permit the --heading flag to override the --no-heading flag. -* [BUG #340](https://github.com/BurntSushi/ripgrep/pull/340): - Clarify that the `-u/--unrestricted` flags are aliases. -* [BUG #343](https://github.com/BurntSushi/ripgrep/pull/343): - Global git ignore config should use `$HOME/.config/git/ignore` and not - `$HOME/git/ignore`. -* [BUG #345](https://github.com/BurntSushi/ripgrep/pull/345): - Clarify docs for `-g/--glob` flag. -* [BUG #381](https://github.com/BurntSushi/ripgrep/issues/381): - Add license files to each sub-crate. -* [BUG #383](https://github.com/BurntSushi/ripgrep/issues/383): - Use latest version of clap (for argv parsing). -* [BUG #392](https://github.com/BurntSushi/ripgrep/issues/391): - Fix translation of set globs (e.g., `{foo,bar,quux}`) to regexes. -* [BUG #401](https://github.com/BurntSushi/ripgrep/pull/401): - Add PowerShell completion file to Windows release. -* [BUG #405](https://github.com/BurntSushi/ripgrep/issues/405): - Fix bug when excluding absolute paths with the `-g/--glob` flag. - - -0.4.0 -===== -This is a new minor version release of ripgrep that includes a couple very -minor breaking changes, a few new features and lots of bug fixes. - -This version of ripgrep upgrades its `regex` dependency from `0.1` to `0.2`, -which includes a few minor syntax changes: - -* POSIX character classes now require double bracketing. Previously, the regex - `[:upper:]` would parse as the `upper` POSIX character class. Now it parses - as the character class containing the characters `:upper:`. The fix to this - change is to use `[[:upper:]]` instead. Note that variants like - `[[:upper:][:blank:]]` continue to work. -* The character `[` must always be escaped inside a character class. -* The characters `&`, `-` and `~` must be escaped if any one of them are - repeated consecutively. For example, `[&]`, `[\&]`, `[\&\&]`, `[&-&]` are all - equivalent while `[&&]` is illegal. (The motivation for this and the prior - change is to provide a backwards compatible path for adding character class - set notation.) - -Feature enhancements: - -* Added or improved file type filtering for Crystal, Kotlin, Perl, PowerShell, - Ruby, Swig -* [FEATURE #83](https://github.com/BurntSushi/ripgrep/issues/83): - Type definitions can now include other type definitions. -* [FEATURE #243](https://github.com/BurntSushi/ripgrep/issues/243): - **BREAKING CHANGE**: The `--column` flag now implies `--line-number`. -* [FEATURE #263](https://github.com/BurntSushi/ripgrep/issues/263): - Add a new `--sort-files` flag. -* [FEATURE #275](https://github.com/BurntSushi/ripgrep/issues/275): - Add a new `--path-separator` flag. Useful in cygwin. - -Bug fixes: - -* [BUG #182](https://github.com/BurntSushi/ripgrep/issues/182): - Redux: use more portable ANSI color escape sequences when possible. -* [BUG #258](https://github.com/BurntSushi/ripgrep/issues/258): - Fix bug that caused ripgrep's parallel iterator to spin and burn CPU. -* [BUG #262](https://github.com/BurntSushi/ripgrep/issues/262): - Document how to install shell completion files. -* [BUG #266](https://github.com/BurntSushi/ripgrep/issues/266), - [BUG #293](https://github.com/BurntSushi/ripgrep/issues/293): - Fix handling of bold styling and change the default colors. -* [BUG #268](https://github.com/BurntSushi/ripgrep/issues/268): - Make lack of backreference support more explicit. -* [BUG #271](https://github.com/BurntSushi/ripgrep/issues/271): - Remove `~` dependency on clap. -* [BUG #277](https://github.com/BurntSushi/ripgrep/issues/277): - Fix cosmetic issue in `globset` crate docs. -* [BUG #279](https://github.com/BurntSushi/ripgrep/issues/279): - ripgrep did not terminate when `-q/--quiet` was given. -* [BUG #281](https://github.com/BurntSushi/ripgrep/issues/281): - **BREAKING CHANGE**: Completely remove `^C` handling from ripgrep. -* [BUG #284](https://github.com/BurntSushi/ripgrep/issues/284): - Make docs for `-g/--glob` clearer. -* [BUG #286](https://github.com/BurntSushi/ripgrep/pull/286): - When stdout is redirected to a file, don't search that file. -* [BUG #287](https://github.com/BurntSushi/ripgrep/pull/287): - Fix ZSH completions. -* [BUG #295](https://github.com/BurntSushi/ripgrep/pull/295): - Remove superfluous `memmap` dependency in `grep` crate. -* [BUG #308](https://github.com/BurntSushi/ripgrep/pull/308): - Improve docs for `-r/--replace`. -* [BUG #313](https://github.com/BurntSushi/ripgrep/pull/313): - Update bytecount dep to latest version. -* [BUG #318](https://github.com/BurntSushi/ripgrep/pull/318): - Fix invalid UTF-8 output bug in Windows consoles. - - -0.3.2 -===== -Feature enhancements: - -* Added or improved file type filtering for Less, Sass, stylus, Zsh - -Bug fixes: - -* [BUG #229](https://github.com/BurntSushi/ripgrep/issues/229): - Make smart case slightly less conservative. -* [BUG #247](https://github.com/BurntSushi/ripgrep/issues/247): - Clarify use of --heading/--no-heading. -* [BUG #251](https://github.com/BurntSushi/ripgrep/issues/251), - [BUG #264](https://github.com/BurntSushi/ripgrep/issues/264), - [BUG #267](https://github.com/BurntSushi/ripgrep/issues/267): - Fix matching bug caused by literal optimizations. -* [BUG #256](https://github.com/BurntSushi/ripgrep/issues/256): - Fix bug that caused `rg foo` and `rg foo/` to have different behavior - when `foo` was a symlink. -* [BUG #270](https://github.com/BurntSushi/ripgrep/issues/270): - Fix bug where patterns starting with a `-` couldn't be used with the - `-e/--regexp` flag. (This resolves a regression that was introduced in - ripgrep 0.3.0.) - - -0.3.1 -===== -Bug fixes: - -* [BUG #242](https://github.com/BurntSushi/ripgrep/issues/242): - ripgrep didn't respect `--colors foo:none` correctly. Now it does. - - -0.3.0 -===== -This is a new minor version release of ripgrep that includes two breaking -changes with lots of bug fixes and some new features and performance -improvements. Notably, if you had a problem with colors or piping on Windows -before, then that should now be fixed in this release. - -**BREAKING CHANGES**: - -* ripgrep now requires Rust 1.11 to compile. Previously, it could build on - Rust 1.9. The cause of this was the move from - [Docopt to Clap](https://github.com/BurntSushi/ripgrep/pull/233) - for argument parsing. -* The `-e/--regexp` flag can no longer accept a pattern starting with a `-`. - There are two work-arounds: `rg -- -foo` and `rg [-]foo` or `rg -e [-]foo` - will all search for the same `-foo` pattern. The cause of this was the move - from [Docopt to Clap](https://github.com/BurntSushi/ripgrep/pull/233) - for argument parsing. - [This may get fixed in the - future.](https://github.com/kbknapp/clap-rs/issues/742). - -Performance improvements: - -* [PERF #33](https://github.com/BurntSushi/ripgrep/issues/33): - ripgrep now performs similar to GNU grep on small corpora. -* [PERF #136](https://github.com/BurntSushi/ripgrep/issues/136): - ripgrep no longer slows down because of argument parsing when given a large - argument list. - -Feature enhancements: - -* Added or improved file type filtering for Elixir. -* [FEATURE #7](https://github.com/BurntSushi/ripgrep/issues/7): - Add a `-f/--file` flag that causes ripgrep to read patterns from a file. -* [FEATURE #51](https://github.com/BurntSushi/ripgrep/issues/51): - Add a `--colors` flag that enables one to customize the colors used in - ripgrep's output. -* [FEATURE #138](https://github.com/BurntSushi/ripgrep/issues/138): - Add a `--files-without-match` flag that shows only file paths that contain - zero matches. -* [FEATURE #230](https://github.com/BurntSushi/ripgrep/issues/230): - Add completion files to the release (Bash, Fish and PowerShell). - -Bug fixes: - -* [BUG #37](https://github.com/BurntSushi/ripgrep/issues/37): - Use correct ANSI escape sequences when `TERM=screen.linux`. -* [BUG #94](https://github.com/BurntSushi/ripgrep/issues/94): - ripgrep now detects stdin on Windows automatically. -* [BUG #117](https://github.com/BurntSushi/ripgrep/issues/117): - Colors should now work correctly and automatically inside mintty. -* [BUG #182](https://github.com/BurntSushi/ripgrep/issues/182): - Colors should now work within Emacs. In particular, `--color=always` will - emit colors regardless of the current environment. -* [BUG #189](https://github.com/BurntSushi/ripgrep/issues/189): - Show less content when running `rg -h`. The full help content can be - accessed with `rg --help`. -* [BUG #210](https://github.com/BurntSushi/ripgrep/issues/210): - Support non-UTF-8 file names on Unix platforms. -* [BUG #231](https://github.com/BurntSushi/ripgrep/issues/231): - Switch from block buffering to line buffering. -* [BUG #241](https://github.com/BurntSushi/ripgrep/issues/241): - Some error messages weren't suppressed when `--no-messages` was used. - - -0.2.9 -===== -Bug fixes: - -* [BUG #226](https://github.com/BurntSushi/ripgrep/issues/226): - File paths explicitly given on the command line weren't searched in parallel. - (This was a regression in `0.2.7`.) -* [BUG #228](https://github.com/BurntSushi/ripgrep/issues/228): - If a directory was given to `--ignore-file`, ripgrep's memory usage would - grow without bound. - - -0.2.8 -===== -Bug fixes: - -* Fixed a bug with the SIMD/AVX features for using bytecount in commit - `4ca15a`. - - -0.2.7 -===== -Performance improvements: - -* [PERF #223](https://github.com/BurntSushi/ripgrep/pull/223): - Added a parallel recursive directory iterator. This results in major - performance improvements on large repositories. -* [PERF #11](https://github.com/BurntSushi/ripgrep/pull/11): - ripgrep now uses the `bytecount` library for counting new lines. In some - cases, ripgrep runs twice as fast. Use - `RUSTFLAGS="-C target-cpu=native" cargo build --release --features 'simd-accel avx-accel'` - to get the fastest possible binary. - -Feature enhancements: - -* Added or improved file type filtering for Agda, Tex, Taskpaper, Markdown, - asciidoc, textile, rdoc, org, creole, wiki, pod, C#, PDF, C, C++. -* [FEATURE #149](https://github.com/BurntSushi/ripgrep/issues/149): - Add a new `--no-messages` flag that suppresses error messages. - Note that `rg foo 2> /dev/null` also works. -* [FEATURE #159](https://github.com/BurntSushi/ripgrep/issues/159): - Add a new `-m/--max-count` flag that limits the total number of matches - printed for each file searched. - -Bug fixes: - -* [BUG #199](https://github.com/BurntSushi/ripgrep/issues/199): - Fixed a bug where `-S/--smart-case` wasn't being applied correctly to - literal optimizations. -* [BUG #203](https://github.com/BurntSushi/ripgrep/issues/203): - Mention the full name, ripgrep, in more places. It now appears in - the output of `--help` and `--version`. The repository URL is now also - in the output of `--help` and the man page. -* [BUG #215](https://github.com/BurntSushi/ripgrep/issues/215): - Include small note about how to search for a pattern that starts with a `-`. - - -0.2.6 -===== -Feature enhancements: - -* Added or improved file type filtering for Fish. - -Bug fixes: - -* [BUG #206](https://github.com/BurntSushi/ripgrep/issues/206): - Fixed a regression with `-g/--glob` flag in `0.2.5`. - - -0.2.5 -===== -Feature enhancements: - -* Added or improved file type filtering for Groovy, Handlebars, Tcl, zsh and - Python. -* [FEATURE #9](https://github.com/BurntSushi/ripgrep/issues/9): - Support global gitignore config and `.git/info/exclude` files. -* [FEATURE #45](https://github.com/BurntSushi/ripgrep/issues/45): - Add --ignore-file flag for specifying additional ignore files. -* [FEATURE #202](https://github.com/BurntSushi/ripgrep/pull/202): - Introduce a new - [`ignore`](https://github.com/BurntSushi/ripgrep/tree/master/ignore) - crate that encapsulates all of ripgrep's gitignore matching logic. - -Bug fixes: - -* [BUG #44](https://github.com/BurntSushi/ripgrep/issues/44): - ripgrep runs slowly when given lots of positional arguments that are - directories. -* [BUG #119](https://github.com/BurntSushi/ripgrep/issues/119): - ripgrep didn't reset terminal colors if it was interrupted by `^C`. - Fixed in [PR #187](https://github.com/BurntSushi/ripgrep/pull/187). -* [BUG #184](https://github.com/BurntSushi/ripgrep/issues/184): - Fixed a bug related to interpreting gitignore files in parent directories. - - -0.2.4 -===== -SKIPPED. - - -0.2.3 -===== -Bug fixes: - -* [BUG #164](https://github.com/BurntSushi/ripgrep/issues/164): - Fixes a segfault on macos builds. -* [BUG #167](https://github.com/BurntSushi/ripgrep/issues/167): - Clarify documentation for --threads. - - -0.2.2 -===== -Packaging updates: - -* `ripgrep` is now in homebrew-core. `brew install ripgrep` will do the trick - on a Mac. -* `ripgrep` is now in the Archlinux community repository. - `pacman -S ripgrep` will do the trick on Archlinux. -* Support has been discontinued for i686-darwin. -* Glob matching has been moved out into its own crate: - [`globset`](https://crates.io/crates/globset). - -Feature enhancements: - -* Added or improved file type filtering for CMake, config, Jinja, Markdown, - Spark. -* [FEATURE #109](https://github.com/BurntSushi/ripgrep/issues/109): - Add a --max-depth flag for directory traversal. -* [FEATURE #124](https://github.com/BurntSushi/ripgrep/issues/124): - Add -s/--case-sensitive flag. Overrides --smart-case. -* [FEATURE #139](https://github.com/BurntSushi/ripgrep/pull/139): - The `ripgrep` repo is now a Homebrew tap. This is useful for installing - SIMD accelerated binaries, which aren't available in homebrew-core. - -Bug fixes: - -* [BUG #87](https://github.com/BurntSushi/ripgrep/issues/87), - [BUG #127](https://github.com/BurntSushi/ripgrep/issues/127), - [BUG #131](https://github.com/BurntSushi/ripgrep/issues/131): - Various issues related to glob matching. -* [BUG #116](https://github.com/BurntSushi/ripgrep/issues/116): - --quiet should stop search after first match. -* [BUG #121](https://github.com/BurntSushi/ripgrep/pull/121): - --color always should show colors, even when --vimgrep is used. -* [BUG #122](https://github.com/BurntSushi/ripgrep/pull/122): - Colorize file path at beginning of line. -* [BUG #134](https://github.com/BurntSushi/ripgrep/issues/134): - Processing a large ignore file (thousands of globs) was very slow. -* [BUG #137](https://github.com/BurntSushi/ripgrep/issues/137): - Always follow symlinks when given as an explicit argument. -* [BUG #147](https://github.com/BurntSushi/ripgrep/issues/147): - Clarify documentation for --replace. - - -0.2.1 -===== -Feature enhancements: - -* Added or improved file type filtering for Clojure and SystemVerilog. -* [FEATURE #89](https://github.com/BurntSushi/ripgrep/issues/89): - Add a --null flag that outputs a NUL byte after every file path. - -Bug fixes: - -* [BUG #98](https://github.com/BurntSushi/ripgrep/issues/98): - Fix a bug in single threaded mode when if opening a file failed, ripgrep - quit instead of continuing the search. -* [BUG #99](https://github.com/BurntSushi/ripgrep/issues/99): - Fix another bug in single threaded mode where empty lines were being printed - by mistake. -* [BUG #105](https://github.com/BurntSushi/ripgrep/issues/105): - Fix an off-by-one error with --column. -* [BUG #106](https://github.com/BurntSushi/ripgrep/issues/106): - Fix a bug where a whitespace only line in a gitignore file caused ripgrep - to panic (i.e., crash). - - -0.2.0 -===== -Feature enhancements: - -* Added or improved file type filtering for VB, R, F#, Swift, Nim, JavaScript, - TypeScript -* [FEATURE #20](https://github.com/BurntSushi/ripgrep/issues/20): - Adds a --no-filename flag. -* [FEATURE #26](https://github.com/BurntSushi/ripgrep/issues/26): - Adds --files-with-matches flag. Like --count, but only prints file paths - and doesn't need to count every match. -* [FEATURE #40](https://github.com/BurntSushi/ripgrep/issues/40): - Switch from using `.rgignore` to `.ignore`. Note that `.rgignore` is - still supported, but deprecated. -* [FEATURE #68](https://github.com/BurntSushi/ripgrep/issues/68): - Add --no-ignore-vcs flag that ignores .gitignore but not .ignore. -* [FEATURE #70](https://github.com/BurntSushi/ripgrep/issues/70): - Add -S/--smart-case flag (but is disabled by default). -* [FEATURE #80](https://github.com/BurntSushi/ripgrep/issues/80): - Add support for `{foo,bar}` globs. - -Many many bug fixes. Thanks every for reporting these and helping make -`ripgrep` better! (Note that I haven't captured every tracking issue here, -some were closed as duplicates.) - -* [BUG #8](https://github.com/BurntSushi/ripgrep/issues/8): - Don't use an intermediate buffer when --threads=1. (Permits constant memory - usage.) -* [BUG #15](https://github.com/BurntSushi/ripgrep/issues/15): - Improves the documentation for --type-add. -* [BUG #16](https://github.com/BurntSushi/ripgrep/issues/16), - [BUG #49](https://github.com/BurntSushi/ripgrep/issues/49), - [BUG #50](https://github.com/BurntSushi/ripgrep/issues/50), - [BUG #65](https://github.com/BurntSushi/ripgrep/issues/65): - Some gitignore globs were being treated as anchored when they weren't. -* [BUG #18](https://github.com/BurntSushi/ripgrep/issues/18): - --vimgrep reported incorrect column number. -* [BUG #19](https://github.com/BurntSushi/ripgrep/issues/19): - ripgrep was hanging waiting on stdin in some Windows terminals. Note that - this introduced a new bug: - [#94](https://github.com/BurntSushi/ripgrep/issues/94). -* [BUG #21](https://github.com/BurntSushi/ripgrep/issues/21): - Removes leading `./` when printing file paths. -* [BUG #22](https://github.com/BurntSushi/ripgrep/issues/22): - Running `rg --help | echo` caused `rg` to panic. -* [BUG #24](https://github.com/BurntSushi/ripgrep/issues/22): - Clarify the central purpose of rg in its usage message. -* [BUG #25](https://github.com/BurntSushi/ripgrep/issues/25): - Anchored gitignore globs weren't applied in subdirectories correctly. -* [BUG #30](https://github.com/BurntSushi/ripgrep/issues/30): - Globs like `foo/**` should match contents of `foo`, but not `foo` itself. -* [BUG #35](https://github.com/BurntSushi/ripgrep/issues/35), - [BUG #81](https://github.com/BurntSushi/ripgrep/issues/81): - When automatically detecting stdin, only read if it's a file or a fifo. - i.e., ignore stdin in `rg foo < /dev/null`. -* [BUG #36](https://github.com/BurntSushi/ripgrep/issues/36): - Don't automatically pick memory maps on MacOS. Ever. -* [BUG #38](https://github.com/BurntSushi/ripgrep/issues/38): - Trailing whitespace in gitignore wasn't being ignored. -* [BUG #43](https://github.com/BurntSushi/ripgrep/issues/43): - --glob didn't work with directories. -* [BUG #46](https://github.com/BurntSushi/ripgrep/issues/46): - Use one fewer worker thread than what is provided on CLI. -* [BUG #47](https://github.com/BurntSushi/ripgrep/issues/47): - --help/--version now work even if other options are set. -* [BUG #55](https://github.com/BurntSushi/ripgrep/issues/55): - ripgrep was refusing to search /proc/cpuinfo. Fixed by disabling memory - maps for files with zero size. -* [BUG #64](https://github.com/BurntSushi/ripgrep/issues/64): - The first path given with --files set was ignored. -* [BUG #67](https://github.com/BurntSushi/ripgrep/issues/67): - Sometimes whitelist globs like `!/dir` weren't interpreted as anchored. -* [BUG #77](https://github.com/BurntSushi/ripgrep/issues/77): - When -q/--quiet flag was passed, ripgrep kept searching even after a match - was found. -* [BUG #90](https://github.com/BurntSushi/ripgrep/issues/90): - Permit whitelisting hidden files. -* [BUG #93](https://github.com/BurntSushi/ripgrep/issues/93): - ripgrep was extracting an erroneous inner literal from a repeated pattern. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/COPYING b/collector/compile-benchmarks/ripgrep-13.0.0/COPYING deleted file mode 100644 index bb9c20a09..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/COPYING +++ /dev/null @@ -1,3 +0,0 @@ -This project is dual-licensed under the Unlicense and MIT licenses. - -You may use this code under the terms of either license. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.lock b/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.lock deleted file mode 100644 index 6b484f4ab..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.lock +++ /dev/null @@ -1,599 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "bstr" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", -] - -[[package]] -name = "bytecount" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" - -[[package]] -name = "cc" -version = "1.0.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "bitflags", - "strsim", - "textwrap", - "unicode-width", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" -dependencies = [ - "cfg-if 1.0.0", - "lazy_static", -] - -[[package]] -name = "encoding_rs" -version = "0.8.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" -dependencies = [ - "cfg-if 1.0.0", - "packed_simd_2", -] - -[[package]] -name = "encoding_rs_io" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83" -dependencies = [ - "encoding_rs", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fs_extra" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" - -[[package]] -name = "globset" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0fc1b9fa0e64ffb1aa5b95daa0f0f167734fd528b7c02eabc581d9d843649b1" -dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] -name = "grep" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51cb840c560b45a2ffd8abf00190382789d3f596663d5ffeb2e05931c20e8657" -dependencies = [ - "grep-cli", - "grep-matcher", - "grep-pcre2", - "grep-printer", - "grep-regex", - "grep-searcher", -] - -[[package]] -name = "grep-cli" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dd110c34bb4460d0de5062413b773e385cbf8a85a63fc535590110a09e79e8a" -dependencies = [ - "atty", - "bstr", - "globset", - "lazy_static", - "log", - "regex", - "same-file", - "termcolor", - "winapi-util", -] - -[[package]] -name = "grep-matcher" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d27563c33062cd33003b166ade2bb4fd82db1fd6a86db764dfdad132d46c1cc" -dependencies = [ - "memchr", -] - -[[package]] -name = "grep-pcre2" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ecedbb372bd549ae8db02418f82e87e38622844409b6cbcac47dbc95eede41" -dependencies = [ - "grep-matcher", - "pcre2", -] - -[[package]] -name = "grep-printer" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c271a24daedf5675b61a275a1d0af06e03312ab7856d15433ae6cde044dc72" -dependencies = [ - "base64", - "bstr", - "grep-matcher", - "grep-searcher", - "serde", - "serde_json", - "termcolor", -] - -[[package]] -name = "grep-regex" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121553c9768c363839b92fc2d7cdbbad44a3b70e8d6e7b1b72b05c977527bd06" -dependencies = [ - "aho-corasick", - "bstr", - "grep-matcher", - "log", - "regex", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "grep-searcher" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdbde90ba52adc240d2deef7b6ad1f99f53142d074b771fe9b7bede6c4c23d" -dependencies = [ - "bstr", - "bytecount", - "encoding_rs", - "encoding_rs_io", - "grep-matcher", - "log", - "memmap2", -] - -[[package]] -name = "hermit-abi" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" -dependencies = [ - "libc", -] - -[[package]] -name = "ignore" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" -dependencies = [ - "crossbeam-utils", - "globset", - "lazy_static", - "log", - "memchr", - "regex", - "same-file", - "thread_local", - "walkdir", - "winapi-util", -] - -[[package]] -name = "itoa" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - -[[package]] -name = "jemalloc-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" -dependencies = [ - "cc", - "fs_extra", - "libc", -] - -[[package]] -name = "jemallocator" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" -dependencies = [ - "jemalloc-sys", - "libc", -] - -[[package]] -name = "jobserver" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" -dependencies = [ - "libc", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" - -[[package]] -name = "libm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "memchr" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" - -[[package]] -name = "memmap2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ff203f7bdc401350b1dbaa0355135777d25f41c0bbc601851bbd6cf61e8ff5" -dependencies = [ - "libc", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" - -[[package]] -name = "packed_simd_2" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e64858a2d3733fdd61adfdd6da89aa202f7ff0e741d2fc7ed1e452ba9dc99d7" -dependencies = [ - "cfg-if 0.1.10", - "libm", -] - -[[package]] -name = "pcre2" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b30f2f69903b439dd9dc9e824119b82a55bf113b29af8d70948a03c1b11ab1" -dependencies = [ - "libc", - "log", - "pcre2-sys", - "thread_local", -] - -[[package]] -name = "pcre2-sys" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec30e5e9ec37eb8fbf1dea5989bc957fd3df56fbee5061aa7b7a99dbb37b722" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "pkg-config" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - -[[package]] -name = "proc-macro2" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "regex" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "ripgrep" -version = "13.0.0" -dependencies = [ - "bstr", - "clap", - "grep", - "ignore", - "jemallocator", - "lazy_static", - "log", - "num_cpus", - "regex", - "serde", - "serde_derive", - "serde_json", - "termcolor", - "walkdir", -] - -[[package]] -name = "ryu" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "serde" -version = "1.0.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "syn" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thread_local" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" -dependencies = [ - "once_cell", -] - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml b/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml deleted file mode 100644 index c12d7a482..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml +++ /dev/null @@ -1,97 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies -# -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) - -[package] -edition = "2018" -name = "ripgrep" -version = "13.0.0" -authors = ["Andrew Gallant "] -build = "build.rs" -exclude = ["HomebrewFormula"] -autotests = false -description = "ripgrep is a line-oriented search tool that recursively searches the current\ndirectory for a regex pattern while respecting gitignore rules. ripgrep has\nfirst class support on Windows, macOS and Linux.\n" -homepage = "https://github.com/BurntSushi/ripgrep" -documentation = "https://github.com/BurntSushi/ripgrep" -keywords = ["regex", "grep", "egrep", "search", "pattern"] -categories = ["command-line-utilities", "text-processing"] -license = "Unlicense OR MIT" -repository = "https://github.com/BurntSushi/ripgrep" -[package.metadata.deb] -assets = [["target/release/rg", "usr/bin/", "755"], ["COPYING", "usr/share/doc/ripgrep/", "644"], ["LICENSE-MIT", "usr/share/doc/ripgrep/", "644"], ["UNLICENSE", "usr/share/doc/ripgrep/", "644"], ["CHANGELOG.md", "usr/share/doc/ripgrep/CHANGELOG", "644"], ["README.md", "usr/share/doc/ripgrep/README", "644"], ["FAQ.md", "usr/share/doc/ripgrep/FAQ", "644"], ["deployment/deb/rg.1", "usr/share/man/man1/rg.1", "644"], ["deployment/deb/rg.bash", "usr/share/bash-completion/completions/rg", "644"], ["deployment/deb/rg.fish", "usr/share/fish/vendor_completions.d/rg.fish", "644"], ["deployment/deb/_rg", "usr/share/zsh/vendor-completions/", "644"]] -extended-description = "ripgrep (rg) recursively searches your current directory for a regex pattern.\nBy default, ripgrep will respect your .gitignore and automatically skip hidden\nfiles/directories and binary files.\n" -features = ["pcre2"] -section = "utils" -[profile.release] -debug = 1 - -[[bin]] -name = "rg" -path = "crates/core/main.rs" -bench = false - -[[test]] -name = "integration" -path = "tests/tests.rs" -[dependencies.bstr] -version = "0.2.12" - -[dependencies.clap] -version = "2.33.0" -features = ["suggestions"] -default-features = false - -[dependencies.grep] -version = "0.2.8" - -[dependencies.ignore] -version = "0.4.18" - -[dependencies.lazy_static] -version = "1.1.0" - -[dependencies.log] -version = "0.4.5" - -[dependencies.num_cpus] -version = "1.8.0" - -[dependencies.regex] -version = "1.3.5" - -[dependencies.serde_json] -version = "1.0.23" - -[dependencies.termcolor] -version = "1.1.0" -[dev-dependencies.serde] -version = "1.0.77" - -[dev-dependencies.serde_derive] -version = "1.0.77" - -[dev-dependencies.walkdir] -version = "2" -[build-dependencies.clap] -version = "2.33.0" -features = ["suggestions"] -default-features = false - -[build-dependencies.lazy_static] -version = "1.1.0" - -[features] -pcre2 = ["grep/pcre2"] -simd-accel = ["grep/simd-accel"] -[target."cfg(all(target_env = \"musl\", target_pointer_width = \"64\"))".dependencies.jemallocator] -version = "0.3.0" - -[workspace] diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml.orig b/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml.orig deleted file mode 100644 index fb78fcb41..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/Cargo.toml.orig +++ /dev/null @@ -1,107 +0,0 @@ -[package] -name = "ripgrep" -version = "13.0.0" #:version -authors = ["Andrew Gallant "] -description = """ -ripgrep is a line-oriented search tool that recursively searches the current -directory for a regex pattern while respecting gitignore rules. ripgrep has -first class support on Windows, macOS and Linux. -""" -documentation = "https://github.com/BurntSushi/ripgrep" -homepage = "https://github.com/BurntSushi/ripgrep" -repository = "https://github.com/BurntSushi/ripgrep" -keywords = ["regex", "grep", "egrep", "search", "pattern"] -categories = ["command-line-utilities", "text-processing"] -license = "Unlicense OR MIT" -exclude = ["HomebrewFormula"] -build = "build.rs" -autotests = false -edition = "2018" - -[[bin]] -bench = false -path = "crates/core/main.rs" -name = "rg" - -[[test]] -name = "integration" -path = "tests/tests.rs" - -[workspace] -members = [ - "crates/globset", - "crates/grep", - "crates/cli", - "crates/matcher", - "crates/pcre2", - "crates/printer", - "crates/regex", - "crates/searcher", - "crates/ignore", -] - -[dependencies] -bstr = "0.2.12" -grep = { version = "0.2.8", path = "crates/grep" } -ignore = { version = "0.4.18", path = "crates/ignore" } -lazy_static = "1.1.0" -log = "0.4.5" -num_cpus = "1.8.0" -regex = "1.3.5" -serde_json = "1.0.23" -termcolor = "1.1.0" - -[dependencies.clap] -version = "2.33.0" -default-features = false -features = ["suggestions"] - -[target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies.jemallocator] -version = "0.3.0" - -[build-dependencies] -lazy_static = "1.1.0" - -[build-dependencies.clap] -version = "2.33.0" -default-features = false -features = ["suggestions"] - -[dev-dependencies] -serde = "1.0.77" -serde_derive = "1.0.77" -walkdir = "2" - -[features] -simd-accel = ["grep/simd-accel"] -pcre2 = ["grep/pcre2"] - -[profile.release] -debug = 1 - -[package.metadata.deb] -features = ["pcre2"] -section = "utils" -assets = [ - ["target/release/rg", "usr/bin/", "755"], - ["COPYING", "usr/share/doc/ripgrep/", "644"], - ["LICENSE-MIT", "usr/share/doc/ripgrep/", "644"], - ["UNLICENSE", "usr/share/doc/ripgrep/", "644"], - ["CHANGELOG.md", "usr/share/doc/ripgrep/CHANGELOG", "644"], - ["README.md", "usr/share/doc/ripgrep/README", "644"], - ["FAQ.md", "usr/share/doc/ripgrep/FAQ", "644"], - # The man page is automatically generated by ripgrep's build process, so - # this file isn't actually committed. Instead, to create a dpkg, either - # create a deployment/deb directory and copy the man page to it, or use the - # 'ci/build-deb' script. - ["deployment/deb/rg.1", "usr/share/man/man1/rg.1", "644"], - # Similarly for shell completions. - ["deployment/deb/rg.bash", "usr/share/bash-completion/completions/rg", "644"], - ["deployment/deb/rg.fish", "usr/share/fish/vendor_completions.d/rg.fish", "644"], - ["deployment/deb/_rg", "usr/share/zsh/vendor-completions/", "644"], -] -extended-description = """\ -ripgrep (rg) recursively searches your current directory for a regex pattern. -By default, ripgrep will respect your .gitignore and automatically skip hidden -files/directories and binary files. -""" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/Cross.toml b/collector/compile-benchmarks/ripgrep-13.0.0/Cross.toml deleted file mode 100644 index 3b0e4caa0..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/Cross.toml +++ /dev/null @@ -1,11 +0,0 @@ -[target.x86_64-unknown-linux-musl] -image = "burntsushi/cross:x86_64-unknown-linux-musl" - -[target.i686-unknown-linux-gnu] -image = "burntsushi/cross:i686-unknown-linux-gnu" - -[target.mips64-unknown-linux-gnuabi64] -image = "burntsushi/cross:mips64-unknown-linux-gnuabi64" - -[target.arm-unknown-linux-gnueabihf] -image = "burntsushi/cross:arm-unknown-linux-gnueabihf" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/FAQ.md b/collector/compile-benchmarks/ripgrep-13.0.0/FAQ.md deleted file mode 100644 index 8d226262e..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/FAQ.md +++ /dev/null @@ -1,1024 +0,0 @@ -## FAQ - -* [Does ripgrep support configuration files?](#config) -* [What's changed in ripgrep recently?](#changelog) -* [When is the next release?](#release) -* [Does ripgrep have a man page?](#manpage) -* [Does ripgrep have support for shell auto-completion?](#complete) -* [How can I get results in a consistent order?](#order) -* [How do I search files that aren't UTF-8?](#encoding) -* [How do I search compressed files?](#compressed) -* [How do I search over multiple lines?](#multiline) -* [How do I use lookaround and/or backreferences?](#fancy) -* [How do I configure ripgrep's colors?](#colors) -* [How do I enable true colors on Windows?](#truecolors-windows) -* [How do I stop ripgrep from messing up colors when I kill it?](#stop-ripgrep) -* [Why does using a leading `/` on Windows fail?](#because-cygwin) -* [How do I get around the regex size limit?](#size-limit) -* [How do I make the `-f/--file` flag faster?](#dfa-size) -* [How do I make the output look like The Silver Searcher's output?](#silver-searcher-output) -* [Why does ripgrep get slower when I enabled PCRE2 regexes?](#pcre2-slow) -* [When I run `rg`, why does it execute some other command?](#rg-other-cmd) -* [How do I create an alias for ripgrep on Windows?](#rg-alias-windows) -* [How do I create a PowerShell profile?](#powershell-profile) -* [How do I pipe non-ASCII content to ripgrep on Windows?](#pipe-non-ascii-windows) -* [How can I search and replace with ripgrep?](#search-and-replace) -* [How is ripgrep licensed?](#license) -* [Can ripgrep replace grep?](#posix4ever) -* [What does the "rip" in ripgrep mean?](#intentcountsforsomething) -* [How can I donate to ripgrep or its maintainers?](#donations) - - -

-Does ripgrep support configuration files? -

- -Yes. See the -[guide's section on configuration files](GUIDE.md#configuration-file). - - -

-What's changed in ripgrep recently? -

- -Please consult ripgrep's [CHANGELOG](CHANGELOG.md). - - -

-When is the next release? -

- -ripgrep is a project whose contributors are volunteers. A release schedule -adds undue stress to said volunteers. Therefore, releases are made on a best -effort basis and no dates **will ever be given**. - -An exception to this _can be_ high impact bugs. If a ripgrep release contains -a significant regression, then there will generally be a strong push to get a -patch release out with a fix. However, no promises are made. - - -

-Does ripgrep have a man page? -

- -Yes! Whenever ripgrep is compiled on a system with `asciidoctor` or `asciidoc` -present, then a man page is generated from ripgrep's argv parser. After -compiling ripgrep, you can find the man page like so from the root of the -repository: - -``` -$ find ./target -name rg.1 -print0 | xargs -0 ls -t | head -n1 -./target/debug/build/ripgrep-79899d0edd4129ca/out/rg.1 -``` - -Running `man -l ./target/debug/build/ripgrep-79899d0edd4129ca/out/rg.1` will -show the man page in your normal pager. - -Note that the man page's documentation for options is equivalent to the output -shown in `rg --help`. To see more condensed documentation (one line per flag), -run `rg -h`. - -The man page is also included in all -[ripgrep binary releases](https://github.com/BurntSushi/ripgrep/releases). - - -

-Does ripgrep have support for shell auto-completion? -

- -Yes! Shell completions can be found in the -[same directory as the man page](#manpage) -after building ripgrep. Zsh completions are maintained separately and committed -to the repository in `complete/_rg`. - -Shell completions are also included in all -[ripgrep binary releases](https://github.com/BurntSushi/ripgrep/releases). - -For **bash**, move `rg.bash` to -`$XDG_CONFIG_HOME/bash_completion` or `/etc/bash_completion.d/`. - -For **fish**, move `rg.fish` to `$HOME/.config/fish/completions/`. - -For **zsh**, move `_rg` to one of your `$fpath` directories. - -For **PowerShell**, add `. _rg.ps1` to your PowerShell -[profile](https://technet.microsoft.com/en-us/library/bb613488(v=vs.85).aspx) -(note the leading period). If the `_rg.ps1` file is not on your `PATH`, do -`. /path/to/_rg.ps1` instead. - - -

-How can I get results in a consistent order? -

- -By default, ripgrep uses parallelism to execute its search because this makes -the search much faster on most modern systems. This in turn means that ripgrep -has a non-deterministic aspect to it, since the interleaving of threads during -the execution of the program is itself non-deterministic. This has the effect -of printing results in a somewhat arbitrary order, and this order can change -from run to run of ripgrep. - -The only way to make the order of results consistent is to ask ripgrep to -sort the output. Currently, this will disable all parallelism. (On smaller -repositories, you might not notice much of a performance difference!) You -can achieve this with the `--sort path` flag. - -There is more discussion on this topic here: -https://github.com/BurntSushi/ripgrep/issues/152 - - -

-How do I search files that aren't UTF-8? -

- -See the [guide's section on file encoding](GUIDE.md#file-encoding). - - -

-How do I search compressed files? -

- -ripgrep's `-z/--search-zip` flag will cause it to search compressed files -automatically. Currently, this supports gzip, bzip2, xz, lzma, lz4, Brotli and -Zstd. Each of these requires the corresponding `gzip`, `bzip2`, `xz`, -`lz4`, `brotli` and `zstd` binaries to be installed on your system. (That is, -ripgrep does decompression by shelling out to another process.) - -ripgrep currently does not search archive formats, so `*.tar.gz` files, for -example, are skipped. - - -

-How do I search over multiple lines? -

- -The `-U/--multiline` flag enables ripgrep to report results that span over -multiple lines. - - -

-How do I use lookaround and/or backreferences? -

- -ripgrep's default regex engine does not support lookaround or backreferences. -This is primarily because the default regex engine is implemented using finite -state machines in order to guarantee a linear worst case time complexity on all -inputs. Backreferences are not possible to implement in this paradigm, and -lookaround appears difficult to do efficiently. - -However, ripgrep optionally supports using PCRE2 as the regex engine instead of -the default one based on finite state machines. You can enable PCRE2 with the -`-P/--pcre2` flag. For example, in the root of the ripgrep repo, you can easily -find all palindromes: - -``` -$ rg -P '(\w{10})\1' -tests/misc.rs -483: cmd.arg("--max-filesize").arg("44444444444444444444"); -globset/src/glob.rs -1206: matches!(match7, "a*a*a*a*a*a*a*a*a", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); -``` - -If your version of ripgrep doesn't support PCRE2, then you'll get an error -message when you try to use the `-P/--pcre2` flag: - -``` -$ rg -P '(\w{10})\1' -PCRE2 is not available in this build of ripgrep -``` - -Most of the releases distributed by the ripgrep project here on GitHub will -come bundled with PCRE2 enabled. If you installed ripgrep through a different -means (like your system's package manager), then please reach out to the -maintainer of that package to see whether it's possible to enable the PCRE2 -feature. - - -

-How do I configure ripgrep's colors? -

- -ripgrep has two flags related to colors: - -* `--color` controls *when* to use colors. -* `--colors` controls *which* colors to use. - -The `--color` flag accepts one of the following possible values: `never`, -`auto`, `always` or `ansi`. The `auto` value is the default and will cause -ripgrep to only enable colors when it is printing to a terminal. But if you -pipe ripgrep to a file or some other process, then it will suppress colors. - -The `--colors` flag is a bit more complicated. The general format is: - -``` ---colors '{type}:{attribute}:{value}' -``` - -* `{type}` should be one of `path`, `line`, `column` or `match`. Each of these - correspond to the four different types of things that ripgrep will add color - to in its output. Select the type whose color you want to change. -* `{attribute}` should be one of `fg`, `bg` or `style`, corresponding to - foreground color, background color, or miscellaneous styling (such as whether - to bold the output or not). -* `{value}` is determined by the value of `{attribute}`. If - `{attribute}` is `style`, then `{value}` should be one of `nobold`, - `bold`, `nointense`, `intense`, `nounderline` or `underline`. If - `{attribute}` is `fg` or `bg`, then `{value}` should be a color. - -A color is specified by either one of eight of English names, a single 256-bit -number or an RGB triple (with over 16 million possible values, or "true -color"). - -The color names are `red`, `blue`, `green`, `cyan`, `magenta`, `yellow`, -`white` or `black`. - -A single 256-bit number is a value in the range 0-255 (inclusive). It can -either be in decimal format (e.g., `62`) or hexadecimal format (e.g., `0x3E`). - -An RGB triple corresponds to three numbers (decimal or hexadecimal) separated -by commas. - -As a special case, `--colors '{type}:none'` will clear all colors and styles -associated with `{type}`, which lets you start with a clean slate (instead of -building on top of ripgrep's default color settings). - -Here's an example that makes highlights the matches with a nice blue background -with bolded white text: - -``` -$ rg somepattern \ - --colors 'match:none' \ - --colors 'match:bg:0x33,0x66,0xFF' \ - --colors 'match:fg:white' \ - --colors 'match:style:bold' -``` - -Colors are an ideal candidate to set in your -[configuration file](GUIDE.md#configuration-file). See the -[question on emulating The Silver Searcher's output style](#silver-searcher-output) -for an example specific to colors. - - -

-How do I enable true colors on Windows? -

- -First, see the previous question's -[answer on configuring colors](#colors). - -Secondly, coloring on Windows is a bit complicated. If you're using a terminal -like Cygwin, then it's likely true color support already works out of the box. -However, if you are using a normal Windows console (`cmd` or `PowerShell`) and -a version of Windows prior to 10, then there is no known way to get true -color support. If you are on Windows 10 and using a Windows console, then -true colors should work out of the box with one caveat: you might need to -clear ripgrep's default color settings first. That is, instead of this: - -``` -$ rg somepattern --colors 'match:fg:0x33,0x66,0xFF' -``` - -you should do this - -``` -$ rg somepattern --colors 'match:none' --colors 'match:fg:0x33,0x66,0xFF' -``` - -This is because ripgrep might set the default style for `match` to `bold`, and -it seems like Windows 10's VT100 support doesn't permit bold and true color -ANSI escapes to be used simultaneously. The work-around above will clear -ripgrep's default styling, allowing you to craft it exactly as desired. - - -

-How do I stop ripgrep from messing up colors when I kill it? -

- -Type in `color` in cmd.exe (Command Prompt) and `echo -ne "\033[0m"` on -Unix-like systems to restore your original foreground color. - -In PowerShell, you can add the following code to your profile which will -restore the original foreground color when `Reset-ForegroundColor` is called. -Including the `Set-Alias` line will allow you to call it with simply `color`. - -```powershell -$OrigFgColor = $Host.UI.RawUI.ForegroundColor -function Reset-ForegroundColor { - $Host.UI.RawUI.ForegroundColor = $OrigFgColor -} -Set-Alias -Name color -Value Reset-ForegroundColor -``` - -PR [#187](https://github.com/BurntSushi/ripgrep/pull/187) fixed this, and it -was later deprecated in -[#281](https://github.com/BurntSushi/ripgrep/issues/281). A full explanation is -available -[here](https://github.com/BurntSushi/ripgrep/issues/281#issuecomment-269093893). - - -

-Why does using a leading `/` on Windows fail? -

- -If you're using cygwin on Windows and try to search for a pattern beginning -with a `/`, then it's possible that cygwin is mangling that pattern without -your knowledge. For example, if you tried running `rg /foo` in a cygwin shell -on Windows, then cygwin might mistakenly perform path translation on `/foo`, -which would result in `rg C:/msys64/foo` being searched instead. - -You can fix this in one of three ways: - -1. Stop using cygwin. -2. Escape the leading slash with an additional slash. e.g., `rg //foo`. -3. Temporarily disable path translation by setting `MSYS_NO_PATHCONV=1`. e.g., - `MSYS_NO_PATHCONV=1 rg /foo`. - -For more details, see https://github.com/BurntSushi/ripgrep/issues/1277 - - -

-How do I get around the regex size limit? -

- -If you've given ripgrep a particularly large pattern (or a large number of -smaller patterns), then it is possible that it will fail to compile because it -hit a pre-set limit. For example: - -``` -$ rg '\pL{1000}' -Compiled regex exceeds size limit of 10485760 bytes. -``` - -(Note: `\pL{1000}` may look small, but `\pL` is the character class containing -all Unicode letters, which is quite large. *And* it's repeated 1000 times.) - -In this case, you can work around by simply increasing the limit: - -``` -$ rg '\pL{1000}' --regex-size-limit 1G -``` - -Increasing the limit to 1GB does not necessarily mean that ripgrep will use -that much memory. The limit just says that it's allowed to (approximately) use -that much memory for constructing the regular expression. - - -

-How do I make the -f/--file flag faster? -

- -The `-f/--file` permits one to give a file to ripgrep which contains a pattern -on each line. ripgrep will then report any line that matches any of the -patterns. - -If this pattern file gets too big, then it is possible ripgrep will slow down -dramatically. *Typically* this is because an internal cache is too small, and -will cause ripgrep to spill over to a slower but more robust regular expression -engine. If this is indeed the problem, then it is possible to increase this -cache and regain speed. The cache can be controlled via the `--dfa-size-limit` -flag. For example, using `--dfa-size-limit 1G` will set the cache size to 1GB. -(Note that this doesn't mean ripgrep will use 1GB of memory automatically, but -it will allow the regex engine to if it needs to.) - - -

-How do I make the output look like The Silver Searcher's output? -

- -Use the `--colors` flag, like so: - -``` -rg --colors line:fg:yellow \ - --colors line:style:bold \ - --colors path:fg:green \ - --colors path:style:bold \ - --colors match:fg:black \ - --colors match:bg:yellow \ - --colors match:style:nobold \ - foo -``` - -Alternatively, add your color configuration to your ripgrep config file (which -is activated by setting the `RIPGREP_CONFIG_PATH` environment variable to point -to your config file). For example: - -``` -$ cat $HOME/.config/ripgrep/rc ---colors=line:fg:yellow ---colors=line:style:bold ---colors=path:fg:green ---colors=path:style:bold ---colors=match:fg:black ---colors=match:bg:yellow ---colors=match:style:nobold -$ RIPGREP_CONFIG_PATH=$HOME/.config/ripgrep/rc rg foo -``` - - -

-Why does ripgrep get slower when I enable PCRE2 regexes? -

- -When you use the `--pcre2` (`-P` for short) flag, ripgrep will use the PCRE2 -regex engine instead of the default. Both regex engines are quite fast, -but PCRE2 provides a number of additional features such as look-around and -backreferences that many enjoy using. This is largely because PCRE2 uses -a backtracking implementation where as the default regex engine uses a finite -automaton based implementation. The former provides the ability to add lots of -bells and whistles over the latter, but the latter executes with worst case -linear time complexity. - -With that out of the way, if you've used `-P` with ripgrep, you may have -noticed that it can be slower. The reasons for why this is are quite complex, -and they are complex because the optimizations that ripgrep uses to implement -fast search are complex. - -The task ripgrep has before it is somewhat simple; all it needs to do is search -a file for occurrences of some pattern and then print the lines containing -those occurrences. The problem lies in what is considered a valid match and how -exactly we read the bytes from a file. - -In terms of what is considered a valid match, remember that ripgrep will only -report matches spanning a single line by default. The problem here is that -some patterns can match across multiple lines, and ripgrep needs to prevent -that from happening. For example, `foo\sbar` will match `foo\nbar`. The most -obvious way to achieve this is to read the data from a file, and then apply -the pattern search to that data for each line. The problem with this approach -is that it can be quite slow; it would be much faster to let the pattern -search across as much data as possible. It's faster because it gets rid of the -overhead of finding the boundaries of every line, and also because it gets rid -of the overhead of starting and stopping the pattern search for every single -line. (This is operating under the general assumption that matching lines are -much rarer than non-matching lines.) - -It turns out that we can use the faster approach by applying a very simple -restriction to the pattern: *statically prevent* the pattern from matching -through a `\n` character. Namely, when given a pattern like `foo\sbar`, -ripgrep will remove `\n` from the `\s` character class automatically. In some -cases, a simple removal is not so easy. For example, ripgrep will return an -error when your pattern includes a `\n` literal: - -``` -$ rg '\n' -the literal '"\n"' is not allowed in a regex -``` - -So what does this have to do with PCRE2? Well, ripgrep's default regex engine -exposes APIs for doing syntactic analysis on the pattern in a way that makes -it quite easy to strip `\n` from the pattern (or otherwise detect it and report -an error if stripping isn't possible). PCRE2 seemingly does not provide a -similar API, so ripgrep does not do any stripping when PCRE2 is enabled. This -forces ripgrep to use the "slow" search strategy of searching each line -individually. - -OK, so if enabling PCRE2 slows down the default method of searching because it -forces matches to be limited to a single line, then why is PCRE2 also sometimes -slower when performing multiline searches? Well, that's because there are -*multiple* reasons why using PCRE2 in ripgrep can be slower than the default -regex engine. This time, blame PCRE2's Unicode support, which ripgrep enables -by default. In particular, PCRE2 cannot simultaneously enable Unicode support -and search arbitrary data. That is, when PCRE2's Unicode support is enabled, -the data **must** be valid UTF-8 (to do otherwise is to invoke undefined -behavior). This is in contrast to ripgrep's default regex engine, which can -enable Unicode support and still search arbitrary data. ripgrep's default -regex engine simply won't match invalid UTF-8 for a pattern that can otherwise -only match valid UTF-8. Why doesn't PCRE2 do the same? This author isn't -familiar with its internals, so we can't comment on it here. - -The bottom line here is that we can't enable PCRE2's Unicode support without -simultaneously incurring a performance penalty for ensuring that we are -searching valid UTF-8. In particular, ripgrep will transcode the contents -of each file to UTF-8 while replacing invalid UTF-8 data with the Unicode -replacement codepoint. ripgrep then disables PCRE2's own internal UTF-8 -checking, since we've guaranteed the data we hand it will be valid UTF-8. The -reason why ripgrep takes this approach is because if we do hand PCRE2 invalid -UTF-8, then it will report a match error if it comes across an invalid UTF-8 -sequence. This is not good news for ripgrep, since it will stop it from -searching the rest of the file, and will also print potentially undesirable -error messages to users. - -All right, the above is a lot of information to swallow if you aren't already -familiar with ripgrep internals. Let's make this concrete with some examples. -First, let's get some data big enough to magnify the performance differences: - -``` -$ curl -O 'https://burntsushi.net/stuff/subtitles2016-sample.gz' -$ gzip -d subtitles2016-sample -$ md5sum subtitles2016-sample -e3cb796a20bbc602fbfd6bb43bda45f5 subtitles2016-sample -``` - -To search this data, we will use the pattern `^\w{42}$`, which contains exactly -one hit in the file and has no literals. Having no literals is important, -because it ensures that the regex engine won't use literal optimizations to -speed up the search. In other words, it lets us reason coherently about the -actual task that the regex engine is performing. - -Let's now walk through a few examples in light of the information above. First, -let's consider the default search using ripgrep's default regex engine and -then the same search with PCRE2: - -``` -$ time rg '^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.783s -user 0m1.731s -sys 0m0.051s - -$ time rg -P '^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m2.458s -user 0m2.419s -sys 0m0.038s -``` - -In this particular example, both pattern searches are using a Unicode aware -`\w` character class and both are counting lines in order to report line -numbers. The key difference here is that the first search will not search -line by line, but the second one will. We can observe which strategy ripgrep -uses by passing the `--trace` flag: - -``` -$ rg '^\w{42}$' subtitles2016-sample --trace -[... snip ...] -TRACE|grep_searcher::searcher|grep-searcher/src/searcher/mod.rs:622: Some("subtitles2016-sample"): searching via memory map -TRACE|grep_searcher::searcher|grep-searcher/src/searcher/mod.rs:712: slice reader: searching via slice-by-line strategy -TRACE|grep_searcher::searcher::core|grep-searcher/src/searcher/core.rs:61: searcher core: will use fast line searcher -[... snip ...] - -$ rg -P '^\w{42}$' subtitles2016-sample --trace -[... snip ...] -TRACE|grep_searcher::searcher|grep-searcher/src/searcher/mod.rs:622: Some("subtitles2016-sample"): searching via memory map -TRACE|grep_searcher::searcher|grep-searcher/src/searcher/mod.rs:705: slice reader: needs transcoding, using generic reader -TRACE|grep_searcher::searcher|grep-searcher/src/searcher/mod.rs:685: generic reader: searching via roll buffer strategy -TRACE|grep_searcher::searcher::core|grep-searcher/src/searcher/core.rs:63: searcher core: will use slow line searcher -[... snip ...] -``` - -The first says it is using the "fast line searcher" where as the latter says -it is using the "slow line searcher." The latter also shows that we are -decoding the contents of the file, which also impacts performance. - -Interestingly, in this case, the pattern does not match a `\n` and the file -we're searching is valid UTF-8, so neither the slow line-by-line search -strategy nor the decoding are necessary. We could fix the former issue with -better PCRE2 introspection APIs. We can actually fix the latter issue with -ripgrep's `--no-encoding` flag, which prevents the automatic UTF-8 decoding, -but will enable PCRE2's own UTF-8 validity checking. Unfortunately, it's slower -in my build of ripgrep: - -``` -$ time rg -P '^\w{42}$' subtitles2016-sample --no-encoding -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m3.074s -user 0m3.021s -sys 0m0.051s -``` - -(Tip: use the `--trace` flag to verify that no decoding in ripgrep is -happening.) - -A possible reason why PCRE2's UTF-8 checking is slower is because it might -not be better than the highly optimized UTF-8 checking routines found in the -[`encoding_rs`](https://github.com/hsivonen/encoding_rs) library, which is what -ripgrep uses for UTF-8 decoding. Moreover, my build of ripgrep enables -`encoding_rs`'s SIMD optimizations, which may be in play here. - -Also, note that using the `--no-encoding` flag can cause PCRE2 to report -invalid UTF-8 errors, which causes ripgrep to stop searching the file: - -``` -$ cat invalid-utf8 -foobar - -$ xxd invalid-utf8 -00000000: 666f 6fff 6261 720a foo.bar. - -$ rg foo invalid-utf8 -1:foobar - -$ rg -P foo invalid-utf8 -1:foo�bar - -$ rg -P foo invalid-utf8 --no-encoding -invalid-utf8: PCRE2: error matching: UTF-8 error: illegal byte (0xfe or 0xff) -``` - -All right, so at this point, you might think that we could remove the penalty -for line-by-line searching by enabling multiline search. After all, our -particular pattern can't match across multiple lines anyway, so we'll still get -the results we want. Let's try it: - -``` -$ time rg -U '^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.803s -user 0m1.748s -sys 0m0.054s - -$ time rg -P -U '^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m2.962s -user 0m2.246s -sys 0m0.713s -``` - -Search times remain the same with the default regex engine, but the PCRE2 -search gets _slower_. What happened? The secrets can be revealed with the -`--trace` flag once again. In the former case, ripgrep actually detects that -the pattern can't match across multiple lines, and so will fall back to the -"fast line search" strategy as with our search without `-U`. - -However, for PCRE2, things are much worse. Namely, since Unicode mode is still -enabled, ripgrep is still going to decode UTF-8 to ensure that it hands only -valid UTF-8 to PCRE2. Unfortunately, one key downside of multiline search is -that ripgrep cannot do it incrementally. Since matches can be arbitrarily long, -ripgrep actually needs the entire file in memory at once. Normally, we can use -a memory map for this, but because we need to UTF-8 decode the file before -searching it, ripgrep winds up reading the entire contents of the file on to -the heap before executing a search. Owch. - -OK, so Unicode is killing us here. The file we're searching is _mostly_ ASCII, -so maybe we're OK with missing some data. (Try `rg '[\w--\p{ascii}]'` to see -non-ASCII word characters that an ASCII-only `\w` character class would miss.) -We can disable Unicode in both searches, but this is done differently depending -on the regex engine we use: - -``` -$ time rg '(?-u)^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.714s -user 0m1.669s -sys 0m0.044s - -$ time rg -P '^\w{42}$' subtitles2016-sample --no-pcre2-unicode -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.997s -user 0m1.958s -sys 0m0.037s -``` - -For the most part, ripgrep's default regex engine performs about the same. -PCRE2 does improve a little bit, and is now almost as fast as the default -regex engine. If you look at the output of `--trace`, you'll see that ripgrep -will no longer perform UTF-8 decoding, but it does still use the slow -line-by-line searcher. - -At this point, we can combine all of our insights above: let's try to get off -of the slow line-by-line searcher by enabling multiline mode, and let's stop -UTF-8 decoding by disabling Unicode support: - -``` -$ time rg -U '(?-u)^\w{42}$' subtitles2016-sample -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.714s -user 0m1.655s -sys 0m0.058s - -$ time rg -P -U '^\w{42}$' subtitles2016-sample --no-pcre2-unicode -21225780:EverymajordevelopmentinthehistoryofAmerica - -real 0m1.121s -user 0m1.071s -sys 0m0.048s -``` - -Ah, there's PCRE2's JIT shining! ripgrep's default regex engine once again -remains about the same, but PCRE2 no longer needs to search line-by-line and it -no longer needs to do any kind of UTF-8 checks. This allows the file to get -memory mapped and passed right through PCRE2's JIT at impressive speeds. (As -a brief and interesting historical note, the configuration of "memory map + -multiline + no-Unicode" is exactly the configuration used by The Silver -Searcher. This analysis perhaps sheds some reasoning as to why that -configuration is useful!) - -In summary, if you want PCRE2 to go as fast as possible and you don't care -about Unicode and you don't care about matches possibly spanning across -multiple lines, then enable multiline mode with `-U` and disable PCRE2's -Unicode support with the `--no-pcre2-unicode` flag. - -Caveat emptor: This author is not a PCRE2 expert, so there may be APIs that can -improve performance that the author missed. Similarly, there may be alternative -designs for a searching tool that are more amenable to how PCRE2 works. - - -

-When I run rg, why does it execute some other command? -

- -It's likely that you have a shell alias or even another tool called `rg` which -is interfering with ripgrep. Run `which rg` to see what it is. - -(Notably, the Rails plug-in for -[Oh My Zsh](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#rails) sets -up an `rg` alias for `rails generate`.) - -Problems like this can be resolved in one of several ways: - -* If you're using the OMZ Rails plug-in, disable it by editing the `plugins` - array in your zsh configuration. -* Temporarily bypass an existing `rg` alias by calling ripgrep as - `command rg`, `\rg`, or `'rg'`. -* Temporarily bypass an existing alias or another tool named `rg` by calling - ripgrep by its full path (e.g., `/usr/bin/rg` or `/usr/local/bin/rg`). -* Permanently disable an existing `rg` alias by adding `unalias rg` to the - bottom of your shell configuration file (e.g., `.bash_profile` or `.zshrc`). -* Give ripgrep its own alias that doesn't conflict with other tools/aliases by - adding a line like the following to the bottom of your shell configuration - file: `alias ripgrep='command rg'`. - - -

-How do I create an alias for ripgrep on Windows? -

- -Often you can find a need to make alias for commands you use a lot that set -certain flags. But PowerShell function aliases do not behave like your typical -linux shell alias. You always need to propagate arguments and `stdin` input. -But it cannot be done simply as -`function grep() { $input | rg.exe --hidden $args }` - -Use below example as reference to how setup alias in PowerShell. - -```powershell -function grep { - $count = @($input).Count - $input.Reset() - - if ($count) { - $input | rg.exe --hidden $args - } - else { - rg.exe --hidden $args - } -} -``` - -PowerShell special variables: - -* input - is powershell `stdin` object that allows you to access its content. -* args - is array of arguments passed to this function. - -This alias checks whether there is `stdin` input and propagates only if there -is some lines. Otherwise empty `$input` will make powershell to trigger `rg` to -search empty `stdin`. - - -

-How do I create a PowerShell profile? -

- -To customize powershell on start-up, there is a special PowerShell script that -has to be created. In order to find its location, type `$profile`. -See -[Microsoft's documentation](https://technet.microsoft.com/en-us/library/bb613488(v=vs.85).aspx) -for more details. - -Any PowerShell code in this file gets evaluated at the start of console. This -way you can have own aliases to be created at start. - - -

-How do I pipe non-ASCII content to ripgrep on Windows? -

- -When piping input into native executables in PowerShell, the encoding of the -input is controlled by the `$OutputEncoding` variable. By default, this is set -to US-ASCII, and any characters in the pipeline that don't have encodings in -US-ASCII are converted to `?` (question mark) characters. - -To change this setting, set `$OutputEncoding` to a different encoding, as -represented by a .NET encoding object. Some common examples are below. The -value of this variable is reset when PowerShell restarts, so to make this -change take effect every time PowerShell is started add a line setting the -variable into your PowerShell profile. - -Example `$OutputEncoding` settings: - -* UTF-8 without BOM: `$OutputEncoding = [System.Text.UTF8Encoding]::new()` -* The console's output encoding: - `$OutputEncoding = [System.Console]::OutputEncoding` - -If you continue to have encoding problems, you can also force the encoding -that the console will use for printing to UTF-8 with -`[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8`. This -will also reset when PowerShell is restarted, so you can add that line -to your profile as well if you want to make the setting permanent. - -

-How can I search and replace with ripgrep? -

- -Using ripgrep alone, you can't. ripgrep is a search tool that will never -touch your files. However, the output of ripgrep can be piped to other tools -that do modify files on disk. See -[this issue](https://github.com/BurntSushi/ripgrep/issues/74) for more -information. - -sed is one such tool that can modify files on disk. sed can take a filename -and a substitution command to search and replace in the specified file. -Files containing matching patterns can be provided to sed using - -``` -rg foo --files-with-matches -``` - -The output of this command is a list of filenames that contain a match for -the `foo` pattern. - -This list can be piped into `xargs`, which will split the filenames from -standard input into arguments for the command following xargs. You can use this -combination to pipe a list of filenames into sed for replacement. For example: - -``` -rg foo --files-with-matches | xargs sed -i 's/foo/bar/g' -``` - -will replace all instances of 'foo' with 'bar' in the files in which -ripgrep finds the foo pattern. The `-i` flag to sed indicates that you are -editing files in place, and `s/foo/bar/g` says that you are performing a -**s**ubstitution of the pattern `foo` for `bar`, and that you are doing this -substitution **g**lobally (all occurrences of the pattern in each file). - -Note: the above command assumes that you are using GNU sed. If you are using -BSD sed (the default on macOS and FreeBSD) then you must modify the above -command to be the following: - -``` -rg foo --files-with-matches | xargs sed -i '' 's/foo/bar/g' -``` - -The `-i` flag in BSD sed requires a file extension to be given to make backups -for all modified files. Specifying the empty string prevents file backups from -being made. - -Finally, if any of your file paths contain whitespace in them, then you might -need to delimit your file paths with a NUL terminator. This requires telling -ripgrep to output NUL bytes between each path, and telling xargs to read paths -delimited by NUL bytes: - -``` -rg foo --files-with-matches -0 | xargs -0 sed -i 's/foo/bar/g' -``` - -To learn more about sed, see the sed manual -[here](https://www.gnu.org/software/sed/manual/sed.html). - -Additionally, Facebook has a tool called -[fastmod](https://github.com/facebookincubator/fastmod) -that uses some of the same libraries as ripgrep and might provide a more -ergonomic search-and-replace experience. - - -

-How is ripgrep licensed? -

- -ripgrep is dual licensed under the -[Unlicense](https://unlicense.org/) -and MIT licenses. Specifically, you may use ripgrep under the terms of either -license. - -The reason why ripgrep is dual licensed this way is two-fold: - -1. I, as ripgrep's author, would like to participate in a small bit of - ideological activism by promoting the Unlicense's goal: to disclaim - copyright monopoly interest. -2. I, as ripgrep's author, would like as many people to use ripgrep as - possible. Since the Unlicense is not a proven or well known license, ripgrep - is also offered under the MIT license, which is ubiquitous and accepted by - almost everyone. - -More specifically, ripgrep and all its dependencies are compatible with this -licensing choice. In particular, ripgrep's dependencies (direct and transitive) -will always be limited to permissive licenses. That is, ripgrep will never -depend on code that is not permissively licensed. This means rejecting any -dependency that uses a copyleft license such as the GPL, LGPL, MPL or any of -the Creative Commons ShareAlike licenses. Whether the license is "weak" -copyleft or not does not matter; ripgrep will **not** depend on it. - - -

-Can ripgrep replace grep? -

- -Yes and no. - -If, upon hearing that "ripgrep can replace grep," you *actually* hear, "ripgrep -can be used in every instance grep can be used, in exactly the same way, for -the same use cases, with exactly the same bug-for-bug behavior," then no, -ripgrep trivially *cannot* replace grep. Moreover, ripgrep will *never* replace -grep. - -If, upon hearing that "ripgrep can replace grep," you *actually* hear, "ripgrep -can replace grep in some cases and not in other use cases," then yes, that is -indeed true! - -Let's go over some of those use cases in favor of ripgrep. Some of these may -not apply to you. That's OK. There may be other use cases not listed here that -do apply to you. That's OK too. - -(For all claims related to performance in the following words, see my -[blog post](https://blog.burntsushi.net/ripgrep/) -introducing ripgrep.) - -* Are you frequently searching a repository of code? If so, ripgrep might be a - good choice since there's likely a good chunk of your repository that you - don't want to search. grep, can, of course, be made to filter files using - recursive search, and if you don't mind writing out the requisite `--exclude` - rules or writing wrapper scripts, then grep might be sufficient. (I'm not - kidding, I myself did this with grep for almost a decade before writing - ripgrep.) But if you instead enjoy having a search tool respect your - `.gitignore`, then ripgrep might be perfect for you! -* Are you frequently searching non-ASCII text that is UTF-8 encoded? One of - ripgrep's key features is that it can handle Unicode features in your - patterns in a way that tends to be faster than GNU grep. Unicode features - in ripgrep are enabled by default; there is no need to configure your locale - settings to use ripgrep properly because ripgrep doesn't respect your locale - settings. -* Do you need to search UTF-16 files and you don't want to bother explicitly - transcoding them? Great. ripgrep does this for you automatically. No need - to enable it. -* Do you need to search a large directory of large files? ripgrep uses - parallelism by default, which tends to make it faster than a standard - `grep -r` search. However, if you're OK writing the occasional - `find ./ -print0 | xargs -P8 -0 grep` command, then maybe grep is good - enough. - -Here are some cases where you might *not* want to use ripgrep. The same caveats -for the previous section apply. - -* Are you writing portable shell scripts intended to work in a variety of - environments? Great, probably not a good idea to use ripgrep! ripgrep has - nowhere near the ubiquity of grep, so if you do use ripgrep, you might need - to futz with the installation process more than you would with grep. -* Do you care about POSIX compatibility? If so, then you can't use ripgrep - because it never was, isn't and never will be POSIX compatible. -* Do you hate tools that try to do something smart? If so, ripgrep is all about - being smart, so you might prefer to just stick with grep. -* Is there a particular feature of grep you rely on that ripgrep either doesn't - have or never will have? If the former, file a bug report, maybe ripgrep can - do it! If the latter, well, then, just use grep. - - -

-What does the "rip" in ripgrep mean? -

- -When I first started writing ripgrep, I called it `rep`, intending it to be a -shorter variant of `grep`. Soon after, I renamed it to `xrep` since `rep` -wasn't obvious enough of a name for my taste. And also because adding `x` to -anything always makes it better, right? - -Before ripgrep's first public release, I decided that I didn't like `xrep`. I -thought it was slightly awkward to type, and despite my previous praise of the -letter `x`, I kind of thought it was pretty lame. Being someone who really -likes Rust, I wanted to call it "rustgrep" or maybe "rgrep" for short. But I -thought that was just as lame, and maybe a little too in-your-face. But I -wanted to continue using `r` so I could at least pretend Rust had something to -do with it. - -I spent a couple of days trying to think of very short words that began with -the letter `r` that were even somewhat related to the task of searching. I -don't remember how it popped into my head, but "rip" came up as something that -meant "fast," as in, "to rip through your text." The fact that RIP is also -an initialism for "Rest in Peace" (as in, "ripgrep kills grep") never really -dawned on me. Perhaps the coincidence is too striking to believe that, but -I didn't realize it until someone explicitly pointed it out to me after the -initial public release. I admit that I found it mildly amusing, but if I had -realized it myself before the public release, I probably would have pressed on -and chose a different name. Alas, renaming things after a release is hard, so I -decided to mush on. - -Given the fact that -[ripgrep never was, is or will be a 100% drop-in replacement for -grep](#posix4ever), -ripgrep is neither actually a "grep killer" nor was it ever intended to be. It -certainly does eat into some of its use cases, but that's nothing that other -tools like ack or The Silver Searcher weren't already doing. - - -

-How can I donate to ripgrep or its maintainers? -

- -As of now, you can't. While I believe the various efforts that are being -undertaken to help fund FOSS are extremely important, they aren't a good fit -for me. ripgrep is and I hope will remain a project of love that I develop in -my free time. As such, involving money---even in the form of donations given -without expectations---would severely change that dynamic for me personally. - -Instead, I'd recommend donating to something else that is doing work that you -find meaningful. If you would like suggestions, then my favorites are: - -* [The Internet Archive](https://archive.org/donate/) -* [Rails Girls](https://railsgirlssummerofcode.org/campaign/) -* [Wikipedia](https://wikimediafoundation.org/support/) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/GUIDE.md b/collector/compile-benchmarks/ripgrep-13.0.0/GUIDE.md deleted file mode 100644 index 3e5e399a1..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/GUIDE.md +++ /dev/null @@ -1,1012 +0,0 @@ -## User Guide - -This guide is intended to give an elementary description of ripgrep and an -overview of its capabilities. This guide assumes that ripgrep is -[installed](README.md#installation) -and that readers have passing familiarity with using command line tools. This -also assumes a Unix-like system, although most commands are probably easily -translatable to any command line shell environment. - - -### Table of Contents - -* [Basics](#basics) -* [Recursive search](#recursive-search) -* [Automatic filtering](#automatic-filtering) -* [Manual filtering: globs](#manual-filtering-globs) -* [Manual filtering: file types](#manual-filtering-file-types) -* [Replacements](#replacements) -* [Configuration file](#configuration-file) -* [File encoding](#file-encoding) -* [Binary data](#binary-data) -* [Preprocessor](#preprocessor) -* [Common options](#common-options) - - -### Basics - -ripgrep is a command line tool that searches your files for patterns that -you give it. ripgrep behaves as if reading each file line by line. If a line -matches the pattern provided to ripgrep, then that line will be printed. If a -line does not match the pattern, then the line is not printed. - -The best way to see how this works is with an example. To show an example, we -need something to search. Let's try searching ripgrep's source code. First -grab a ripgrep source archive from -https://github.com/BurntSushi/ripgrep/archive/0.7.1.zip -and extract it: - -``` -$ curl -LO https://github.com/BurntSushi/ripgrep/archive/0.7.1.zip -$ unzip 0.7.1.zip -$ cd ripgrep-0.7.1 -$ ls -benchsuite grep tests Cargo.toml LICENSE-MIT -ci ignore wincolor CHANGELOG.md README.md -complete pkg appveyor.yml compile snapcraft.yaml -doc src build.rs COPYING UNLICENSE -globset termcolor Cargo.lock HomebrewFormula -``` - -Let's try our first search by looking for all occurrences of the word `fast` -in `README.md`: - -``` -$ rg fast README.md -75: faster than both. (N.B. It is not, strictly speaking, a "drop-in" replacement -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast while -119:### Is it really faster than everything else? -124:Summarizing, `ripgrep` is fast because: -129: optimizations to make searching very fast. -``` - -(**Note:** If you see an error message from ripgrep saying that it didn't -search any files, then re-run ripgrep with the `--debug` flag. One likely cause -of this is that you have a `*` rule in a `$HOME/.gitignore` file.) - -So what happened here? ripgrep read the contents of `README.md`, and for each -line that contained `fast`, ripgrep printed it to your terminal. ripgrep also -included the line number for each line by default. If your terminal supports -colors, then your output might actually look something like this screenshot: - -[![A screenshot of a sample search ripgrep](https://burntsushi.net/stuff/ripgrep-guide-sample.png)](https://burntsushi.net/stuff/ripgrep-guide-sample.png) - -In this example, we searched for something called a "literal" string. This -means that our pattern was just some normal text that we asked ripgrep to -find. But ripgrep supports the ability to specify patterns via [regular -expressions](https://en.wikipedia.org/wiki/Regular_expression). As an example, -what if we wanted to find all lines have a word that contains `fast` followed -by some number of other letters? - -``` -$ rg 'fast\w+' README.md -75: faster than both. (N.B. It is not, strictly speaking, a "drop-in" replacement -119:### Is it really faster than everything else? -``` - -In this example, we used the pattern `fast\w+`. This pattern tells ripgrep to -look for any lines containing the letters `fast` followed by *one or more* -word-like characters. Namely, `\w` matches characters that compose words (like -`a` and `L` but unlike `.` and ` `). The `+` after the `\w` means, "match the -previous pattern one or more times." This means that the word `fast` won't -match because there are no word characters following the final `t`. But a word -like `faster` will. `faste` would also match! - -Here's a different variation on this same theme: - -``` -$ rg 'fast\w*' README.md -75: faster than both. (N.B. It is not, strictly speaking, a "drop-in" replacement -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast while -119:### Is it really faster than everything else? -124:Summarizing, `ripgrep` is fast because: -129: optimizations to make searching very fast. -``` - -In this case, we used `fast\w*` for our pattern instead of `fast\w+`. The `*` -means that it should match *zero* or more times. In this case, ripgrep will -print the same lines as the pattern `fast`, but if your terminal supports -colors, you'll notice that `faster` will be highlighted instead of just the -`fast` prefix. - -It is beyond the scope of this guide to provide a full tutorial on regular -expressions, but ripgrep's specific syntax is documented here: -https://docs.rs/regex/*/regex/#syntax - - -### Recursive search - -In the previous section, we showed how to use ripgrep to search a single file. -In this section, we'll show how to use ripgrep to search an entire directory -of files. In fact, *recursively* searching your current working directory is -the default mode of operation for ripgrep, which means doing this is very -simple. - -Using our unzipped archive of ripgrep source code, here's how to find all -function definitions whose name is `write`: - -``` -$ rg 'fn write\(' -src/printer.rs -469: fn write(&mut self, buf: &[u8]) { - -termcolor/src/lib.rs -227: fn write(&mut self, b: &[u8]) -> io::Result { -250: fn write(&mut self, b: &[u8]) -> io::Result { -428: fn write(&mut self, b: &[u8]) -> io::Result { self.wtr.write(b) } -441: fn write(&mut self, b: &[u8]) -> io::Result { self.wtr.write(b) } -454: fn write(&mut self, buf: &[u8]) -> io::Result { -511: fn write(&mut self, buf: &[u8]) -> io::Result { -848: fn write(&mut self, buf: &[u8]) -> io::Result { -915: fn write(&mut self, buf: &[u8]) -> io::Result { -949: fn write(&mut self, buf: &[u8]) -> io::Result { -1114: fn write(&mut self, buf: &[u8]) -> io::Result { -1348: fn write(&mut self, buf: &[u8]) -> io::Result { -1353: fn write(&mut self, buf: &[u8]) -> io::Result { -``` - -(**Note:** We escape the `(` here because `(` has special significance inside -regular expressions. You could also use `rg -F 'fn write('` to achieve the -same thing, where `-F` interprets your pattern as a literal string instead of -a regular expression.) - -In this example, we didn't specify a file at all. Instead, ripgrep defaulted -to searching your current directory in the absence of a path. In general, -`rg foo` is equivalent to `rg foo ./`. - -This particular search showed us results in both the `src` and `termcolor` -directories. The `src` directory is the core ripgrep code where as `termcolor` -is a dependency of ripgrep (and is used by other tools). What if we only wanted -to search core ripgrep code? Well, that's easy, just specify the directory you -want: - -``` -$ rg 'fn write\(' src -src/printer.rs -469: fn write(&mut self, buf: &[u8]) { -``` - -Here, ripgrep limited its search to the `src` directory. Another way of doing -this search would be to `cd` into the `src` directory and simply use `rg 'fn -write\('` again. - - -### Automatic filtering - -After recursive search, ripgrep's most important feature is what it *doesn't* -search. By default, when you search a directory, ripgrep will ignore all of -the following: - -1. Files and directories that match glob patterns in these three categories: - 1. gitignore globs (including global and repo-specific globs). - 2. `.ignore` globs, which take precedence over all gitignore globs when - there's a conflict. - 3. `.rgignore` globs, which take precedence over all `.ignore` globs when - there's a conflict. -2. Hidden files and directories. -3. Binary files. (ripgrep considers any file with a `NUL` byte to be binary.) -4. Symbolic links aren't followed. - -All of these things can be toggled using various flags provided by ripgrep: - -1. You can disable all ignore-related filtering with the `--no-ignore` flag. -2. Hidden files and directories can be searched with the `--hidden` flag. -3. Binary files can be searched via the `--text` (`-a` for short) flag. - Be careful with this flag! Binary files may emit control characters to your - terminal, which might cause strange behavior. -4. ripgrep can follow symlinks with the `--follow` (`-L` for short) flag. - -As a special convenience, ripgrep also provides a flag called `--unrestricted` -(`-u` for short). Repeated uses of this flag will cause ripgrep to disable -more and more of its filtering. That is, `-u` will disable `.gitignore` -handling, `-uu` will search hidden files and directories and `-uuu` will search -binary files. This is useful when you're using ripgrep and you aren't sure -whether its filtering is hiding results from you. Tacking on a couple `-u` -flags is a quick way to find out. (Use the `--debug` flag if you're still -perplexed, and if that doesn't help, -[file an issue](https://github.com/BurntSushi/ripgrep/issues/new).) - -ripgrep's `.gitignore` handling actually goes a bit beyond just `.gitignore` -files. ripgrep will also respect repository specific rules found in -`$GIT_DIR/info/exclude`, as well as any global ignore rules in your -`core.excludesFile` (which is usually `$XDG_CONFIG_HOME/git/ignore` on -Unix-like systems). - -Sometimes you want to search files that are in your `.gitignore`, so it is -possible to specify additional ignore rules or overrides in a `.ignore` -(application agnostic) or `.rgignore` (ripgrep specific) file. - -For example, let's say you have a `.gitignore` file that looks like this: - -``` -log/ -``` - -This generally means that any `log` directory won't be tracked by `git`. -However, perhaps it contains useful output that you'd like to include in your -searches, but you still don't want to track it in `git`. You can achieve this -by creating a `.ignore` file in the same directory as the `.gitignore` file -with the following contents: - -``` -!log/ -``` - -ripgrep treats `.ignore` files with higher precedence than `.gitignore` files -(and treats `.rgignore` files with higher precedence than `.ignore` files). -This means ripgrep will see the `!log/` whitelist rule first and search that -directory. - -Like `.gitignore`, a `.ignore` file can be placed in any directory. Its rules -will be processed with respect to the directory it resides in, just like -`.gitignore`. - -To process `.gitignore` and `.ignore` files case insensitively, use the flag -`--ignore-file-case-insensitive`. This is especially useful on case insensitive -file systems like those on Windows and macOS. Note though that this can come -with a significant performance penalty, and is therefore disabled by default. - -For a more in depth description of how glob patterns in a `.gitignore` file -are interpreted, please see `man gitignore`. - - -### Manual filtering: globs - -In the previous section, we talked about ripgrep's filtering that it does by -default. It is "automatic" because it reacts to your environment. That is, it -uses already existing `.gitignore` files to produce more relevant search -results. - -In addition to automatic filtering, ripgrep also provides more manual or ad hoc -filtering. This comes in two varieties: additional glob patterns specified in -your ripgrep commands and file type filtering. This section covers glob -patterns while the next section covers file type filtering. - -In our ripgrep source code (see [Basics](#basics) for instructions on how to -get a source archive to search), let's say we wanted to see which things depend -on `clap`, our argument parser. - -We could do this: - -``` -$ rg clap -[lots of results] -``` - -But this shows us many things, and we're only interested in where we wrote -`clap` as a dependency. Instead, we could limit ourselves to TOML files, which -is how dependencies are communicated to Rust's build tool, Cargo: - -``` -$ rg clap -g '*.toml' -Cargo.toml -35:clap = "2.26" -51:clap = "2.26" -``` - -The `-g '*.toml'` syntax says, "make sure every file searched matches this -glob pattern." Note that we put `'*.toml'` in single quotes to prevent our -shell from expanding the `*`. - -If we wanted, we could tell ripgrep to search anything *but* `*.toml` files: - -``` -$ rg clap -g '!*.toml' -[lots of results] -``` - -This will give you a lot of results again as above, but they won't include -files ending with `.toml`. Note that the use of a `!` here to mean "negation" -is a bit non-standard, but it was chosen to be consistent with how globs in -`.gitignore` files are written. (Although, the meaning is reversed. In -`.gitignore` files, a `!` prefix means whitelist, and on the command line, a -`!` means blacklist.) - -Globs are interpreted in exactly the same way as `.gitignore` patterns. That -is, later globs will override earlier globs. For example, the following command -will search only `*.toml` files: - -``` -$ rg clap -g '!*.toml' -g '*.toml' -``` - -Interestingly, reversing the order of the globs in this case will match -nothing, since the presence of at least one non-blacklist glob will institute a -requirement that every file searched must match at least one glob. In this -case, the blacklist glob takes precedence over the previous glob and prevents -any file from being searched at all! - - -### Manual filtering: file types - -Over time, you might notice that you use the same glob patterns over and over. -For example, you might find yourself doing a lot of searches where you only -want to see results for Rust files: - -``` -$ rg 'fn run' -g '*.rs' -``` - -Instead of writing out the glob every time, you can use ripgrep's support for -file types: - -``` -$ rg 'fn run' --type rust -``` - -or, more succinctly, - -``` -$ rg 'fn run' -trust -``` - -The way the `--type` flag functions is simple. It acts as a name that is -assigned to one or more globs that match the relevant files. This lets you -write a single type that might encompass a broad range of file extensions. For -example, if you wanted to search C files, you'd have to check both C source -files and C header files: - -``` -$ rg 'int main' -g '*.{c,h}' -``` - -or you could just use the C file type: - -``` -$ rg 'int main' -tc -``` - -Just as you can write blacklist globs, you can blacklist file types too: - -``` -$ rg clap --type-not rust -``` - -or, more succinctly, - -``` -$ rg clap -Trust -``` - -That is, `-t` means "include files of this type" where as `-T` means "exclude -files of this type." - -To see the globs that make up a type, run `rg --type-list`: - -``` -$ rg --type-list | rg '^make:' -make: *.mak, *.mk, GNUmakefile, Gnumakefile, Makefile, gnumakefile, makefile -``` - -By default, ripgrep comes with a bunch of pre-defined types. Generally, these -types correspond to well known public formats. But you can define your own -types as well. For example, perhaps you frequently search "web" files, which -consist of JavaScript, HTML and CSS: - -``` -$ rg --type-add 'web:*.html' --type-add 'web:*.css' --type-add 'web:*.js' -tweb title -``` - -or, more succinctly, - -``` -$ rg --type-add 'web:*.{html,css,js}' -tweb title -``` - -The above command defines a new type, `web`, corresponding to the glob -`*.{html,css,js}`. It then applies the new filter with `-tweb` and searches for -the pattern `title`. If you ran - -``` -$ rg --type-add 'web:*.{html,css,js}' --type-list -``` - -Then you would see your `web` type show up in the list, even though it is not -part of ripgrep's built-in types. - -It is important to stress here that the `--type-add` flag only applies to the -current command. It does not add a new file type and save it somewhere in a -persistent form. If you want a type to be available in every ripgrep command, -then you should either create a shell alias: - -``` -alias rg="rg --type-add 'web:*.{html,css,js}'" -``` - -or add `--type-add=web:*.{html,css,js}` to your ripgrep configuration file. -([Configuration files](#configuration-file) are covered in more detail later.) - -#### The special `all` file type - -A special option supported by the `--type` flag is `all`. `--type all` looks -for a match in any of the supported file types listed by `--type-list`, -including those added on the command line using `--type-add`. It's equivalent -to the command `rg --type agda --type asciidoc --type asm ...`, where `...` -stands for a list of `--type` flags for the rest of the types in `--type-list`. - -As an example, let's suppose you have a shell script in your current directory, -`my-shell-script`, which includes a shell library, `my-shell-library.bash`. -Both `rg --type sh` and `rg --type all` would only search for matches in -`my-shell-library.bash`, not `my-shell-script`, because the globs matched -by the `sh` file type don't include files without an extension. On the -other hand, `rg --type-not all` would search `my-shell-script` but not -`my-shell-library.bash`. - -### Replacements - -ripgrep provides a limited ability to modify its output by replacing matched -text with some other text. This is easiest to explain with an example. Remember -when we searched for the word `fast` in ripgrep's README? - -``` -$ rg fast README.md -75: faster than both. (N.B. It is not, strictly speaking, a "drop-in" replacement -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast while -119:### Is it really faster than everything else? -124:Summarizing, `ripgrep` is fast because: -129: optimizations to make searching very fast. -``` - -What if we wanted to *replace* all occurrences of `fast` with `FAST`? That's -easy with ripgrep's `--replace` flag: - -``` -$ rg fast README.md --replace FAST -75: FASTer than both. (N.B. It is not, strictly speaking, a "drop-in" replacement -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays FAST while -119:### Is it really FASTer than everything else? -124:Summarizing, `ripgrep` is FAST because: -129: optimizations to make searching very FAST. -``` - -or, more succinctly, - -``` -$ rg fast README.md -r FAST -[snip] -``` - -In essence, the `--replace` flag applies *only* to the matching portion of text -in the output. If you instead wanted to replace an entire line of text, then -you need to include the entire line in your match. For example: - -``` -$ rg '^.*fast.*$' README.md -r FAST -75:FAST -88:FAST -119:FAST -124:FAST -129:FAST -``` - -Alternatively, you can combine the `--only-matching` (or `-o` for short) with -the `--replace` flag to achieve the same result: - -``` -$ rg fast README.md --only-matching --replace FAST -75:FAST -88:FAST -119:FAST -124:FAST -129:FAST -``` - -or, more succinctly, - -``` -$ rg fast README.md -or FAST -[snip] -``` - -Finally, replacements can include capturing groups. For example, let's say -we wanted to find all occurrences of `fast` followed by another word and -join them together with a dash. The pattern we might use for that is -`fast\s+(\w+)`, which matches `fast`, followed by any amount of whitespace, -followed by any number of "word" characters. We put the `\w+` in a "capturing -group" (indicated by parentheses) so that we can reference it later in our -replacement string. For example: - -``` -$ rg 'fast\s+(\w+)' README.md -r 'fast-$1' -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast-while -124:Summarizing, `ripgrep` is fast-because: -``` - -Our replacement string here, `fast-$1`, consists of `fast-` followed by the -contents of the capturing group at index `1`. (Capturing groups actually start -at index 0, but the `0`th capturing group always corresponds to the entire -match. The capturing group at index `1` always corresponds to the first -explicit capturing group found in the regex pattern.) - -Capturing groups can also be named, which is sometimes more convenient than -using the indices. For example, the following command is equivalent to the -above command: - -``` -$ rg 'fast\s+(?P\w+)' README.md -r 'fast-$word' -88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast-while -124:Summarizing, `ripgrep` is fast-because: -``` - -It is important to note that ripgrep **will never modify your files**. The -`--replace` flag only controls ripgrep's output. (And there is no flag to let -you do a replacement in a file.) - - -### Configuration file - -It is possible that ripgrep's default options aren't suitable in every case. -For that reason, and because shell aliases aren't always convenient, ripgrep -supports configuration files. - -Setting up a configuration file is simple. ripgrep will not look in any -predetermined directory for a config file automatically. Instead, you need to -set the `RIPGREP_CONFIG_PATH` environment variable to the file path of your -config file. Once the environment variable is set, open the file and just type -in the flags you want set automatically. There are only two rules for -describing the format of the config file: - -1. Every line is a shell argument, after trimming whitespace. -2. Lines starting with `#` (optionally preceded by any amount of whitespace) -are ignored. - -In particular, there is no escaping. Each line is given to ripgrep as a single -command line argument verbatim. - -Here's an example of a configuration file, which demonstrates some of the -formatting peculiarities: - -``` -$ cat $HOME/.ripgreprc -# Don't let ripgrep vomit really long lines to my terminal, and show a preview. ---max-columns=150 ---max-columns-preview - -# Add my 'web' type. ---type-add -web:*.{html,css,js}* - -# Using glob patterns to include/exclude files or folders ---glob=!git/* - -# or ---glob -!git/* - -# Set the colors. ---colors=line:none ---colors=line:style:bold - -# Because who cares about case!? ---smart-case -``` - -When we use a flag that has a value, we either put the flag and the value on -the same line but delimited by an `=` sign (e.g., `--max-columns=150`), or we -put the flag and the value on two different lines. This is because ripgrep's -argument parser knows to treat the single argument `--max-columns=150` as a -flag with a value, but if we had written `--max-columns 150` in our -configuration file, then ripgrep's argument parser wouldn't know what to do -with it. - -Putting the flag and value on different lines is exactly equivalent and is a -matter of style. - -Comments are encouraged so that you remember what the config is doing. Empty -lines are OK too. - -So let's say you're using the above configuration file, but while you're at a -terminal, you really want to be able to see lines longer than 150 columns. What -do you do? Thankfully, all you need to do is pass `--max-columns 0` (or `-M0` -for short) on the command line, which will override your configuration file's -setting. This works because ripgrep's configuration file is *prepended* to the -explicit arguments you give it on the command line. Since flags given later -override flags given earlier, everything works as expected. This works for most -other flags as well, and each flag's documentation states which other flags -override it. - -If you're confused about what configuration file ripgrep is reading arguments -from, then running ripgrep with the `--debug` flag should help clarify things. -The debug output should note what config file is being loaded and the arguments -that have been read from the configuration. - -Finally, if you want to make absolutely sure that ripgrep *isn't* reading a -configuration file, then you can pass the `--no-config` flag, which will always -prevent ripgrep from reading extraneous configuration from the environment, -regardless of what other methods of configuration are added to ripgrep in the -future. - - -### File encoding - -[Text encoding](https://en.wikipedia.org/wiki/Character_encoding) is a complex -topic, but we can try to summarize its relevancy to ripgrep: - -* Files are generally just a bundle of bytes. There is no reliable way to know - their encoding. -* Either the encoding of the pattern must match the encoding of the files being - searched, or a form of transcoding must be performed that converts either the - pattern or the file to the same encoding as the other. -* ripgrep tends to work best on plain text files, and among plain text files, - the most popular encodings likely consist of ASCII, latin1 or UTF-8. As - a special exception, UTF-16 is prevalent in Windows environments - -In light of the above, here is how ripgrep behaves when `--encoding auto` is -given, which is the default: - -* All input is assumed to be ASCII compatible (which means every byte that - corresponds to an ASCII codepoint actually is an ASCII codepoint). This - includes ASCII itself, latin1 and UTF-8. -* ripgrep works best with UTF-8. For example, ripgrep's regular expression - engine supports Unicode features. Namely, character classes like `\w` will - match all word characters by Unicode's definition and `.` will match any - Unicode codepoint instead of any byte. These constructions assume UTF-8, - so they simply won't match when they come across bytes in a file that aren't - UTF-8. -* To handle the UTF-16 case, ripgrep will do something called "BOM sniffing" - by default. That is, the first three bytes of a file will be read, and if - they correspond to a UTF-16 BOM, then ripgrep will transcode the contents of - the file from UTF-16 to UTF-8, and then execute the search on the transcoded - version of the file. (This incurs a performance penalty since transcoding - is slower than regex searching.) If the file contains invalid UTF-16, then - the Unicode replacement codepoint is substituted in place of invalid code - units. -* To handle other cases, ripgrep provides a `-E/--encoding` flag, which permits - you to specify an encoding from the - [Encoding Standard](https://encoding.spec.whatwg.org/#concept-encoding-get). - ripgrep will assume *all* files searched are the encoding specified (unless - the file has a BOM) and will perform a transcoding step just like in the - UTF-16 case described above. - -By default, ripgrep will not require its input be valid UTF-8. That is, ripgrep -can and will search arbitrary bytes. The key here is that if you're searching -content that isn't UTF-8, then the usefulness of your pattern will degrade. If -you're searching bytes that aren't ASCII compatible, then it's likely the -pattern won't find anything. With all that said, this mode of operation is -important, because it lets you find ASCII or UTF-8 *within* files that are -otherwise arbitrary bytes. - -As a special case, the `-E/--encoding` flag supports the value `none`, which -will completely disable all encoding related logic, including BOM sniffing. -When `-E/--encoding` is set to `none`, ripgrep will search the raw bytes of -the underlying file with no transcoding step. For example, here's how you might -search the raw UTF-16 encoding of the string `Шерлок`: - -``` -$ rg '(?-u)\(\x045\x04@\x04;\x04>\x04:\x04' -E none -a some-utf16-file -``` - -Of course, that's just an example meant to show how one can drop down into -raw bytes. Namely, the simpler command works as you might expect automatically: - -``` -$ rg 'Шерлок' some-utf16-file -``` - -Finally, it is possible to disable ripgrep's Unicode support from within the -regular expression. For example, let's say you wanted `.` to match any byte -rather than any Unicode codepoint. (You might want this while searching a -binary file, since `.` by default will not match invalid UTF-8.) You could do -this by disabling Unicode via a regular expression flag: - -``` -$ rg '(?-u:.)' -``` - -This works for any part of the pattern. For example, the following will find -any Unicode word character followed by any ASCII word character followed by -another Unicode word character: - -``` -$ rg '\w(?-u:\w)\w' -``` - - -### Binary data - -In addition to skipping hidden files and files in your `.gitignore` by default, -ripgrep also attempts to skip binary files. ripgrep does this by default -because binary files (like PDFs or images) are typically not things you want to -search when searching for regex matches. Moreover, if content in a binary file -did match, then it's possible for undesirable binary data to be printed to your -terminal and wreak havoc. - -Unfortunately, unlike skipping hidden files and respecting your `.gitignore` -rules, a file cannot as easily be classified as binary. In order to figure out -whether a file is binary, the most effective heuristic that balances -correctness with performance is to simply look for `NUL` bytes. At that point, -the determination is simple: a file is considered "binary" if and only if it -contains a `NUL` byte somewhere in its contents. - -The issue is that while most binary files will have a `NUL` byte toward the -beginning of its contents, this is not necessarily true. The `NUL` byte might -be the very last byte in a large file, but that file is still considered -binary. While this leads to a fair amount of complexity inside ripgrep's -implementation, it also results in some unintuitive user experiences. - -At a high level, ripgrep operates in three different modes with respect to -binary files: - -1. The default mode is to attempt to remove binary files from a search - completely. This is meant to mirror how ripgrep removes hidden files and - files in your `.gitignore` automatically. That is, as soon as a file is - detected as binary, searching stops. If a match was already printed (because - it was detected long before a `NUL` byte), then ripgrep will print a warning - message indicating that the search stopped prematurely. This default mode - **only applies to files searched by ripgrep as a result of recursive - directory traversal**, which is consistent with ripgrep's other automatic - filtering. For example, `rg foo .file` will search `.file` even though it - is hidden. Similarly, `rg foo binary-file` will search `binary-file` in - "binary" mode automatically. -2. Binary mode is similar to the default mode, except it will not always - stop searching after it sees a `NUL` byte. Namely, in this mode, ripgrep - will continue searching a file that is known to be binary until the first - of two conditions is met: 1) the end of the file has been reached or 2) a - match is or has been seen. This means that in binary mode, if ripgrep - reports no matches, then there are no matches in the file. When a match does - occur, ripgrep prints a message similar to one it prints when in its default - mode indicating that the search has stopped prematurely. This mode can be - forcefully enabled for all files with the `--binary` flag. The purpose of - binary mode is to provide a way to discover matches in all files, but to - avoid having binary data dumped into your terminal. -3. Text mode completely disables all binary detection and searches all files - as if they were text. This is useful when searching a file that is - predominantly text but contains a `NUL` byte, or if you are specifically - trying to search binary data. This mode can be enabled with the `-a/--text` - flag. Note that when using this mode on very large binary files, it is - possible for ripgrep to use a lot of memory. - -Unfortunately, there is one additional complexity in ripgrep that can make it -difficult to reason about binary files. That is, the way binary detection works -depends on the way that ripgrep searches your files. Specifically: - -* When ripgrep uses memory maps, then binary detection is only performed on the - first few kilobytes of the file in addition to every matching line. -* When ripgrep doesn't use memory maps, then binary detection is performed on - all bytes searched. - -This means that whether a file is detected as binary or not can change based -on the internal search strategy used by ripgrep. If you prefer to keep -ripgrep's binary file detection consistent, then you can disable memory maps -via the `--no-mmap` flag. (The cost will be a small performance regression when -searching very large files on some platforms.) - - -### Preprocessor - -In ripgrep, a preprocessor is any type of command that can be run to transform -the input of every file before ripgrep searches it. This makes it possible to -search virtually any kind of content that can be automatically converted to -text without having to teach ripgrep how to read said content. - -One common example is searching PDFs. PDFs are first and foremost meant to be -displayed to users. But PDFs often have text streams in them that can be useful -to search. In our case, we want to search Bruce Watson's excellent -dissertation, -[Taxonomies and Toolkits of Regular Language Algorithms](https://burntsushi.net/stuff/1995-watson.pdf). -After downloading it, let's try searching it: - -``` -$ rg 'The Commentz-Walter algorithm' 1995-watson.pdf -$ -``` - -Surely, a dissertation on regular language algorithms would mention -Commentz-Walter. Indeed it does, but our search isn't picking it up because -PDFs are a binary format, and the text shown in the PDF may not be encoded as -simple contiguous UTF-8. Namely, even passing the `-a/--text` flag to ripgrep -will not make our search work. - -One way to fix this is to convert the PDF to plain text first. This won't work -well for all PDFs, but does great in a lot of cases. (Note that the tool we -use, `pdftotext`, is part of the [poppler](https://poppler.freedesktop.org) -PDF rendering library.) - -``` -$ pdftotext 1995-watson.pdf > 1995-watson.txt -$ rg 'The Commentz-Walter algorithm' 1995-watson.txt -316:The Commentz-Walter algorithms : : : : : : : : : : : : : : : -7165:4.4 The Commentz-Walter algorithms -10062:in input string S , we obtain the Boyer-Moore algorithm. The Commentz-Walter algorithm -17218:The Commentz-Walter algorithm (and its variants) displayed more interesting behaviour, -17249:Aho-Corasick algorithms are used extensively. The Commentz-Walter algorithms are used -17297: The Commentz-Walter algorithms (CW). In all versions of the CW algorithms, a common program skeleton is used with di erent shift functions. The CW algorithms are -``` - -But having to explicitly convert every file can be a pain, especially when you -have a directory full of PDF files. Instead, we can use ripgrep's preprocessor -feature to search the PDF. ripgrep's `--pre` flag works by taking a single -command name and then executing that command for every file that it searches. -ripgrep passes the file path as the first and only argument to the command and -also sends the contents of the file to stdin. So let's write a simple shell -script that wraps `pdftotext` in a way that conforms to this interface: - -``` -$ cat preprocess -#!/bin/sh - -exec pdftotext - - -``` - -With `preprocess` in the same directory as `1995-watson.pdf`, we can now use it -to search the PDF: - -``` -$ rg --pre ./preprocess 'The Commentz-Walter algorithm' 1995-watson.pdf -316:The Commentz-Walter algorithms : : : : : : : : : : : : : : : -7165:4.4 The Commentz-Walter algorithms -10062:in input string S , we obtain the Boyer-Moore algorithm. The Commentz-Walter algorithm -17218:The Commentz-Walter algorithm (and its variants) displayed more interesting behaviour, -17249:Aho-Corasick algorithms are used extensively. The Commentz-Walter algorithms are used -17297: The Commentz-Walter algorithms (CW). In all versions of the CW algorithms, a common program skeleton is used with di erent shift functions. The CW algorithms are -``` - -Note that `preprocess` must be resolvable to a command that ripgrep can read. -The simplest way to do this is to put your preprocessor command in a directory -that is in your `PATH` (or equivalent), or otherwise use an absolute path. - -As a bonus, this turns out to be quite a bit faster than other specialized PDF -grepping tools: - -``` -$ time rg --pre ./preprocess 'The Commentz-Walter algorithm' 1995-watson.pdf -c -6 - -real 0.697 -user 0.684 -sys 0.007 -maxmem 16 MB -faults 0 - -$ time pdfgrep 'The Commentz-Walter algorithm' 1995-watson.pdf -c -6 - -real 1.336 -user 1.310 -sys 0.023 -maxmem 16 MB -faults 0 -``` - -If you wind up needing to search a lot of PDFs, then ripgrep's parallelism can -make the speed difference even greater. - -#### A more robust preprocessor - -One of the problems with the aforementioned preprocessor is that it will fail -if you try to search a file that isn't a PDF: - -``` -$ echo foo > not-a-pdf -$ rg --pre ./preprocess 'The Commentz-Walter algorithm' not-a-pdf -not-a-pdf: preprocessor command failed: '"./preprocess" "not-a-pdf"': -------------------------------------------------------------------------------- -Syntax Warning: May not be a PDF file (continuing anyway) -Syntax Error: Couldn't find trailer dictionary -Syntax Error: Couldn't find trailer dictionary -Syntax Error: Couldn't read xref table -``` - -To fix this, we can make our preprocessor script a bit more robust by only -running `pdftotext` when we think the input is a non-empty PDF: - -``` -$ cat preprocessor -#!/bin/sh - -case "$1" in -*.pdf) - # The -s flag ensures that the file is non-empty. - if [ -s "$1" ]; then - exec pdftotext - - - else - exec cat - fi - ;; -*) - exec cat - ;; -esac -``` - -We can even extend our preprocessor to search other kinds of files. Sometimes -we don't always know the file type from the file name, so we can use the `file` -utility to "sniff" the type of the file based on its contents: - -``` -$ cat processor -#!/bin/sh - -case "$1" in -*.pdf) - # The -s flag ensures that the file is non-empty. - if [ -s "$1" ]; then - exec pdftotext - - - else - exec cat - fi - ;; -*) - case $(file "$1") in - *Zstandard*) - exec pzstd -cdq - ;; - *) - exec cat - ;; - esac - ;; -esac -``` - -#### Reducing preprocessor overhead - -There is one more problem with the above approach: it requires running a -preprocessor for every single file that ripgrep searches. If every file needs -a preprocessor, then this is OK. But if most don't, then this can substantially -slow down searches because of the overhead of launching new processors. You -can avoid this by telling ripgrep to only invoke the preprocessor when the file -path matches a glob. For example, consider the performance difference even when -searching a repository as small as ripgrep's: - -``` -$ time rg --pre pre-rg 'fn is_empty' -c -crates/globset/src/lib.rs:1 -crates/matcher/src/lib.rs:2 -crates/ignore/src/overrides.rs:1 -crates/ignore/src/gitignore.rs:1 -crates/ignore/src/types.rs:1 - -real 0.138 -user 0.485 -sys 0.209 -maxmem 7 MB -faults 0 - -$ time rg --pre pre-rg --pre-glob '*.pdf' 'fn is_empty' -c -crates/globset/src/lib.rs:1 -crates/ignore/src/types.rs:1 -crates/ignore/src/gitignore.rs:1 -crates/ignore/src/overrides.rs:1 -crates/matcher/src/lib.rs:2 - -real 0.008 -user 0.010 -sys 0.002 -maxmem 7 MB -faults 0 -``` - - -### Common options - -ripgrep has a lot of flags. Too many to keep in your head at once. This section -is intended to give you a sampling of some of the most important and frequently -used options that will likely impact how you use ripgrep on a regular basis. - -* `-h`: Show ripgrep's condensed help output. -* `--help`: Show ripgrep's longer form help output. (Nearly what you'd find in - ripgrep's man page, so pipe it into a pager!) -* `-i/--ignore-case`: When searching for a pattern, ignore case differences. - That is `rg -i fast` matches `fast`, `fASt`, `FAST`, etc. -* `-S/--smart-case`: This is similar to `--ignore-case`, but disables itself - if the pattern contains any uppercase letters. Usually this flag is put into - alias or a config file. -* `-w/--word-regexp`: Require that all matches of the pattern be surrounded - by word boundaries. That is, given `pattern`, the `--word-regexp` flag will - cause ripgrep to behave as if `pattern` were actually `\b(?:pattern)\b`. -* `-c/--count`: Report a count of total matched lines. -* `--files`: Print the files that ripgrep *would* search, but don't actually - search them. -* `-a/--text`: Search binary files as if they were plain text. -* `-U/--multiline`: Permit matches to span multiple lines. -* `-z/--search-zip`: Search compressed files (gzip, bzip2, lzma, xz, lz4, - brotli, zstd). This is disabled by default. -* `-C/--context`: Show the lines surrounding a match. -* `--sort path`: Force ripgrep to sort its output by file name. (This disables - parallelism, so it might be slower.) -* `-L/--follow`: Follow symbolic links while recursively searching. -* `-M/--max-columns`: Limit the length of lines printed by ripgrep. -* `--debug`: Shows ripgrep's debug output. This is useful for understanding - why a particular file might be ignored from search, or what kinds of - configuration ripgrep is loading from the environment. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/LICENSE-MIT b/collector/compile-benchmarks/ripgrep-13.0.0/LICENSE-MIT deleted file mode 100644 index 3b0a5dc09..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Andrew Gallant - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/README.md b/collector/compile-benchmarks/ripgrep-13.0.0/README.md deleted file mode 100644 index 46938bc73..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/README.md +++ /dev/null @@ -1,436 +0,0 @@ -ripgrep (rg) ------------- -ripgrep is a line-oriented search tool that recursively searches the current -directory for a regex pattern. By default, ripgrep will respect gitignore rules -and automatically skip hidden files/directories and binary files. ripgrep -has first class support on Windows, macOS and Linux, with binary downloads -available for [every release](https://github.com/BurntSushi/ripgrep/releases). -ripgrep is similar to other popular search tools like The Silver Searcher, ack -and grep. - -[![Build status](https://github.com/BurntSushi/ripgrep/workflows/ci/badge.svg)](https://github.com/BurntSushi/ripgrep/actions) -[![Crates.io](https://img.shields.io/crates/v/ripgrep.svg)](https://crates.io/crates/ripgrep) -[![Packaging status](https://repology.org/badge/tiny-repos/ripgrep.svg)](https://repology.org/project/ripgrep/badges) - -Dual-licensed under MIT or the [UNLICENSE](https://unlicense.org). - - -### CHANGELOG - -Please see the [CHANGELOG](CHANGELOG.md) for a release history. - -### Documentation quick links - -* [Installation](#installation) -* [User Guide](GUIDE.md) -* [Frequently Asked Questions](FAQ.md) -* [Regex syntax](https://docs.rs/regex/1/regex/#syntax) -* [Configuration files](GUIDE.md#configuration-file) -* [Shell completions](FAQ.md#complete) -* [Building](#building) -* [Translations](#translations) - - -### Screenshot of search results - -[![A screenshot of a sample search with ripgrep](https://burntsushi.net/stuff/ripgrep1.png)](https://burntsushi.net/stuff/ripgrep1.png) - - -### Quick examples comparing tools - -This example searches the entire -[Linux kernel source tree](https://github.com/BurntSushi/linux) -(after running `make defconfig && make -j8`) for `[A-Z]+_SUSPEND`, where -all matches must be words. Timings were collected on a system with an Intel -i7-6900K 3.2 GHz. - -Please remember that a single benchmark is never enough! See my -[blog post on ripgrep](https://blog.burntsushi.net/ripgrep/) -for a very detailed comparison with more benchmarks and analysis. - -| Tool | Command | Line count | Time | -| ---- | ------- | ---------- | ---- | -| ripgrep (Unicode) | `rg -n -w '[A-Z]+_SUSPEND'` | 452 | **0.136s** | -| [git grep](https://www.kernel.org/pub/software/scm/git/docs/git-grep.html) | `git grep -P -n -w '[A-Z]+_SUSPEND'` | 452 | 0.348s | -| [ugrep (Unicode)](https://github.com/Genivia/ugrep) | `ugrep -r --ignore-files --no-hidden -I -w '[A-Z]+_SUSPEND'` | 452 | 0.506s | -| [The Silver Searcher](https://github.com/ggreer/the_silver_searcher) | `ag -w '[A-Z]+_SUSPEND'` | 452 | 0.654s | -| [git grep](https://www.kernel.org/pub/software/scm/git/docs/git-grep.html) | `LC_ALL=C git grep -E -n -w '[A-Z]+_SUSPEND'` | 452 | 1.150s | -| [ack](https://github.com/beyondgrep/ack3) | `ack -w '[A-Z]+_SUSPEND'` | 452 | 4.054s | -| [git grep (Unicode)](https://www.kernel.org/pub/software/scm/git/docs/git-grep.html) | `LC_ALL=en_US.UTF-8 git grep -E -n -w '[A-Z]+_SUSPEND'` | 452 | 4.205s | - -Here's another benchmark on the same corpus as above that disregards gitignore -files and searches with a whitelist instead. The corpus is the same as in the -previous benchmark, and the flags passed to each command ensure that they are -doing equivalent work: - -| Tool | Command | Line count | Time | -| ---- | ------- | ---------- | ---- | -| ripgrep | `rg -uuu -tc -n -w '[A-Z]+_SUSPEND'` | 388 | **0.096s** | -| [ugrep](https://github.com/Genivia/ugrep) | `ugrep -r -n --include='*.c' --include='*.h' -w '[A-Z]+_SUSPEND'` | 388 | 0.493s | -| [GNU grep](https://www.gnu.org/software/grep/) | `egrep -r -n --include='*.c' --include='*.h' -w '[A-Z]+_SUSPEND'` | 388 | 0.806s | - -And finally, a straight-up comparison between ripgrep, ugrep and GNU grep on a -single large file cached in memory -(~13GB, [`OpenSubtitles.raw.en.gz`](http://opus.nlpl.eu/download.php?f=OpenSubtitles/v2018/mono/OpenSubtitles.raw.en.gz)): - -| Tool | Command | Line count | Time | -| ---- | ------- | ---------- | ---- | -| ripgrep | `rg -w 'Sherlock [A-Z]\w+'` | 7882 | **2.769s** | -| [ugrep](https://github.com/Genivia/ugrep) | `ugrep -w 'Sherlock [A-Z]\w+'` | 7882 | 6.802s | -| [GNU grep](https://www.gnu.org/software/grep/) | `LC_ALL=en_US.UTF-8 egrep -w 'Sherlock [A-Z]\w+'` | 7882 | 9.027s | - -In the above benchmark, passing the `-n` flag (for showing line numbers) -increases the times to `3.423s` for ripgrep and `13.031s` for GNU grep. ugrep -times are unaffected by the presence or absence of `-n`. - - -### Why should I use ripgrep? - -* It can replace many use cases served by other search tools - because it contains most of their features and is generally faster. (See - [the FAQ](FAQ.md#posix4ever) for more details on whether ripgrep can truly - replace grep.) -* Like other tools specialized to code search, ripgrep defaults to recursive - directory search and won't search files ignored by your - `.gitignore`/`.ignore`/`.rgignore` files. It also ignores hidden and binary - files by default. ripgrep also implements full support for `.gitignore`, - whereas there are many bugs related to that functionality in other code - search tools claiming to provide the same functionality. -* ripgrep can search specific types of files. For example, `rg -tpy foo` - limits your search to Python files and `rg -Tjs foo` excludes JavaScript - files from your search. ripgrep can be taught about new file types with - custom matching rules. -* ripgrep supports many features found in `grep`, such as showing the context - of search results, searching multiple patterns, highlighting matches with - color and full Unicode support. Unlike GNU grep, ripgrep stays fast while - supporting Unicode (which is always on). -* ripgrep has optional support for switching its regex engine to use PCRE2. - Among other things, this makes it possible to use look-around and - backreferences in your patterns, which are not supported in ripgrep's default - regex engine. PCRE2 support can be enabled with `-P/--pcre2` (use PCRE2 - always) or `--auto-hybrid-regex` (use PCRE2 only if needed). An alternative - syntax is provided via the `--engine (default|pcre2|auto-hybrid)` option. -* ripgrep supports searching files in text encodings other than UTF-8, such - as UTF-16, latin-1, GBK, EUC-JP, Shift_JIS and more. (Some support for - automatically detecting UTF-16 is provided. Other text encodings must be - specifically specified with the `-E/--encoding` flag.) -* ripgrep supports searching files compressed in a common format (brotli, - bzip2, gzip, lz4, lzma, xz, or zstandard) with the `-z/--search-zip` flag. -* ripgrep supports - [arbitrary input preprocessing filters](GUIDE.md#preprocessor) - which could be PDF text extraction, less supported decompression, decrypting, - automatic encoding detection and so on. - -In other words, use ripgrep if you like speed, filtering by default, fewer -bugs and Unicode support. - - -### Why shouldn't I use ripgrep? - -Despite initially not wanting to add every feature under the sun to ripgrep, -over time, ripgrep has grown support for most features found in other file -searching tools. This includes searching for results spanning across multiple -lines, and opt-in support for PCRE2, which provides look-around and -backreference support. - -At this point, the primary reasons not to use ripgrep probably consist of one -or more of the following: - -* You need a portable and ubiquitous tool. While ripgrep works on Windows, - macOS and Linux, it is not ubiquitous and it does not conform to any - standard such as POSIX. The best tool for this job is good old grep. -* There still exists some other feature (or bug) not listed in this README that - you rely on that's in another tool that isn't in ripgrep. -* There is a performance edge case where ripgrep doesn't do well where another - tool does do well. (Please file a bug report!) -* ripgrep isn't possible to install on your machine or isn't available for your - platform. (Please file a bug report!) - - -### Is it really faster than everything else? - -Generally, yes. A large number of benchmarks with detailed analysis for each is -[available on my blog](https://blog.burntsushi.net/ripgrep/). - -Summarizing, ripgrep is fast because: - -* It is built on top of - [Rust's regex engine](https://github.com/rust-lang/regex). - Rust's regex engine uses finite automata, SIMD and aggressive literal - optimizations to make searching very fast. (PCRE2 support can be opted into - with the `-P/--pcre2` flag.) -* Rust's regex library maintains performance with full Unicode support by - building UTF-8 decoding directly into its deterministic finite automaton - engine. -* It supports searching with either memory maps or by searching incrementally - with an intermediate buffer. The former is better for single files and the - latter is better for large directories. ripgrep chooses the best searching - strategy for you automatically. -* Applies your ignore patterns in `.gitignore` files using a - [`RegexSet`](https://docs.rs/regex/1/regex/struct.RegexSet.html). - That means a single file path can be matched against multiple glob patterns - simultaneously. -* It uses a lock-free parallel recursive directory iterator, courtesy of - [`crossbeam`](https://docs.rs/crossbeam) and - [`ignore`](https://docs.rs/ignore). - - -### Feature comparison - -Andy Lester, author of [ack](https://beyondgrep.com/), has published an -excellent table comparing the features of ack, ag, git-grep, GNU grep and -ripgrep: https://beyondgrep.com/feature-comparison/ - -Note that ripgrep has grown a few significant new features recently that -are not yet present in Andy's table. This includes, but is not limited to, -configuration files, passthru, support for searching compressed files, -multiline search and opt-in fancy regex support via PCRE2. - - -### Installation - -The binary name for ripgrep is `rg`. - -**[Archives of precompiled binaries for ripgrep are available for Windows, -macOS and Linux.](https://github.com/BurntSushi/ripgrep/releases)** Linux and -Windows binaries are static executables. Users of platforms not explicitly -mentioned below are advised to download one of these archives. - -If you're a **macOS Homebrew** or a **Linuxbrew** user, then you can install -ripgrep from homebrew-core: - -``` -$ brew install ripgrep -``` - -If you're a **MacPorts** user, then you can install ripgrep from the -[official ports](https://www.macports.org/ports.php?by=name&substr=ripgrep): - -``` -$ sudo port install ripgrep -``` - -If you're a **Windows Chocolatey** user, then you can install ripgrep from the -[official repo](https://chocolatey.org/packages/ripgrep): - -``` -$ choco install ripgrep -``` - -If you're a **Windows Scoop** user, then you can install ripgrep from the -[official bucket](https://github.com/ScoopInstaller/Main/blob/master/bucket/ripgrep.json): - -``` -$ scoop install ripgrep -``` - -If you're an **Arch Linux** user, then you can install ripgrep from the official repos: - -``` -$ pacman -S ripgrep -``` - -If you're a **Gentoo** user, you can install ripgrep from the -[official repo](https://packages.gentoo.org/packages/sys-apps/ripgrep): - -``` -$ emerge sys-apps/ripgrep -``` - -If you're a **Fedora** user, you can install ripgrep from official -repositories. - -``` -$ sudo dnf install ripgrep -``` - -If you're an **openSUSE** user, ripgrep is included in **openSUSE Tumbleweed** -and **openSUSE Leap** since 15.1. - -``` -$ sudo zypper install ripgrep -``` - -If you're a **RHEL/CentOS 7/8** user, you can install ripgrep from -[copr](https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/): - -``` -$ sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo -$ sudo yum install ripgrep -``` - -If you're a **Nix** user, you can install ripgrep from -[nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/text/ripgrep/default.nix): - -``` -$ nix-env --install ripgrep -$ # (Or using the attribute name, which is also ripgrep.) -``` - -If you're a **Debian** user (or a user of a Debian derivative like **Ubuntu**), -then ripgrep can be installed using a binary `.deb` file provided in each -[ripgrep release](https://github.com/BurntSushi/ripgrep/releases). - -``` -$ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/12.1.1/ripgrep_12.1.1_amd64.deb -$ sudo dpkg -i ripgrep_12.1.1_amd64.deb -``` - -If you run Debian Buster (currently Debian stable) or Debian sid, ripgrep is -[officially maintained by Debian](https://tracker.debian.org/pkg/rust-ripgrep). -``` -$ sudo apt-get install ripgrep -``` - -If you're an **Ubuntu Cosmic (18.10)** (or newer) user, ripgrep is -[available](https://launchpad.net/ubuntu/+source/rust-ripgrep) using the same -packaging as Debian: - -``` -$ sudo apt-get install ripgrep -``` - -(N.B. Various snaps for ripgrep on Ubuntu are also available, but none of them -seem to work right and generate a number of very strange bug reports that I -don't know how to fix and don't have the time to fix. Therefore, it is no -longer a recommended installation option.) - -If you're a **FreeBSD** user, then you can install ripgrep from the -[official ports](https://www.freshports.org/textproc/ripgrep/): - -``` -# pkg install ripgrep -``` - -If you're an **OpenBSD** user, then you can install ripgrep from the -[official ports](https://openports.se/textproc/ripgrep): - -``` -$ doas pkg_add ripgrep -``` - -If you're a **NetBSD** user, then you can install ripgrep from -[pkgsrc](https://pkgsrc.se/textproc/ripgrep): - -``` -# pkgin install ripgrep -``` - -If you're a **Haiku x86_64** user, then you can install ripgrep from the -[official ports](https://github.com/haikuports/haikuports/tree/master/sys-apps/ripgrep): - -``` -$ pkgman install ripgrep -``` - -If you're a **Haiku x86_gcc2** user, then you can install ripgrep from the -same port as Haiku x86_64 using the x86 secondary architecture build: - -``` -$ pkgman install ripgrep_x86 -``` - -If you're a **Rust programmer**, ripgrep can be installed with `cargo`. - -* Note that the minimum supported version of Rust for ripgrep is **1.34.0**, - although ripgrep may work with older versions. -* Note that the binary may be bigger than expected because it contains debug - symbols. This is intentional. To remove debug symbols and therefore reduce - the file size, run `strip` on the binary. - -``` -$ cargo install ripgrep -``` - - -### Building - -ripgrep is written in Rust, so you'll need to grab a -[Rust installation](https://www.rust-lang.org/) in order to compile it. -ripgrep compiles with Rust 1.34.0 (stable) or newer. In general, ripgrep tracks -the latest stable release of the Rust compiler. - -To build ripgrep: - -``` -$ git clone https://github.com/BurntSushi/ripgrep -$ cd ripgrep -$ cargo build --release -$ ./target/release/rg --version -0.1.3 -``` - -If you have a Rust nightly compiler and a recent Intel CPU, then you can enable -additional optional SIMD acceleration like so: - -``` -RUSTFLAGS="-C target-cpu=native" cargo build --release --features 'simd-accel' -``` - -The `simd-accel` feature enables SIMD support in certain ripgrep dependencies -(responsible for transcoding). They are not necessary to get SIMD optimizations -for search; those are enabled automatically. Hopefully, some day, the -`simd-accel` feature will similarly become unnecessary. **WARNING:** Currently, -enabling this option can increase compilation times dramatically. - -Finally, optional PCRE2 support can be built with ripgrep by enabling the -`pcre2` feature: - -``` -$ cargo build --release --features 'pcre2' -``` - -(Tip: use `--features 'pcre2 simd-accel'` to also include compile time SIMD -optimizations, which will only work with a nightly compiler.) - -Enabling the PCRE2 feature works with a stable Rust compiler and will -attempt to automatically find and link with your system's PCRE2 library via -`pkg-config`. If one doesn't exist, then ripgrep will build PCRE2 from source -using your system's C compiler and then statically link it into the final -executable. Static linking can be forced even when there is an available PCRE2 -system library by either building ripgrep with the MUSL target or by setting -`PCRE2_SYS_STATIC=1`. - -ripgrep can be built with the MUSL target on Linux by first installing the MUSL -library on your system (consult your friendly neighborhood package manager). -Then you just need to add MUSL support to your Rust toolchain and rebuild -ripgrep, which yields a fully static executable: - -``` -$ rustup target add x86_64-unknown-linux-musl -$ cargo build --release --target x86_64-unknown-linux-musl -``` - -Applying the `--features` flag from above works as expected. If you want to -build a static executable with MUSL and with PCRE2, then you will need to have -`musl-gcc` installed, which might be in a separate package from the actual -MUSL library, depending on your Linux distribution. - - -### Running tests - -ripgrep is relatively well-tested, including both unit tests and integration -tests. To run the full test suite, use: - -``` -$ cargo test --all -``` - -from the repository root. - - -### Vulnerability reporting - -For reporting a security vulnerability, please -[contact Andrew Gallant](https://blog.burntsushi.net/about/), -which has my email address and PGP public key if you wish to send an encrypted -message. - - -### Translations - -The following is a list of known translations of ripgrep's documentation. These -are unofficially maintained and may not be up to date. - -* [Chinese](https://github.com/chinanf-boy/ripgrep-zh#%E6%9B%B4%E6%96%B0-) -* [Spanish](https://github.com/UltiRequiem/traducciones/tree/master/ripgrep) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/RELEASE-CHECKLIST.md b/collector/compile-benchmarks/ripgrep-13.0.0/RELEASE-CHECKLIST.md deleted file mode 100644 index e287860c1..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/RELEASE-CHECKLIST.md +++ /dev/null @@ -1,51 +0,0 @@ -Release Checklist ------------------ -* Ensure local `master` is up to date with respect to `origin/master`. -* Run `cargo update` and review dependency updates. Commit updated - `Cargo.lock`. -* Run `cargo outdated` and review semver incompatible updates. Unless there is - a strong motivation otherwise, review and update every dependency. Also - run `--aggressive`, but don't update to crates that are still in beta. -* Review changes for every crate in `crates` since the last ripgrep release. - If the set of changes is non-empty, issue a new release for that crate. Check - crates in the following order. After updating a crate, ensure minimal - versions are updated as appropriate in dependents. If an update is required, - run `cargo-up --no-push crates/{CRATE}/Cargo.toml`. - * crates/globset - * crates/ignore - * crates/cli - * crates/matcher - * crates/regex - * crates/pcre2 - * crates/searcher - * crates/printer - * crates/grep (bump minimal versions as necessary) - * crates/core (do **not** bump version, but update dependencies as needed) -* Update the CHANGELOG as appropriate. -* Edit the `Cargo.toml` to set the new ripgrep version. Run - `cargo update -p ripgrep` so that the `Cargo.lock` is updated. Commit the - changes and create a new signed tag. Alternatively, use - `cargo-up --no-push --no-release Cargo.toml {VERSION}` to automate this. -* Wait for CI to finish creating the release. If the release build fails, then - delete the tag from GitHub, make fixes, re-tag, delete the release and push. -* Copy the relevant section of the CHANGELOG to the tagged release notes. - Include this blurb describing what ripgrep is: - > In case you haven't heard of it before, ripgrep is a line-oriented search - > tool that recursively searches the current directory for a regex pattern. - > By default, ripgrep will respect gitignore rules and automatically skip - > hidden files/directories and binary files. -* Run `ci/build-deb` locally and manually upload the deb package to the - release. -* Run `cargo publish`. -* Run `ci/sha256-releases {VERSION} >> pkg/brew/ripgrep-bin.rb`. Then edit - `pkg/brew/ripgrep-bin.rb` to update the version number and sha256 hashes. - Remove extraneous stuff added by `ci/sha256-releases`. Commit changes. -* Add TBD section to the top of the CHANGELOG: - ``` - TBD - === - Unreleased changes. Release notes have not yet been written. - ``` - -Note that -[`cargo-up` can be found in BurntSushi's dotfiles](https://github.com/BurntSushi/dotfiles/blob/master/bin/cargo-up). diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/UNLICENSE b/collector/compile-benchmarks/ripgrep-13.0.0/UNLICENSE deleted file mode 100644 index 68a49daad..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/UNLICENSE +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/benchsuite b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/benchsuite deleted file mode 100755 index a70eb5408..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/benchsuite +++ /dev/null @@ -1,1304 +0,0 @@ -#!/usr/bin/env python3 - -''' -benchsuite is a benchmark runner for comparing command line search tools. -''' - -import argparse -import csv -import os -import os.path as path -from multiprocessing import cpu_count -import re -import shutil -import statistics -import subprocess -import sys -import time - -# Some constants for identifying the corpora we use to run tests. -# We establish two very different kinds of corpora: a small number of large -# files and a large number of small files. These are vastly different use cases -# not only because of their performance characteristics, but also the -# strategies used to increase the relevance of results returned. - -SUBTITLES_DIR = 'subtitles' -SUBTITLES_EN_NAME = 'en.txt' -SUBTITLES_EN_NAME_SAMPLE = 'en.sample.txt' -SUBTITLES_EN_NAME_GZ = '%s.gz' % SUBTITLES_EN_NAME -# SUBTITLES_EN_URL = 'http://opus.lingfil.uu.se/OpenSubtitles2016/mono/OpenSubtitles2016.raw.en.gz' # noqa -SUBTITLES_EN_URL = 'https://object.pouta.csc.fi/OPUS-OpenSubtitles/v2016/mono/en.txt.gz' # noqa -SUBTITLES_RU_NAME = 'ru.txt' -SUBTITLES_RU_NAME_GZ = '%s.gz' % SUBTITLES_RU_NAME -# SUBTITLES_RU_URL = 'http://opus.lingfil.uu.se/OpenSubtitles2016/mono/OpenSubtitles2016.raw.ru.gz' # noqa -SUBTITLES_RU_URL = 'https://object.pouta.csc.fi/OPUS-OpenSubtitles/v2016/mono/ru.txt.gz' # noqa - -LINUX_DIR = 'linux' -LINUX_CLONE = 'git://github.com/BurntSushi/linux' - -# Grep takes locale settings from the environment. There is a *substantial* -# performance impact for enabling Unicode, so we need to handle this explicitly -# in our benchmarks. -GREP_ASCII = {'LC_ALL': 'C'} -GREP_UNICODE = {'LC_ALL': 'en_US.UTF-8'} - -# Sift tries really hard to search everything by default. In our code search -# benchmarks, we don't want that. -SIFT = [ - 'sift', - '--binary-skip', - '--exclude-files', '.*', - '--exclude-files', '*.pdf', -] - - -def bench_linux_literal_default(suite_dir): - ''' - Benchmark the speed of a literal using *default* settings. - - This is a purposefully unfair benchmark for use in performance - analysis, but it is pedagogically useful to demonstrate how default - behaviors differ. For example, ugrep and grep don't do any smart - filtering by default, so they will invariably search more files - than ripgrep, ag or git grep. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'PM_RESUME' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', pat]), - mkcmd('ag', ['ag', pat]), - # I guess setting LC_ALL=en_US.UTF-8 probably isn't necessarily the - # default, but I'd guess it to be on most desktop systems. - mkcmd('git grep', ['git', 'grep', pat], env=GREP_UNICODE), - mkcmd('ugrep', ['ugrep', '-r', pat, './']), - mkcmd('grep', ['grep', '-r', pat, './'], env=GREP_UNICODE), - ]) - - -def bench_linux_literal(suite_dir): - ''' - Benchmark the speed of a literal, attempting to be fair. - - This tries to use the minimum set of options available in all tools - to test how fast they are. For example, it makes sure there is - no case insensitive matching and that line numbers are computed - (because some tools don't permit disabling line numbers). - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'PM_RESUME' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('rg (mmap)', ['rg', '-n', '--mmap', pat]), - mkcmd('ag (mmap)', ['ag', '-s', pat]), - mkcmd('git grep', [ - 'git', 'grep', '-I', '-n', pat, - ], env={'LC_ALL': 'C'}), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]) - ]) - - -def bench_linux_literal_casei(suite_dir): - ''' - Benchmark the speed of a case insensitive literal search. - - This is like the linux_literal benchmark, except we ask the - search tools to do case insensitive search. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'PM_RESUME' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', '-i', pat]), - mkcmd('rg (mmap)', ['rg', '-n', '-i', '--mmap', pat]), - mkcmd('ag (mmap)', ['ag', '-i', pat]), - # It'd technically be more appropriate to set LC_ALL=en_US.UTF-8 here, - # since that is certainly what ripgrep is doing, but this is for an - # ASCII literal, so we should give `git grep` all the opportunity to - # do its best. - mkcmd('git grep', [ - 'git', 'grep', '-I', '-n', '-i', pat, - ], env={'LC_ALL': 'C'}), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-i', pat, './', - ]) - ]) - - -def bench_linux_re_literal_suffix(suite_dir): - ''' - Benchmark the speed of a literal inside a regex. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = '[A-Z]+_RESUME' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('ag', ['ag', '-s', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]) - ]) - - -def bench_linux_word(suite_dir): - ''' - Benchmark use of the -w ("match word") flag in each tool. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'PM_RESUME' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', '-w', pat]), - mkcmd('ag', ['ag', '-s', '-w', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', '-w', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-w', pat, './', - ]) - ]) - - -def bench_linux_unicode_greek(suite_dir): - ''' - Benchmark matching of a Unicode category. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = r'\p{Greek}' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]) - ]) - - -def bench_linux_unicode_greek_casei(suite_dir): - ''' - Benchmark matching of a Unicode category, case insensitively. - - Only ripgrep gets this right (and it's still fast). - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = r'\p{Greek}' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', '-i', pat]), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-i', pat, './', - ]) - ]) - - -def bench_linux_unicode_word(suite_dir): - ''' - Benchmark Unicode aware \\w character class. - - Only ripgrep and git-grep (with LC_ALL=en_US.UTF-8) actually get - this right. Everything else uses the standard ASCII interpretation - of \\w. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = r'\wAh' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('rg (ASCII)', ['rg', '-n', '(?-u)' + pat]), - mkcmd('ag (ASCII)', ['ag', '-s', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'en_US.UTF-8'}, - ), - mkcmd( - 'git grep (ASCII)', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]), - mkcmd('ugrep (ASCII)', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-U', pat, './', - ]), - ]) - - -def bench_linux_no_literal(suite_dir): - ''' - Benchmark a regex that defeats all literal optimizations. - - Most search patterns have some kind of literal in them, which - typically permits searches to take some shortcuts. Therefore, the - applicability of this benchmark is somewhat suspicious, but the - suite wouldn't feel complete without it. - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = r'\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('rg (ASCII)', ['rg', '-n', '(?-u)' + pat]), - mkcmd('ag (ASCII)', ['ag', '-s', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'en_US.UTF-8'}, - ), - mkcmd( - 'git grep (ASCII)', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]), - mkcmd('ugrep (ASCII)', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-U', pat, './', - ]), - ]) - - -def bench_linux_alternates(suite_dir): - ''' - Benchmark a small alternation of literals. - - sift doesn't make the cut. It's more than 10x slower than the next - fastest result. The slowdown is likely because the Go regexp engine - doesn't do any literal optimizations for this case (there is no - common leading byte). - ''' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', pat]), - mkcmd('ag', ['ag', '-s', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', pat, './', - ]) - ]) - - -def bench_linux_alternates_casei(suite_dir): - 'Benchmark a small alternation of literals case insensitively.' - require(suite_dir, 'linux') - cwd = path.join(suite_dir, LINUX_DIR) - pat = 'ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT' - - def mkcmd(*args, **kwargs): - kwargs['cwd'] = cwd - return Command(*args, **kwargs) - - return Benchmark(pattern=pat, commands=[ - mkcmd('rg', ['rg', '-n', '-i', pat]), - mkcmd('ag', ['ag', '-i', pat]), - mkcmd( - 'git grep', - ['git', 'grep', '-E', '-I', '-n', '-i', pat], - env={'LC_ALL': 'C'}, - ), - mkcmd('ugrep', [ - 'ugrep', '-r', '--ignore-files', '--no-hidden', '-I', - '-n', '-i', pat, './', - ]) - ]) - - -def bench_subtitles_en_literal(suite_dir): - ''' - Benchmark the speed of an ASCII string literal. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = 'Sherlock Holmes' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', pat, en]), - Command('rg (no mmap)', ['rg', '--no-mmap', pat, en]), - Command('grep', ['grep', pat, en], env=GREP_ASCII), - Command('rg (lines)', ['rg', '-n', pat, en]), - Command('ag (lines)', ['ag', '-s', pat, en]), - Command('grep (lines)', ['grep', '-n', pat, en], env=GREP_ASCII), - Command('ugrep (lines)', ['ugrep', '-n', pat, en]) - ]) - - -def bench_subtitles_en_literal_casei(suite_dir): - ''' - Benchmark the speed of a Unicode-y string case insensitively. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = 'Sherlock Holmes' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-i', pat, en]), - Command('grep', ['grep', '-i', pat, en], env=GREP_UNICODE), - Command('grep (ASCII)', ['grep', '-E', '-i', pat, en], env=GREP_ASCII), - Command('rg (lines)', ['rg', '-n', '-i', pat, en]), - Command('ag (lines) (ASCII)', ['ag', '-i', pat, en]), - Command('ugrep (lines)', ['ugrep', '-n', '-i', pat, en]) - ]) - - -def bench_subtitles_en_literal_word(suite_dir): - ''' - Benchmark the speed of finding a literal inside word boundaries. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = 'Sherlock Holmes' - - return Benchmark(pattern=pat, commands=[ - Command('rg (ASCII)', [ - 'rg', '-n', r'(?-u:\b)' + pat + r'(?-u:\b)', en, - ]), - Command('ag (ASCII)', ['ag', '-sw', pat, en]), - Command('grep (ASCII)', ['grep', '-nw', pat, en], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-nw', pat, en]), - Command('rg', ['rg', '-nw', pat, en]), - Command('grep', ['grep', '-nw', pat, en], env=GREP_UNICODE), - ]) - - -def bench_subtitles_en_alternate(suite_dir): - ''' - Benchmark the speed of a set of alternate literals. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = '|'.join([ - 'Sherlock Holmes', - 'John Watson', - 'Irene Adler', - 'Inspector Lestrade', - 'Professor Moriarty', - ]) - - return Benchmark(pattern=pat, commands=[ - Command('rg (lines)', ['rg', '-n', pat, en]), - Command('ag (lines)', ['ag', '-s', pat, en]), - Command('grep (lines)', ['grep', '-E', '-n', pat, en], env=GREP_ASCII), - Command('ugrep (lines)', ['ugrep', '-n', pat, en]), - Command('rg', ['rg', pat, en]), - Command('grep', ['grep', '-E', pat, en], env=GREP_ASCII), - ]) - - -def bench_subtitles_en_alternate_casei(suite_dir): - ''' - Benchmark the speed of a set of alternate literals. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = '|'.join([ - 'Sherlock Holmes', - 'John Watson', - 'Irene Adler', - 'Inspector Lestrade', - 'Professor Moriarty', - ]) - - return Benchmark(pattern=pat, commands=[ - Command('ag (ASCII)', ['ag', '-s', '-i', pat, en]), - Command('grep (ASCII)', [ - 'grep', '-E', '-ni', pat, en, - ], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-i', pat, en]), - Command('rg', ['rg', '-n', '-i', pat, en]), - Command('grep', ['grep', '-E', '-ni', pat, en], env=GREP_UNICODE), - ]) - - -def bench_subtitles_en_surrounding_words(suite_dir): - ''' - Benchmark a more complex regex with an inner literal. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = r'\w+\s+Holmes\s+\w+' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-n', pat, en]), - Command('grep', ['grep', '-E', '-n', pat, en], env=GREP_UNICODE), - Command('ugrep', ['ugrep', '-n', pat, en]), - Command('rg (ASCII)', ['rg', '-n', '(?-u)' + pat, en]), - Command('ag (ASCII)', ['ag', '-s', pat, en]), - Command('grep (ASCII)', ['grep', '-E', '-n', pat, en], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-U', pat, en]) - ]) - - -def bench_subtitles_en_no_literal(suite_dir): - ''' - Benchmark the speed of a regex with no literals. - - Note that we don't even try to run grep with Unicode support - on this one. While it should eventually get the right answer, - I killed it after it had already been running for two minutes - and showed no signs of finishing soon. - ''' - require(suite_dir, 'subtitles-en') - en = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_EN_NAME_SAMPLE) - pat = r'\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-n', pat, en]), - Command('ugrep', ['ugrep', '-n', pat, en]), - Command('rg (ASCII)', ['rg', '-n', '(?-u)' + pat, en]), - Command('ag (ASCII)', ['ag', '-s', pat, en]), - Command('grep (ASCII)', ['grep', '-E', '-n', pat, en], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-U', pat, en]) - ]) - - -def bench_subtitles_ru_literal(suite_dir): - ''' - Benchmark the speed of a Unicode-y string literal. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = 'Шерлок Холмс' # Sherlock Holmes - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', pat, ru]), - Command('rg (no mmap)', ['rg', '--no-mmap', pat, ru]), - Command('grep', ['grep', pat, ru], env=GREP_ASCII), - Command('rg (lines)', ['rg', '-n', pat, ru]), - Command('ag (lines)', ['ag', '-s', pat, ru]), - Command('grep (lines)', ['grep', '-n', pat, ru], env=GREP_ASCII), - Command('ugrep (lines)', ['ugrep', '-n', pat, ru]) - ]) - - -def bench_subtitles_ru_literal_casei(suite_dir): - ''' - Benchmark the speed of a Unicode-y string case insensitively. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = 'Шерлок Холмс' # Sherlock Holmes - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-i', pat, ru]), - Command('grep', ['grep', '-i', pat, ru], env=GREP_UNICODE), - Command('grep (ASCII)', ['grep', '-E', '-i', pat, ru], env=GREP_ASCII), - Command('rg (lines)', ['rg', '-n', '-i', pat, ru]), - Command('ag (lines) (ASCII)', ['ag', '-i', pat, ru]), - Command('ugrep (lines) (ASCII)', ['ugrep', '-n', '-i', pat, ru]) - ]) - - -def bench_subtitles_ru_literal_word(suite_dir): - ''' - Benchmark the speed of finding a literal inside word boundaries. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = 'Шерлок Холмс' # Sherlock Holmes - - return Benchmark(pattern=pat, commands=[ - Command('rg (ASCII)', [ - # You might think we'd use \b here for word boundaries, but both - # GNU grep and ripgrep implement -w with the formulation below. - # Since we can't use Unicode in a pattern and disable Unicode word - # boundaries, we just hand-jam this ourselves. - 'rg', '-n', r'(?-u:^|\W)' + pat + r'(?-u:$|\W)', ru, - ]), - Command('ag (ASCII)', ['ag', '-sw', pat, ru]), - Command('grep (ASCII)', [ - 'grep', '-nw', pat, ru, - ], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-nw', pat, ru]), - Command('rg', ['rg', '-nw', pat, ru]), - Command('grep', ['grep', '-nw', pat, ru], env=GREP_UNICODE), - ]) - - -def bench_subtitles_ru_alternate(suite_dir): - ''' - Benchmark the speed of a set of alternate literals. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = '|'.join([ - 'Шерлок Холмс', # Sherlock Holmes - 'Джон Уотсон', # John Watson - 'Ирен Адлер', # Irene Adler - 'инспектор Лестрейд', # Inspector Lestrade - 'профессор Мориарти', # Professor Moriarty - ]) - - return Benchmark(pattern=pat, commands=[ - Command('rg (lines)', ['rg', '-n', pat, ru]), - Command('ag (lines)', ['ag', '-s', pat, ru]), - Command('grep (lines)', ['grep', '-E', '-n', pat, ru], env=GREP_ASCII), - Command('ugrep (lines)', ['ugrep', '-n', pat, ru]), - Command('rg', ['rg', pat, ru]), - Command('grep', ['grep', '-E', pat, ru], env=GREP_ASCII), - ]) - - -def bench_subtitles_ru_alternate_casei(suite_dir): - ''' - Benchmark the speed of a set of alternate literals. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = '|'.join([ - 'Шерлок Холмс', # Sherlock Holmes - 'Джон Уотсон', # John Watson - 'Ирен Адлер', # Irene Adler - 'инспектор Лестрейд', # Inspector Lestrade - 'профессор Мориарти', # Professor Moriarty - ]) - - return Benchmark(pattern=pat, commands=[ - Command('ag (ASCII)', ['ag', '-s', '-i', pat, ru]), - Command('grep (ASCII)', [ - 'grep', '-E', '-ni', pat, ru, - ], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-i', pat, ru]), - Command('rg', ['rg', '-n', '-i', pat, ru]), - Command('grep', ['grep', '-E', '-ni', pat, ru], env=GREP_UNICODE), - ]) - - -def bench_subtitles_ru_surrounding_words(suite_dir): - ''' - Benchmark a more complex regex with an inner literal. - ''' - require(suite_dir, 'subtitles-en') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = r'\w+\s+Холмс\s+\w+' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-n', pat, ru]), - Command('grep', ['grep', '-E', '-n', pat, ru], env=GREP_UNICODE), - Command('ugrep', ['ugrep', '-n', pat, ru]), - Command('ag (ASCII)', ['ag', '-s', pat, ru]), - Command('grep (ASCII)', ['grep', '-E', '-n', pat, ru], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-U', pat, ru]), - ]) - - -def bench_subtitles_ru_no_literal(suite_dir): - ''' - Benchmark the speed of a regex with no literals. - - Note that we don't even try to run grep with Unicode support - on this one. While it should eventually get the right answer, - I killed it after it had already been running for two minutes - and showed no signs of finishing soon. - ''' - require(suite_dir, 'subtitles-ru') - ru = path.join(suite_dir, SUBTITLES_DIR, SUBTITLES_RU_NAME) - pat = r'\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}' - - return Benchmark(pattern=pat, commands=[ - Command('rg', ['rg', '-n', pat, ru]), - Command('ugrep', ['ugrep', '-n', pat, ru]), - Command('rg (ASCII)', ['rg', '-n', '(?-u)' + pat, ru]), - Command('ag (ASCII)', ['ag', '-s', pat, ru]), - Command('grep (ASCII)', ['grep', '-E', '-n', pat, ru], env=GREP_ASCII), - Command('ugrep (ASCII)', ['ugrep', '-n', '-U', pat, ru]) - ]) - - -class MissingDependencies(Exception): - ''' - A missing dependency exception. - - This exception occurs when running a benchmark that requires a - particular corpus that isn't available. - - :ivar list(str) missing_names: - A list of missing dependency names. These names correspond to - names that can be used with the --download flag. - ''' - def __init__(self, missing_names): - self.missing_names = missing_names - - def __str__(self): - return 'MissingDependency(%s)' % repr(self.missing_names) - - -class MissingCommands(Exception): - ''' - A missing command exception. - - This exception occurs when running a command in a benchmark - where the command could not be found on the current system. - - :ivar list(str) missing_names: - The names of the command binaries that could not be found. - ''' - def __init__(self, missing_names): - self.missing_names = sorted(set(missing_names)) - - def __str__(self): - return 'MissingCommands(%s)' % repr(self.missing_names) - - -class Benchmark(object): - ''' - A single benchmark corresponding to a grouping of commands. - - The main purpose of a benchmark is to compare the performance - characteristics of a group of commands. - ''' - - def __init__(self, name=None, pattern=None, commands=None, - warmup_count=1, count=3, line_count=True, - allow_missing_commands=False, - disabled_cmds=None, order=0): - ''' - Create a single benchmark. - - A single benchmark is composed of a set of commands that are - benchmarked and compared against one another. A benchmark may - have multiple commands that use the same search tool (but - probably should have something differentiating them). - - The grouping of commands is a purely human driven process. - - By default, the output of every command is sent to /dev/null. - Other types of behavior are available via the methods defined - on this benchmark. - - :param str name: - A human readable string denoting the name of this - benchmark. - :param str pattern: - The pattern that is used in search. - :param list(Command) commands: - A list of commands to initialize this benchmark with. More - commands may be added before running the benchmark. - :param int warmup_count: - The number of times to run each command before recording - samples. - :param int count: - The number of samples to collect from each command. - :param bool line_count: - When set, the lines of each search are counted and included - in the samples produced. - :param bool allow_missing_commands: - When set, if a command is missing, then the benchmark - will simply skip it. - :param list(str) disabled_cmds: - A list of commands to skip. - :param int order: - An integer indicating the sequence number of this benchmark. - ''' - self.name = name - self.pattern = pattern - self.commands = commands or [] - self.warmup_count = warmup_count - self.count = count - self.line_count = line_count - self.allow_missing_commands = allow_missing_commands - self.disabled_cmds = set(disabled_cmds or []) - self.order = order - - def raise_if_missing(self): - ''' - Raises a MissingCommands exception if applicable. - - A MissingCommands exception is raised when the following - criteria are met: 1) allow_missing_commands is False, and 2) at - least one command in this benchmark could not be found on this - system. - ''' - missing_commands = [] - for c in self.commands: - if c.binary_name in self.disabled_cmds or c.exists(): - continue - missing_commands.append(c.binary_name) - if not self.allow_missing_commands and len(missing_commands) > 0: - raise MissingCommands(missing_commands) - - def run(self): - ''' - Runs this benchmark and returns the results. - - :rtype: Result - :raises: - MissingCommands if any command doesn't exist. - (Unless allow_missing_commands is enabled.) - ''' - self.raise_if_missing() - result = Result(self) - for cmd in self.commands: - if cmd.binary_name in self.disabled_cmds: - continue - if self.allow_missing_commands and not cmd.exists(): - # Skip this command if we're OK with it. - continue - # Do a warmup first. - for _ in range(self.warmup_count): - self.run_one(cmd) - for _ in range(self.count): - result.add(cmd, **self.run_one(cmd)) - return result - - def run_one(self, cmd): - ''' - Runs the given command exactly once. - - Returns an object that includes the time taken by the command. - If this benchmark was configured to count the number of lines - returned, then the line count is also returned. - - :param Command cmd: The command to run. - :returns: - A dict with two fields, duration and line_count. - The duration is in seconds, with fractional milliseconds, - and is guaranteed to be available. The line_count is set - to None unless line counting is enabled, in which case, - it is the number of lines in the search output. - :rtype: int - ''' - if not cmd.exists(): - raise MissingCommands([cmd.cmd[0]]) - cmd.kwargs['stderr'] = subprocess.DEVNULL - if self.line_count: - cmd.kwargs['stdout'] = subprocess.PIPE - else: - cmd.kwargs['stdout'] = subprocess.DEVNULL - - start = time.time() - completed = cmd.run() - end = time.time() - - line_count = None - if self.line_count: - line_count = completed.stdout.count(b'\n') - return { - 'duration': end - start, - 'line_count': line_count, - } - - -class Result(object): - ''' - The result of running a benchmark. - - Benchmark results consist of a set of samples, where each sample - corresponds to a single run of a single command in the benchmark. - Various statistics can be computed from these samples such as mean - and standard deviation. - ''' - def __init__(self, benchmark): - ''' - Create a new set of results, initially empty. - - :param Benchmark benchmark: - The benchmark that produced these results. - ''' - self.benchmark = benchmark - self.samples = [] - - def add(self, cmd, duration, line_count=None): - ''' - Add a new sample to this result set. - - :param Command cmd: - The command that produced this sample. - :param int duration: - The duration, in milliseconds, that the command took to - run. - :param int line_count: - The number of lines in the search output. This is optional. - ''' - self.samples.append({ - 'cmd': cmd, - 'duration': duration, - 'line_count': line_count, - }) - - def fastest_sample(self): - ''' - Returns the fastest recorded sample. - ''' - return min(self.samples, key=lambda s: s['duration']) - - def fastest_cmd(self): - ''' - Returns the fastest command according to distribution. - ''' - means = [] - for cmd in self.benchmark.commands: - mean, _ = self.distribution_for(cmd) - if mean is None: - continue - means.append((cmd, mean)) - return min(means, key=lambda tup: tup[1])[0] - - def samples_for(self, cmd): - 'Returns an iterable of samples for cmd' - yield from (s for s in self.samples if s['cmd'].name == cmd.name) - - def line_counts_for(self, cmd): - ''' - Returns the line counts recorded for each command. - - :returns: - A dictionary from command name to a set of line - counts recorded. - ''' - return {s['line_count'] - for s in self.samples_for(cmd) - if s['line_count'] is not None} - - def distribution_for(self, cmd): - ''' - Returns the distribution (mean +/- std) of the given command. - - If there are no samples for this command (i.e., it was skipped), - then return ``(None, None)``. - - :rtype: (float, float) - :returns: - A tuple containing the mean and standard deviation, in that - order. - ''' - samples = list(s['duration'] for s in self.samples_for(cmd)) - if len(samples) == 0: - return None, None - return statistics.mean(samples), statistics.stdev(samples) - - -class Command(object): - def __init__(self, name, cmd, *args, **kwargs): - ''' - Create a new command that is run as part of a benchmark. - - *args and **kwargs are passed directly to ``subprocess.run``. - An exception to this is stdin/stdout/stderr. Output - redirection is completely controlled by the benchmark harness. - Trying to set them here will trigger an assert. - - :param str name: - The human readable name of this command. This is - particularly useful if the same search tool is used - multiple times in the same benchmark with different - arguments. - :param list(str) cmd: - The command to run as a list of arguments (including the - command name itself). - ''' - assert 'stdin' not in kwargs - assert 'stdout' not in kwargs - assert 'stderr' not in kwargs - self.name = name - self.cmd = cmd - self.args = args - self.kwargs = kwargs - - def exists(self): - 'Returns true if and only if this command exists.' - return shutil.which(self.binary_name) is not None - - @property - def binary_name(self): - 'Return the binary name of this command.' - return self.cmd[0] - - def run(self): - ''' - Runs this command and returns its status. - - :rtype: subprocess.CompletedProcess - ''' - return subprocess.run(self.cmd, *self.args, **self.kwargs) - - -def eprint(*args, **kwargs): - 'Like print, but to stderr.' - kwargs['file'] = sys.stderr - print(*args, **kwargs) - - -def run_cmd(cmd, *args, **kwargs): - ''' - Print the command to stderr and run it. - - If the command fails, throw a traceback. - ''' - eprint('# %s' % ' '.join(cmd)) - kwargs['check'] = True - return subprocess.run(cmd, *args, **kwargs) - - -def require(suite_dir, *names): - ''' - Declare a dependency on the given names for a benchmark. - - If any dependency doesn't exist, then fail with an error message. - ''' - errs = [] - for name in names: - fun_name = name.replace('-', '_') - if not globals()['has_%s' % fun_name](suite_dir): - errs.append(name) - if len(errs) > 0: - raise MissingDependencies(errs) - - -def download_linux(suite_dir): - 'Download and build the Linux kernel.' - checkout_dir = path.join(suite_dir, LINUX_DIR) - if not os.path.isdir(checkout_dir): - # Clone from my fork so that we always get the same corpus *and* still - # do a shallow clone. Shallow clones are much much cheaper than full - # clones. - run_cmd(['git', 'clone', '--depth', '1', LINUX_CLONE, checkout_dir]) - # We want to build the kernel because the process of building it produces - # a lot of junk in the repository that a search tool probably shouldn't - # touch. - if not os.path.exists(path.join(checkout_dir, 'vmlinux')): - eprint('# Building Linux kernel...') - run_cmd(['make', 'defconfig'], cwd=checkout_dir) - run_cmd(['make', '-j', str(cpu_count())], cwd=checkout_dir) - - -def has_linux(suite_dir): - 'Returns true if we believe the Linux kernel is built.' - checkout_dir = path.join(suite_dir, LINUX_DIR) - return path.exists(path.join(checkout_dir, 'vmlinux')) - - -def download_subtitles_en(suite_dir): - 'Download and decompress English subtitles.' - subtitle_dir = path.join(suite_dir, SUBTITLES_DIR) - en_path_gz = path.join(subtitle_dir, SUBTITLES_EN_NAME_GZ) - en_path = path.join(subtitle_dir, SUBTITLES_EN_NAME) - en_path_sample = path.join(subtitle_dir, SUBTITLES_EN_NAME_SAMPLE) - - if not os.path.isdir(subtitle_dir): - os.makedirs(subtitle_dir) - if not os.path.exists(en_path): - if not os.path.exists(en_path_gz): - run_cmd(['curl', '-LO', SUBTITLES_EN_URL], cwd=subtitle_dir) - run_cmd(['gunzip', en_path_gz]) - if not os.path.exists(en_path_sample): - # Get a sample roughly the same size as the Russian corpus so that - # benchmarks finish in a reasonable time. - with open(path.join(subtitle_dir, en_path_sample), 'wb+') as f: - run_cmd( - ['head', '-n', '55000000', en_path], - cwd=subtitle_dir, stdout=f) - - -def has_subtitles_en(suite_dir): - 'Returns true if English subtitles have been downloaded.' - subtitle_dir = path.join(suite_dir, SUBTITLES_DIR) - return path.exists(path.join(subtitle_dir, SUBTITLES_EN_NAME_SAMPLE)) - - -def download_subtitles_ru(suite_dir): - 'Download and decompress Russian subtitles.' - subtitle_dir = path.join(suite_dir, SUBTITLES_DIR) - ru_path_gz = path.join(subtitle_dir, SUBTITLES_RU_NAME_GZ) - ru_path = path.join(subtitle_dir, SUBTITLES_RU_NAME) - - if not os.path.isdir(subtitle_dir): - os.makedirs(subtitle_dir) - if not os.path.exists(ru_path): - if not os.path.exists(ru_path_gz): - run_cmd(['curl', '-LO', SUBTITLES_RU_URL], cwd=subtitle_dir) - run_cmd(['gunzip', ru_path_gz]) - - -def has_subtitles_ru(suite_dir): - 'Returns true if Russian subtitles have been downloaded.' - subtitle_dir = path.join(suite_dir, SUBTITLES_DIR) - return path.exists(path.join(subtitle_dir, SUBTITLES_RU_NAME)) - - -def download(suite_dir, choices): - ''' - Download choices into suite_dir. - - Specifically, choices specifies a list of corpora to fetch. - - :param str suite_dir: - The directory in which to download corpora. - :param list(str) choices: - A list of corpora to download. Available choices are: - all, linux, subtitles-en, subtitles-ru. - ''' - for choice in choices: - if choice == 'linux': - download_linux(suite_dir) - elif choice == 'subtitles-en': - download_subtitles_en(suite_dir) - elif choice == 'subtitles-ru': - download_subtitles_ru(suite_dir) - elif choice == 'all': - download_linux(suite_dir) - download_subtitles_en(suite_dir) - download_subtitles_ru(suite_dir) - else: - eprint('Unrecognized download choice: %s' % choice) - sys.exit(1) - - -def collect_benchmarks(suite_dir, filter_pat=None, - allow_missing_commands=False, - disabled_cmds=None, - warmup_iter=1, bench_iter=3): - ''' - Return an iterable of all runnable benchmarks. - - :param str suite_dir: - The directory containing corpora. - :param str filter_pat: - A single regular expression that is used to filter benchmarks - by their name. When not specified, all benchmarks are run. - :returns: - An iterable over all runnable benchmarks. If a benchmark - requires corpora that are missing, then a log message is - emitted to stderr and it is not yielded. - ''' - benchmarks = [] - for global_name in globals(): - if not global_name.startswith('bench_'): - continue - name = re.sub('^bench_', '', global_name) - if filter_pat is not None and not re.search(filter_pat, name): - continue - try: - fun = globals()[global_name] - benchmark = fun(suite_dir) - benchmark.name = name - benchmark.warmup_count = warmup_iter - benchmark.count = bench_iter - benchmark.allow_missing_commands = allow_missing_commands - benchmark.disabled_cmds = disabled_cmds - benchmark.order = fun.__code__.co_firstlineno - benchmark.raise_if_missing() - except MissingDependencies as e: - eprint( - 'missing: %s, skipping benchmark %s (try running with: %s)' % ( - ', '.join(e.missing_names), - name, - ' '.join(['--download %s' % n for n in e.missing_names]), - )) - continue - except MissingCommands as e: - fmt = 'missing commands: %s, skipping benchmark %s ' \ - '(run with --allow-missing to run incomplete benchmarks)' - eprint(fmt % (', '.join(e.missing_names), name)) - continue - benchmarks.append(benchmark) - return sorted(benchmarks, key=lambda b: b.order) - - -def main(): - download_choices = ['all', 'linux', 'subtitles-en', 'subtitles-ru'] - p = argparse.ArgumentParser('Command line search tool benchmark suite.') - p.add_argument( - '--dir', metavar='PATH', default=os.getcwd(), - help='The directory in which to download data and perform searches.') - p.add_argument( - '--download', metavar='CORPUS', action='append', - choices=download_choices, - help='Download and prepare corpus data, then exit without running ' - 'any benchmarks. Note that this command is intended to be ' - 'idempotent. WARNING: This downloads over a gigabyte of data, ' - 'and also includes building the Linux kernel. If "all" is used ' - 'then the total uncompressed size is around 13 GB. ' - 'Choices: %s' % ', '.join(download_choices)) - p.add_argument( - '--allow-missing', action='store_true', - help='Permit benchmarks to run even if some commands are missing.') - p.add_argument( - '--disabled', help='A list of comma separated commands to skip.') - p.add_argument( - '-f', '--force', action='store_true', - help='Overwrite existing files if there is a conflict.') - p.add_argument( - '--list', action='store_true', - help='List available benchmarks by name.') - p.add_argument( - '--raw', metavar='PATH', - help='Dump raw data (all samples collected) in CSV format to the ' - 'file path provided.') - p.add_argument( - '--warmup-iter', metavar='INTEGER', type=int, default=1, - help='The number of iterations to run each command before ' - 'recording measurements.') - p.add_argument( - '--bench-iter', metavar='INTEGER', type=int, default=3, - help='The number of iterations to run each command while ' - 'recording measurements.') - p.add_argument( - 'bench', metavar='PAT', nargs='?', - help='A regex pattern that will only run benchmarks that match.') - args = p.parse_args() - - if args.list: - benchmarks = collect_benchmarks( - args.dir, filter_pat=args.bench, - allow_missing_commands=args.allow_missing, - disabled_cmds=(args.disabled or '').split(','), - warmup_iter=args.warmup_iter, bench_iter=args.bench_iter) - for b in benchmarks: - print(b.name) - sys.exit(0) - if args.download is not None and len(args.download) > 0: - download(args.dir, args.download) - sys.exit(0) - - if not path.isdir(args.dir): - os.makedirs(args.dir) - if args.raw is not None and path.exists(args.raw) and not args.force: - eprint('File %s already exists (delete it or use --force)' % args.raw) - sys.exit(1) - raw_handle, raw_csv_wtr = None, None - if args.raw is not None: - fields = [ - 'benchmark', 'warmup_iter', 'iter', - 'name', 'command', 'duration', 'lines', 'env', - ] - raw_handle = open(args.raw, 'w+') - raw_csv_wtr = csv.DictWriter(raw_handle, fields) - raw_csv_wtr.writerow({x: x for x in fields}) - - benchmarks = collect_benchmarks( - args.dir, filter_pat=args.bench, - allow_missing_commands=args.allow_missing, - disabled_cmds=(args.disabled or '').split(','), - warmup_iter=args.warmup_iter, bench_iter=args.bench_iter) - for i, b in enumerate(benchmarks): - result = b.run() - fastest_cmd = result.fastest_cmd() - fastest_sample = result.fastest_sample() - max_name_len = max(len(cmd.name) for cmd in b.commands) - - if i > 0: - print() - header = '%s (pattern: %s)' % (b.name, b.pattern) - print('%s\n%s' % (header, '-' * len(header))) - for cmd in b.commands: - name = cmd.name - mean, stdev = result.distribution_for(cmd) - if mean is None: - # If we couldn't get a distribution for this command then - # it was skipped. - continue - line_counts = result.line_counts_for(cmd) - show_fast_cmd, show_line_counts = '', '' - if fastest_cmd.name == cmd.name: - show_fast_cmd = '*' - if fastest_sample['cmd'].name == cmd.name: - name += '*' - if len(line_counts) > 0: - counts = map(str, line_counts) - show_line_counts = ' (lines: %s)' % ', '.join(counts) - fmt = '{name:{pad}} {mean:0.3f} +/- {stdev:0.3f}{lines}{fast_cmd}' - print(fmt.format( - name=name, pad=max_name_len + 2, fast_cmd=show_fast_cmd, - mean=mean, stdev=stdev, lines=show_line_counts)) - sys.stdout.flush() - - if raw_csv_wtr is not None: - for sample in result.samples: - cmd, duration = sample['cmd'], sample['duration'] - env = ' '.join(['%s=%s' % (k, v) - for k, v in cmd.kwargs.get('env', {}).items()]) - raw_csv_wtr.writerow({ - 'benchmark': b.name, - 'warmup_iter': b.warmup_count, - 'iter': b.count, - 'name': sample['cmd'].name, - 'command': ' '.join(cmd.cmd), - 'duration': duration, - 'lines': sample['line_count'] or '', - 'env': env, - }) - raw_handle.flush() - - -if __name__ == '__main__': - main() diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/README.SETUP b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/README.SETUP deleted file mode 100644 index f4098b765..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/README.SETUP +++ /dev/null @@ -1,93 +0,0 @@ -Ubuntu 16.04 HVM AMI -c3.2xlarge, Xeon E5-2680, 2.8 GHz, 8 CPUs, 16 GB memory, 80 GB SSD - -# Generic system setup - -mkfs.ext4 /dev/xvdb -sudo mount /dev/xvdb /mnt -sudo chown ubuntu /mnt -sudo apt-get update -sudo apt-get install \ # for building Linux kernel - make gcc bc -sudo apt-get install \ # for the silver searcher - automake pkg-config zlib1g-dev liblzma-dev libpcre3 libpcre3-dev -sudo apt-get install \ # for Universal Code Grep - libtool libpcre2-8-0 libpcre2-dev -sudo apt-get install \ # for sift and the platinum searcher - go - -# Get benchmark corpora - -cd /mnt -mkdir /mnt/bench -git clone git://github.com/BurntSushi/ripgrep -cd ripgrep/benchsuite -./benchsuite --dir /mnt/bench/ --download all # takes around 15 minutes - -# Install search tools -mkdir /mnt/bin/ - -## ripgrep - -cd /mnt -mkdir ripgrep-bin -cd ripgrep-bin -curl -LO 'https://github.com/BurntSushi/ripgrep/releases/download/0.1.2/ripgrep-0.1.2-x86_64-unknown-linux-musl.tar.gz' -cp ripgrep-0.1.2-x86_64-unknown-linux-musl/rg /mnt/bin/ - -## The Silver Searcher - -cd /mnt -git clone git://github.com/ggreer/the_silver_searcher -cd the_silver_searcher -git checkout cda635 -./build.sh -cp ag /mnt/bin/ - -## Universal Code Grep - -cd /mnt -git clone git://github.com/gvansickle/ucg -cd ucg -git checkout 487bfb -autoreconf -i -./configure -make -cp ucg /mnt/bin/ - -## The Platinum Searcher - -export GOPATH=/mnt/go -go get github.com/monochromegane/the_platinum_searcher -cd /mnt/go/src/github.com/monochromegane/the_platinum_searcher -git checkout 509368 -go install github.com/monochromegane/the_platinum_searcher/cmd/... -cp /mnt/go/bin/pt /mnt/bin/ - -## Sift - -export GOPATH=/mnt/go -go get github.com/svent/sift -cd /mnt/go/src/github.com/svent/sift -git checkout 2d175c -go install -cp /mnt/go/bin/sift /mnt/bin/ - -## 'git grep' and GNU grep - -They are part of the standard Ubuntu install, and are pretty recent (as of -September 2016). - -$ git --version -git version 2.7.4 -$ grep --version -grep (GNU grep) 2.25 - - -# Running benchmarks - -export PATH="/mnt/bin:$PATH" -cd /mnt/ripgrep/benchsuite -./benchsuite --dir /mnt/bench/ --raw /mnt/bench/raw.csv \ - | tee /mnt/bench/summary -# The above took around 30 minutes to run to completion. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/raw.csv deleted file mode 100644 index 9b756c1e7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/raw.csv +++ /dev/null @@ -1,457 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.30042552947998047,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.3699159622192383,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2950403690338135,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7572166919708252,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7568728923797607,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7468714714050293,68, -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5062770843505859,68,LC_ALL=C -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.49932026863098145,68,LC_ALL=C -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5008277893066406,68,LC_ALL=C -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19775605201721191,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19699668884277344,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19636178016662598,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21344256401062012,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21743154525756836,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22065043449401855,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.31632304191589355,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.3168807029724121,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4834277629852295,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9558978080749512,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9736671447753906,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9648356437683105,160, -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0229439735412598,160,LC_ALL=C -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0214922428131104,160,LC_ALL=C -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.022616147994995,160,LC_ALL=C -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22146987915039062,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22275280952453613,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22226715087890625,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5290391445159912,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5196049213409424,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5219125747680664,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.2871882915496826,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.38920140266418457,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.3668382167816162,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6073203086853027,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6012177467346191,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.5818352699279785,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,1.592775583267212,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,1.5901448726654053,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,1.586061716079712,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.45094990730285645,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.47065186500549316,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.4422800540924072,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6293809413909912,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6314799785614014,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6289358139038086,16, -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.347550630569458,16,LC_ALL=C -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.345928430557251,16,LC_ALL=C -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.33939385414123535,16,LC_ALL=C -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.20830345153808594,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.34220385551452637,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.2077772617340088,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.21996808052062988,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.22822093963623047,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.21923017501831055,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.2988588809967041,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.5339267253875732,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.43750762939453125,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.603757381439209,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.618077278137207,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6234121322631836,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,1.621368646621704,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,1.5698626041412354,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,1.6105949878692627,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8005843162536621,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8044955730438232,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.806922197341919,370, -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.34161829948425293,370,LC_ALL=C -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.3455958366394043,370,LC_ALL=C -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.3493361473083496,370,LC_ALL=C -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.2149522304534912,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21602368354797363,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.27021098136901855,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.22747421264648438,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.22050881385803223,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.21217584609985352,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.27482175827026367,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.2796294689178467,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.27638936042785645,16, -linux_literal_default,1,3,ag,ag PM_RESUME,1.598384141921997,16, -linux_literal_default,1,3,ag,ag PM_RESUME,1.5849597454071045,16, -linux_literal_default,1,3,ag,ag PM_RESUME,1.6000149250030518,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.2263963222503662,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.21367835998535156,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.21764111518859863,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.42263340950012207,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.467041015625,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.42820048332214355,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.33421826362609863,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.35932135581970215,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.3372631072998047,16, -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.348984956741333,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.34420299530029297,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.33880615234375,16,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5833027362823486,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5783836841583252,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5806806087493896,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4163496494293213,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4040029048919678,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40265560150146484,490, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3176910877227783,766, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3504347801208496,766, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.317542552947998,766, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.821982383728027,491, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.82067561149597,491, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.626302242279053,491, -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.349210023880005,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.34226369857788,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.340656995773315,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.14680290222168,490,LC_ALL=C -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.153340578079224,490,LC_ALL=C -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.154819011688232,490,LC_ALL=C -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.49768829345703125,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5121400356292725,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.49718427658081055,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.38550543785095215,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32651591300964355,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3246915340423584,419, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.128183126449585,416, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1255216598510742,416, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1268525123596191,416, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.36306214332580566,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.45077037811279297,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.3804624080657959,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,1.8995850086212158,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,1.8897662162780762,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,1.878380537033081,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.48949646949768,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.289165735244751,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.000468254089355,1652, -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1080453395843506,1652,LC_ALL=C -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.10821533203125,1652,LC_ALL=C -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.105595588684082,1652,LC_ALL=C -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2073357105255127,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.20552492141723633,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2061319351196289,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3013310432434082,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3005218505859375,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.29984378814697266,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.4162716865539551,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.47885966300964355,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.5135962963104248,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.570494651794434,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.790151596069336,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.783358812332153,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.4370443820953369,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.40680766105651855,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.4011569023132324,103, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002422809600830078,, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002414226531982422,, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002293109893798828,, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.44771265983581543,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.3006107807159424,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.3026111125946045,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.43827080726623535,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.2931697368621826,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.33072638511657715,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,1.7645132541656494,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,1.7730333805084229,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,1.773383378982544,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \wAh,10.872124671936035,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \wAh,11.147738456726074,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n \wAh,11.029243469238281,174, -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,13.047154664993286,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,13.025037288665771,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,13.081012487411499,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.98722767829895,174,LC_ALL=C -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.987990379333496,174,LC_ALL=C -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.988698959350586,174,LC_ALL=C -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21961355209350586,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.2884254455566406,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21905040740966797,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.23966765403747559,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21801042556762695,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21909880638122559,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.2259504795074463,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.22269177436828613,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.2259974479675293,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.34968090057373047,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.28850769996643066,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.34809160232543945,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,1.6134660243988037,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,1.59847092628479,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,1.581369161605835,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.644887208938599,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.8782219886779785,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.754150152206421,6, -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.34302353858947754,6,LC_ALL=C -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.33672142028808594,6,LC_ALL=C -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.35193610191345215,6,LC_ALL=C -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.33329272270202637,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.25751829147338867,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.21761608123779297,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22014284133911133,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22314929962158203,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.2202434539794922,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.622809886932373,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6181182861328125,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6205663681030273,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7565691471099854,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7561769485473633,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7559969425201416,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4493463039398193,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.44877028465271,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4433801174163818,848, -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4114174842834473,848,LC_ALL=C -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.411625862121582,848,LC_ALL=C -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.408623456954956,848,LC_ALL=C -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2900726795196533,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2905848026275635,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2903940677642822,848, -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9546515941619873,848,LC_ALL=C -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.955279588699341,848,LC_ALL=C -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.954089403152466,848,LC_ALL=C -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.169135332107544,862, -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.174601078033447,862, -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.1684675216674805,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4171736240386963,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4158167839050293,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4186513423919678,862, -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.531639575958252,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.526550054550171,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.528509140014648,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.722398281097412,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7225935459136963,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7222185134887695,862, -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.12151837348938,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.119963884353638,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.121079683303833,862,LC_ALL=en_US.UTF-8 -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2684764862060547,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26811957359313965,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2684173583984375,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.435128688812256,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4362881183624268,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4399220943450928,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32662391662597656,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3277275562286377,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32798290252685547,629, -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.520500659942627,629,LC_ALL=C -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5191032886505127,629,LC_ALL=C -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5171597003936768,629,LC_ALL=C -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.595801830291748,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5954360961914062,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5945618152618408,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7291676998138428,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.730966329574585,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.728854179382324,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.775996208190918,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7760195732116699,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7763564586639404,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.433366060256958,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4338581562042236,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.435924768447876,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7586827278137207,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7590317726135254,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.754432201385498,629, -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9726488590240479,629,LC_ALL=C -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9699857234954834,629,LC_ALL=C -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9714112281799316,629,LC_ALL=C -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36658453941345215,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3654778003692627,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36565113067626953,642, -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.0890116691589355,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.08124852180481,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.0796849727630615,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6151647567749023,642,LC_ALL=C -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6141552925109863,642,LC_ALL=C -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6132988929748535,642,LC_ALL=C -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6962459087371826,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6945579051971436,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.693866491317749,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.771639823913574,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.772296190261841,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7712018489837646,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8068230152130127,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.80411696434021,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8038516044616699,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5951778888702393,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5971941947937012,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5952184200286865,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7292284965515137,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.728681802749634,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7315311431884766,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.784024715423584,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.780540943145752,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7772648334503174,629, -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9744353294372559,629,LC_ALL=C -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9781327247619629,629,LC_ALL=C -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9798097610473633,629,LC_ALL=C -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5965189933776855,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5960156917572021,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5975723266601562,629, -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9818971157073975,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9785251617431641,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.977081298828125,629,LC_ALL=en_US.UTF-8 -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7750890254974365,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.774017333984375,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.783200740814209,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5396409034729004,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5404820442199707,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5400590896606445,13, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.072888612747192,48, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.075153350830078,48, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.0713791847229,48, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.734791278839111,13, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.7345263957977295,13, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.73199462890625,13, -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.411367416381836,13,LC_ALL=C -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.41072940826416,13,LC_ALL=C -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.414730072021484,13,LC_ALL=C -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6052529811859131,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6049232482910156,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6045565605163574,317, -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2849924564361572,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2837722301483154,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2847650051116943,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6005992889404297,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.600543737411499,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6009273529052734,317, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.664374113082886,323, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.674306869506836,323, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.657484769821167,323, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.650290012359619,317, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.651855707168579,317, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.649921417236328,317, -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2745037078857422,317,LC_ALL=C -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.275665521621704,317,LC_ALL=C -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.273988962173462,317,LC_ALL=C -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9031155109405518,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9021081924438477,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9028818607330322,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.8895978927612305,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.891357660293579,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.892467975616455,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.7517757415771484,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.7550888061523438,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.7555651664733887,691, -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.51417875289917,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.512972116470337,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.507266521453857,691,LC_ALL=C -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.300950288772583,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2987852096557617,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3024635314941406,691, -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.983739137649536,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.988446950912476,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.979671478271484,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.889382362365723,691, -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.902577877044678,691, -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890571355819702,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.7548162937164307,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.747791051864624,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.7396674156188965,691, -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.58053183555603,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.594751596450806,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.561670541763306,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.833597183227539,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.831137180328369,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.830361843109131,735, -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.723876953125,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.723239183425903,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.722000360488892,735,LC_ALL=en_US.UTF-8 -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3252851963043213,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3270294666290283,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32680773735046387,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.932488679885864,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.91330337524414,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.911381006240845,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.438587427139282,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.412389755249023,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.412444353103638,583, -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7865939140319824,583,LC_ALL=C -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7889957427978516,583,LC_ALL=C -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7923679351806641,583,LC_ALL=C -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9255633354187012,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9285938739776611,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9274048805236816,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.4811036586761475,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.4785168170928955,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.484618186950684,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7743628025054932,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7731456756591797,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7749128341674805,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.931540250778198,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.935162782669067,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.949711561203003,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.183809995651245,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.19060492515564,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.17626404762268,583, -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3023960590362549,583,LC_ALL=C -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2992589473724365,583,LC_ALL=C -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.299330711364746,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1320264339447021,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1323668956756592,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1354515552520752,604, -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.194744348526001,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.190656423568726,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.18506383895874,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7826528549194336,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7846219539642334,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7846999168395996,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.734788179397583,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7333040237426758,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.731860637664795,604, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7297205924987793,, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7314808368682861,, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7289514541625977,, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7773914337158203,583, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.774536371231079,583, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7740859985351562,583, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3252553939819336,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32543301582336426,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32512736320495605,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7519562244415283,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.752692699432373,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7524521350860596,, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7868170738220215,583, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7786612510681152,583, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.776214838027954,583, -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.303652286529541,583,LC_ALL=C -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3012151718139648,583,LC_ALL=C -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.307457685470581,583,LC_ALL=C -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9280951023101807,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9285900592803955,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9288535118103027,579, -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3026466369628906,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3016819953918457,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3006587028503418,579,LC_ALL=en_US.UTF-8 -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.895586729049683,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.914353132247925,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.902980327606201,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.972637891769409,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9723849296569824,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9723057746887207,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3936586380004883,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3987748622894287,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.393911361694336,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8932065963745117,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8977222442626953,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.893040895462036,, -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4844722747802734,,LC_ALL=C -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.485093116760254,,LC_ALL=C -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.482459306716919,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9564735889434814,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9561436176300049,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9558789730072021,278, -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6620113849639893,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6624438762664795,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6610260009765625,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4094629287719727,, -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.409822702407837,, -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4094691276550293,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.866976261138916,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8666067123413086,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.865297317504883,, -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.602109670639038,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.598329782485962,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5975282192230225,,LC_ALL=C diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/summary deleted file mode 100644 index 4877cd381..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-17-ubuntu1604-ec2/summary +++ /dev/null @@ -1,226 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.322 +/- 0.042 (lines: 68) -ag (ignore) 1.754 +/- 0.006 (lines: 68) -git grep (ignore) 0.502 +/- 0.004 (lines: 68) -rg (whitelist)* 0.197 +/- 0.001 (lines: 68)* -ucg (whitelist) 0.217 +/- 0.004 (lines: 68) - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.372 +/- 0.096 (lines: 160) -ag (ignore) 1.965 +/- 0.009 (lines: 160) -git grep (ignore) 2.022 +/- 0.001 (lines: 160) -rg (whitelist)* 0.222 +/- 0.001 (lines: 160)* -ucg (whitelist) 0.524 +/- 0.005 (lines: 160) - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.348 +/- 0.054 (lines: 16) -rg (ignore) (mmap) 1.597 +/- 0.013 (lines: 16) -ag (ignore) (mmap) 1.590 +/- 0.003 (lines: 16) -pt (ignore) 0.455 +/- 0.015 (lines: 16) -sift (ignore) 0.630 +/- 0.001 (lines: 16) -git grep (ignore) 0.344 +/- 0.004 (lines: 16) -rg (whitelist)* 0.253 +/- 0.077 (lines: 16) -ucg (whitelist) 0.222 +/- 0.005 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.423 +/- 0.118 (lines: 370) -rg (ignore) (mmap) 1.615 +/- 0.010 (lines: 370) -ag (ignore) (mmap) 1.601 +/- 0.027 (lines: 370) -sift (ignore) 0.804 +/- 0.003 (lines: 370) -git grep (ignore) 0.346 +/- 0.004 (lines: 370) -rg (whitelist) 0.234 +/- 0.032 (lines: 370) -ucg (whitelist)* 0.220 +/- 0.008 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg 0.277 +/- 0.002 (lines: 16) -ag 1.594 +/- 0.008 (lines: 16) -ucg* 0.219 +/- 0.007 (lines: 16)* -pt 0.439 +/- 0.024 (lines: 16) -sift 0.344 +/- 0.014 (lines: 16) -git grep 0.344 +/- 0.005 (lines: 16) - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.581 +/- 0.002 (lines: 490) -rg (ignore) (ASCII) 0.408 +/- 0.008 (lines: 490) -ag (ignore) (ASCII) 2.329 +/- 0.019 (lines: 766) -sift (ignore) (ASCII) 25.756 +/- 0.113 (lines: 491) -git grep (ignore) 26.344 +/- 0.005 (lines: 490) -git grep (ignore) (ASCII) 4.152 +/- 0.004 (lines: 490) -rg (whitelist) 0.502 +/- 0.008 (lines: 419) -rg (whitelist) (ASCII)* 0.346 +/- 0.035 (lines: 419)* -ucg (whitelist) (ASCII) 1.127 +/- 0.001 (lines: 416) - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.398 +/- 0.046 (lines: 1652) -ag (ignore) 1.889 +/- 0.011 (lines: 1652) -sift (ignore) 10.260 +/- 0.246 (lines: 1652) -git grep (ignore) 1.107 +/- 0.001 (lines: 1652) -rg (whitelist)* 0.206 +/- 0.001 (lines: 1630)* -ucg (whitelist) 0.301 +/- 0.001 (lines: 1630) - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.470 +/- 0.049 (lines: 23)* -sift 7.715 +/- 0.125 (lines: 23) - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg 0.415 +/- 0.019 (lines: 103) -sift* 0.002 +/- 0.000 (lines: 0)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.350 +/- 0.084 (lines: 186) -rg (ignore) (ASCII) 0.354 +/- 0.075 (lines: 174) -ag (ignore) (ASCII) 1.770 +/- 0.005 (lines: 174) -sift (ignore) (ASCII) 11.016 +/- 0.138 (lines: 174) -git grep (ignore) 13.051 +/- 0.028 (lines: 186) -git grep (ignore) (ASCII) 2.988 +/- 0.001 (lines: 174) -rg (whitelist) 0.242 +/- 0.040 (lines: 180) -rg (whitelist) (ASCII)* 0.226 +/- 0.012 (lines: 168) -ucg (ASCII) 0.225 +/- 0.002 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.329 +/- 0.035 (lines: 6) -ag (ignore) 1.598 +/- 0.016 (lines: 6) -sift (ignore) 7.759 +/- 0.117 (lines: 6) -git grep (ignore) 0.344 +/- 0.008 (lines: 6) -rg (whitelist)* 0.269 +/- 0.059 (lines: 6) -ucg (whitelist) 0.221 +/- 0.002 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.620 +/- 0.002 (lines: 848) -ag (lines) 3.756 +/- 0.000 (lines: 848) -ucg (lines) 1.447 +/- 0.003 (lines: 848) -grep (lines) 3.411 +/- 0.002 (lines: 848) -rg* 0.290 +/- 0.000 (lines: 848)* -grep 2.955 +/- 0.001 (lines: 848) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -ag (ASCII) 5.171 +/- 0.003 (lines: 862) -ucg (ASCII) 3.417 +/- 0.001 (lines: 862) -grep (ASCII) 4.529 +/- 0.003 (lines: 862) -rg* 2.722 +/- 0.000 (lines: 862)* -grep 5.121 +/- 0.001 (lines: 862) - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.268 +/- 0.000 (lines: 629)* -pt 3.437 +/- 0.003 (lines: 629) -sift 0.327 +/- 0.001 (lines: 629) -grep 0.519 +/- 0.002 (lines: 629) -rg (lines) 0.595 +/- 0.001 (lines: 629) -ag (lines) 2.730 +/- 0.001 (lines: 629) -ucg (lines) 0.776 +/- 0.000 (lines: 629) -pt (lines) 3.434 +/- 0.001 (lines: 629) -sift (lines) 0.757 +/- 0.003 (lines: 629) -grep (lines) 0.971 +/- 0.001 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.366 +/- 0.001 (lines: 642)* -grep 4.083 +/- 0.005 (lines: 642) -grep (ASCII) 0.614 +/- 0.001 (lines: 642) -rg (lines) 0.695 +/- 0.001 (lines: 642) -ag (lines) (ASCII) 2.772 +/- 0.001 (lines: 642) -ucg (lines) (ASCII) 0.805 +/- 0.002 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.596 +/- 0.001 (lines: 629)* -ag (ASCII) 2.730 +/- 0.002 (lines: 629) -ucg (ASCII) 0.781 +/- 0.003 (lines: 629) -grep (ASCII) 0.977 +/- 0.003 (lines: 629) -rg 0.597 +/- 0.001 (lines: 629) -grep 0.979 +/- 0.002 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.777 +/- 0.005 (lines: 13) -rg (ASCII)* 2.540 +/- 0.000 (lines: 13)* -ag (ASCII) 10.073 +/- 0.002 (lines: 48) -ucg (ASCII) 7.734 +/- 0.002 (lines: 13) -grep (ASCII) 4.412 +/- 0.002 (lines: 13) - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.605 +/- 0.000 (lines: 317) -grep 1.285 +/- 0.001 (lines: 317) -rg (ASCII)* 0.601 +/- 0.000 (lines: 317)* -ag (ASCII) 11.665 +/- 0.008 (lines: 323) -ucg (ASCII) 4.651 +/- 0.001 (lines: 317) -grep (ASCII) 1.275 +/- 0.001 (lines: 317) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.903 +/- 0.001 (lines: 691) -ag (lines) 5.891 +/- 0.001 (lines: 691) -ucg (lines) 2.754 +/- 0.002 (lines: 691) -grep (lines) 8.511 +/- 0.004 (lines: 691) -rg* 1.301 +/- 0.002 (lines: 691)* -grep 7.984 +/- 0.004 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -ag (ASCII) 5.894 +/- 0.007 (lines: 691) -ucg (ASCII)* 2.747 +/- 0.008 (lines: 691)* -grep (ASCII) 8.579 +/- 0.017 (lines: 691) -rg 4.832 +/- 0.002 (lines: 735) -grep 8.723 +/- 0.001 (lines: 735) - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.326 +/- 0.001 (lines: 583)* -pt 12.919 +/- 0.012 (lines: 583) -sift 16.421 +/- 0.015 (lines: 583) -grep 0.789 +/- 0.003 (lines: 583) -rg (lines) 0.927 +/- 0.002 (lines: 583) -ag (lines) 4.481 +/- 0.003 (lines: 583) -ucg (lines) 1.774 +/- 0.001 (lines: 583) -pt (lines) 12.939 +/- 0.010 (lines: 583) -sift (lines) 17.184 +/- 0.007 (lines: 583) -grep (lines) 1.300 +/- 0.002 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 1.133 +/- 0.002 (lines: 604) -grep 8.190 +/- 0.005 (lines: 604) -grep (ASCII) 0.784 +/- 0.001 (lines: 583) -rg (lines) 1.733 +/- 0.001 (lines: 604) -ag (lines) (ASCII)* 0.730 +/- 0.001 (lines: 0)* -ucg (lines) (ASCII) 1.775 +/- 0.002 (lines: 583) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.325 +/- 0.000 (lines: 0)* -ag (ASCII) 0.752 +/- 0.000 (lines: 0) -ucg (ASCII) 1.781 +/- 0.006 (lines: 583) -grep (ASCII) 1.304 +/- 0.003 (lines: 583) -rg 0.929 +/- 0.000 (lines: 579) -grep 1.302 +/- 0.001 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 4.904 +/- 0.009 (lines: 41) -rg (ASCII) 3.972 +/- 0.000 (lines: 0) -ag (ASCII)* 2.395 +/- 0.003 (lines: 0)* -ucg (ASCII) 2.895 +/- 0.003 (lines: 0) -grep (ASCII) 2.484 +/- 0.001 (lines: 0) - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.956 +/- 0.000 (lines: 278)* -grep 1.662 +/- 0.001 (lines: 278) -ag (ASCII) 2.410 +/- 0.000 (lines: 0) -ucg (ASCII) 2.866 +/- 0.001 (lines: 0) -grep (ASCII) 1.599 +/- 0.002 (lines: 0) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/README.SETUP b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/README.SETUP deleted file mode 100644 index 7bc3938ff..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/README.SETUP +++ /dev/null @@ -1,93 +0,0 @@ -Ubuntu 16.04 HVM AMI -c3.2xlarge, Xeon E5-2680, 2.8 GHz, 8 CPUs, 16 GB memory, 80 GB SSD - -# Generic system setup - -mkfs.ext4 /dev/xvdb -sudo mount /dev/xvdb /mnt -sudo chown ubuntu /mnt -sudo apt-get update -sudo apt-get install \ # for building Linux kernel - make gcc bc -sudo apt-get install \ # for the silver searcher - automake pkg-config zlib1g-dev liblzma-dev libpcre3 libpcre3-dev -sudo apt-get install \ # for Universal Code Grep - libtool libpcre2-8-0 libpcre2-dev -sudo apt-get install \ # for sift and the platinum searcher - go - -# Get benchmark corpora - -cd /mnt -mkdir /mnt/bench -git clone git://github.com/BurntSushi/ripgrep -cd ripgrep/benchsuite -./benchsuite --dir /mnt/bench/ --download all # takes around 15 minutes - -# Install search tools -mkdir /mnt/bin/ - -## ripgrep - -cd /mnt -mkdir ripgrep-bin -cd ripgrep-bin -curl -LO 'https://github.com/BurntSushi/ripgrep/releases/download/0.1.2/ripgrep-0.1.2-x86_64-unknown-linux-musl.tar.gz' -cp ripgrep-0.1.2-x86_64-unknown-linux-musl/rg /mnt/bin/ - -## The Silver Searcher - -cd /mnt -git clone git://github.com/ggreer/the_silver_searcher -cd the_silver_searcher -git checkout cda635 -./build.sh -cp ag /mnt/bin/ - -## Universal Code Grep - -cd /mnt -git clone git://github.com/gvansickle/ucg -cd ucg -git checkout 487bfb -autoreconf -i -./configure -make -cp ucg /mnt/bin/ - -## The Platinum Searcher - -export GOPATH=/mnt/go -go get github.com/monochromegane/the_platinum_searcher -cd /mnt/go/src/github.com/monochromegane/the_platinum_searcher -git checkout 509368 -go install github.com/monochromegane/the_platinum_searcher/cmd/... -cp /mnt/go/bin/pt /mnt/bin/ - -## Sift - -export GOPATH=/mnt/go -go get github.com/svent/sift -cd /mnt/go/src/github.com/svent/sift -git checkout 2d175c -go install -cp /mnt/go/bin/sift /mnt/bin/ - -## 'git grep' and GNU grep - -They are part of the standard Ubuntu install, and are pretty recent (as of -September 2016). - -$ git --version -git version 2.7.4 -$ grep --version -grep (GNU grep) 2.25 - - -# Running benchmarks - -export PATH="/mnt/bin:$PATH" -cd /mnt/ripgrep/benchsuite -./benchsuite \ - --dir /mnt/bench/ --raw /mnt/bench/raw.csv --warmup-iter 3 --bench-iter 10 -# The above took around 120 minutes to run to completion. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/raw.csv deleted file mode 100644 index c0d4b25fc..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/raw.csv +++ /dev/null @@ -1,1611 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.47386884689331055,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4676964282989502,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2977464199066162,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.404477596282959,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.29970765113830566,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2981560230255127,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.29827141761779785,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2970547676086426,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.37766170501708984,68, -linux_alternates,3,10,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2981750965118408,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.745070219039917,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.743051290512085,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7471156120300293,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7482519149780273,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7504711151123047,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7388739585876465,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.751807451248169,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7407019138336182,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7513477802276611,68, -linux_alternates,3,10,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.7503643035888672,68, -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4976229667663574,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5058624744415283,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5003554821014404,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5036265850067139,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.502265453338623,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5051944255828857,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.49764204025268555,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5026199817657471,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.500784158706665,68,LC_ALL=C -linux_alternates,3,10,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4986872673034668,68,LC_ALL=C -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19666719436645508,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.20122385025024414,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2921123504638672,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19991230964660645,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.20190691947937012,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.23188090324401855,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2041609287261963,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19266295433044434,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.24373841285705566,68, -linux_alternates,3,10,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.19818353652954102,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21015572547912598,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22674226760864258,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21504473686218262,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22454237937927246,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2039196491241455,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2037363052368164,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.20755791664123535,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21857881546020508,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2158210277557373,68, -linux_alternates,3,10,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.213883638381958,68, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5118546485900879,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4563937187194824,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.3091299533843994,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.3657255172729492,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.31900572776794434,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.31780076026916504,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4655437469482422,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4731638431549072,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.31702089309692383,160, -linux_alternates_casei,3,10,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.37751269340515137,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9786202907562256,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9616754055023193,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.982335090637207,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9551584720611572,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9577994346618652,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.971240758895874,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9659252166748047,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.968651294708252,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.974630355834961,160, -linux_alternates_casei,3,10,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.9673101902008057,160, -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0195815563201904,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.014780044555664,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0152857303619385,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.021533727645874,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.008901596069336,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.017594575881958,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.030247449874878,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0156710147857666,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.0224251747131348,160,LC_ALL=C -linux_alternates_casei,3,10,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,2.01462459564209,160,LC_ALL=C -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22264957427978516,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22289133071899414,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22011518478393555,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22271180152893066,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22096776962280273,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22350811958312988,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22304296493530273,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22333812713623047,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2226696014404297,160, -linux_alternates_casei,3,10,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2225027084350586,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5201499462127686,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5199308395385742,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5204341411590576,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5242149829864502,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5222067832946777,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5239078998565674,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5225164890289307,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5211355686187744,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.521998405456543,160, -linux_alternates_casei,3,10,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5194001197814941,160, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.2887847423553467,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.33100366592407227,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.29135560989379883,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.35103440284729004,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.28871941566467285,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.41626620292663574,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.4109630584716797,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.28783345222473145,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.2896847724914551,16, -linux_literal,3,10,rg (ignore),rg -n PM_RESUME,0.3816063404083252,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6185925006866455,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6278767585754395,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6153473854064941,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6009879112243652,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6033079624176025,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.597747564315796,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6077642440795898,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6068522930145264,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6185357570648193,16, -linux_literal,3,10,rg (ignore) (mmap),rg -n --mmap PM_RESUME,1.6097495555877686,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5874614715576172,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.6032404899597168,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5708537101745605,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5849754810333252,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5937259197235107,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5755681991577148,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.606102705001831,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5942778587341309,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.5798444747924805,16, -linux_literal,3,10,ag (ignore) (mmap),ag -s PM_RESUME,1.587292194366455,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.48366618156433105,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.43807315826416016,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.4620192050933838,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.4109156131744385,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.4734470844268799,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.4730203151702881,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.46596622467041016,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.43018555641174316,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.48219823837280273,16, -linux_literal,3,10,pt (ignore),pt PM_RESUME,0.43694376945495605,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6309304237365723,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6273376941680908,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6281638145446777,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6282968521118164,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6298778057098389,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6303853988647461,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6214172840118408,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6326169967651367,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6357946395874023,16, -linux_literal,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.6349425315856934,16, -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.3352987766265869,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.34267115592956543,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.33582019805908203,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.3533494472503662,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.35305285453796387,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.35210490226745605,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.3439147472381592,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.3385200500488281,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.34418511390686035,16,LC_ALL=C -linux_literal,3,10,git grep (ignore),git grep -I -n PM_RESUME,0.351276159286499,16,LC_ALL=C -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.21218633651733398,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.2074875831604004,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.2121737003326416,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.29766225814819336,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.20844221115112305,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.21107196807861328,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.3164327144622803,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.2020113468170166,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.21297645568847656,16, -linux_literal,3,10,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.20153403282165527,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.21353983879089355,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.20673179626464844,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.21759939193725586,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.2182610034942627,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.21338224411010742,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.2172555923461914,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.2167196273803711,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.22050833702087402,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.22791433334350586,16, -linux_literal,3,10,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.22888803482055664,16, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.3006107807159424,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.300311803817749,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.29694652557373047,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.41213250160217285,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.2940239906311035,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.5161991119384766,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.38535594940185547,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.3468937873840332,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.3020455837249756,370, -linux_literal_casei,3,10,rg (ignore),rg -n -i PM_RESUME,0.2997910976409912,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6084694862365723,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.606147289276123,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.62626051902771,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6127331256866455,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6354174613952637,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6024584770202637,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.611799716949463,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.5951638221740723,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.6110625267028809,370, -linux_literal_casei,3,10,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,1.61025071144104,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.61818528175354,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.6345157623291016,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.5905261039733887,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.6204230785369873,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.5921993255615234,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.5896248817443848,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.6044423580169678,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.611330509185791,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.6240627765655518,370, -linux_literal_casei,3,10,ag (ignore) (mmap),ag -i PM_RESUME,1.6050136089324951,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.215137004852295,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.027225255966187,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.218045234680176,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.382962942123413,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.16927456855774,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.348739862442017,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.116779565811157,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.035597562789917,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.179709911346436,370, -linux_literal_casei,3,10,pt (ignore),pt -i PM_RESUME,17.351134777069092,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.7961351871490479,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8030610084533691,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.803156852722168,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8085391521453857,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8109989166259766,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8001055717468262,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8120794296264648,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8061761856079102,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.8085212707519531,370, -linux_literal_casei,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.7987847328186035,370, -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.34406495094299316,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.3358898162841797,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.3549189567565918,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.3384251594543457,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.34453749656677246,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.34092092514038086,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.3376765251159668,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.34916138648986816,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.33722376823425293,370,LC_ALL=C -linux_literal_casei,3,10,git grep (ignore),git grep -I -n -i PM_RESUME,0.3521549701690674,370,LC_ALL=C -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.22751879692077637,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.2776045799255371,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21505451202392578,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21794772148132324,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21863842010498047,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.20025348663330078,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21541285514831543,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21509718894958496,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21069550514221191,370, -linux_literal_casei,3,10,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.21798276901245117,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.21774601936340332,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.20911478996276855,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.22953128814697266,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.20992112159729004,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.2173295021057129,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.22140860557556152,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.2150726318359375,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.22086834907531738,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.21045351028442383,370, -linux_literal_casei,3,10,ucg (whitelist),ucg -i PM_RESUME,0.22116923332214355,370, -linux_literal_default,3,10,rg,rg PM_RESUME,0.547431468963623,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.2980644702911377,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.2759268283843994,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.47458386421203613,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.31407952308654785,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.27758288383483887,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.4621877670288086,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.2774538993835449,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.2882564067840576,16, -linux_literal_default,3,10,rg,rg PM_RESUME,0.27521324157714844,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5812609195709229,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.6005668640136719,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5730962753295898,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.592977523803711,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5821592807769775,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5887324810028076,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5817389488220215,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.594618558883667,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.5992517471313477,16, -linux_literal_default,3,10,ag,ag PM_RESUME,1.596695899963379,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.21654176712036133,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.21590709686279297,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.2110304832458496,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.21798467636108398,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.23079442977905273,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.2108612060546875,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.22725200653076172,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.21680736541748047,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.21963763236999512,16, -linux_literal_default,3,10,ucg,ucg PM_RESUME,0.20926284790039062,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.46857309341430664,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.47760438919067383,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.46701765060424805,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.4331653118133545,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.45867037773132324,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.4557461738586426,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.46278929710388184,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.4585258960723877,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.47124767303466797,16, -linux_literal_default,3,10,pt,pt PM_RESUME,0.4672355651855469,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.38060545921325684,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.3329169750213623,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.33484435081481934,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.35355401039123535,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.35204195976257324,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.338015079498291,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.33859682083129883,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.37181973457336426,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.34308838844299316,16, -linux_literal_default,3,10,sift,sift PM_RESUME,0.37679576873779297,16, -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.34804248809814453,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.3415200710296631,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.33733463287353516,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.3332488536834717,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.34481191635131836,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.34947681427001953,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.34740161895751953,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.33948254585266113,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.3381669521331787,16,LC_ALL=en_US.UTF-8 -linux_literal_default,3,10,git grep,git grep PM_RESUME,0.34292149543762207,16,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5793054103851318,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5733230113983154,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5830531120300293,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5784716606140137,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5747678279876709,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5774915218353271,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5772106647491455,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.576981782913208,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5727875232696533,490, -linux_no_literal,3,10,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5777604579925537,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.47701001167297363,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4056098461151123,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40029191970825195,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4043698310852051,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.39755749702453613,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40610837936401367,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40239667892456055,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.44395995140075684,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.41157984733581543,490, -linux_no_literal,3,10,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40621185302734375,490, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.346493721008301,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3504796028137207,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.337827682495117,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3482706546783447,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.321526288986206,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3464548587799072,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3376870155334473,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.337705612182617,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.328770637512207,766, -linux_no_literal,3,10,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.3303186893463135,766, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.04857587814331,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.10808300971985,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.033851861953735,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.140597581863403,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.119322299957275,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},21.98818349838257,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},21.977314949035645,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.06201982498169,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.061450242996216,490, -linux_no_literal,3,10,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},22.124264001846313,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.59274411201477,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.573359489440918,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.742077112197876,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.54994797706604,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.706160306930542,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.445934057235718,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.45766806602478,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.43312954902649,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.491786241531372,490, -linux_no_literal,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},25.634543895721436,490, -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.399667501449585,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.38280701637268,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.41436266899109,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.356714010238647,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.372775316238403,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.366456031799316,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.345572233200073,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.359038591384888,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.339266777038574,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},26.48772692680359,490,LC_ALL=en_US.UTF-8 -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.16526985168457,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.1695733070373535,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.155884027481079,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.143868684768677,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.147655248641968,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.151846885681152,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.140476703643799,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.142986059188843,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.156916379928589,490,LC_ALL=C -linux_no_literal,3,10,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},4.157176971435547,490,LC_ALL=C -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5112531185150146,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5284323692321777,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.49768805503845215,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4940907955169678,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.5072541236877441,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.50177001953125,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.494765043258667,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.49721837043762207,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.49683475494384766,419, -linux_no_literal,3,10,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4985806941986084,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3259718418121338,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32500338554382324,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32590746879577637,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3270235061645508,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40813469886779785,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3254811763763428,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32666945457458496,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.42030978202819824,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3227384090423584,419, -linux_no_literal,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3258059024810791,419, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.132291555404663,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1314997673034668,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.129917860031128,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1349639892578125,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1323256492614746,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.1280417442321777,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.128892183303833,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.12849760055542,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.128230094909668,416, -linux_no_literal,3,10,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.126936435699463,416, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.2936074733734131,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.28904199600219727,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.35044193267822266,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.33156752586364746,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.2898244857788086,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.28866147994995117,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.39086151123046875,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.2908496856689453,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.3271830081939697,1652, -linux_re_literal_suffix,3,10,rg (ignore),rg -n [A-Z]+_RESUME,0.3252100944519043,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.8963699340820312,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.8861753940582275,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.8948850631713867,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.9025893211364746,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.9024877548217773,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.916628122329712,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.895963430404663,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.8982641696929932,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.906947135925293,1652, -linux_re_literal_suffix,3,10,ag (ignore),ag -s [A-Z]+_RESUME,1.8928930759429932,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.542996168136597,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.356479167938232,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,14.192973136901855,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.541444063186646,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.854554653167725,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.603343725204468,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.799452781677246,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.863913774490356,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.838748455047607,1652, -linux_re_literal_suffix,3,10,pt (ignore),pt -e [A-Z]+_RESUME,13.538004636764526,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.060765504837036,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.49359679222107,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.081884145736694,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.493861675262451,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.067906379699707,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,9.981789588928223,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.265925168991089,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.045130014419556,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.06310224533081,1652, -linux_re_literal_suffix,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,10.161619186401367,1652, -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1039769649505615,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.114553689956665,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1093242168426514,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1064682006835938,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1018595695495605,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.109755516052246,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1123108863830566,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.1048264503479004,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.109236478805542,1652,LC_ALL=C -linux_re_literal_suffix,3,10,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,1.10935640335083,1652,LC_ALL=C -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.20705485343933105,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2106492519378662,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2084188461303711,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2640719413757324,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2081773281097412,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2118208408355713,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.2089850902557373,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.23274970054626465,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.25668978691101074,1630, -linux_re_literal_suffix,3,10,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.20613741874694824,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.30318307876586914,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.2986927032470703,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.2998936176300049,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3013923168182373,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3002176284790039,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.29929661750793457,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3002638816833496,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3022594451904297,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3005950450897217,1630, -linux_re_literal_suffix,3,10,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.3003072738647461,1630, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4220447540283203,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4022982120513916,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.40406036376953125,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.414935827255249,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.39977121353149414,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4032399654388428,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4270012378692627,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4013488292694092,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.46738338470458984,23, -linux_unicode_greek,3,10,rg,rg -n \p{Greek},0.4026005268096924,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.682367086410522,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.691372394561768,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.737368822097778,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.813798666000366,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.881911754608154,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.321162462234497,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.792261838912964,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.894794464111328,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.860591650009155,23, -linux_unicode_greek,3,10,pt,pt -e \p{Greek},12.774003744125366,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.338077068328857,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.741130113601685,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.807847023010254,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.8104469776153564,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.743628978729248,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.728483438491821,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},8.222429275512695,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},8.043334722518921,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.848775863647461,23, -linux_unicode_greek,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},7.382145643234253,23, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.4646949768066406,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.40577101707458496,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.39434385299682617,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.42445874214172363,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.4024500846862793,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.41817784309387207,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.41820359230041504,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.4578087329864502,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.4002723693847656,103, -linux_unicode_greek_casei,3,10,rg,rg -n -i \p{Greek},0.460965633392334,103, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.604194641113281,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.585155010223389,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.904623985290527,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.603661298751831,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.89511752128601,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.375482320785522,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.77438759803772,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.416762113571167,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.711334705352783,23, -linux_unicode_greek_casei,3,10,pt,pt -i -e \p{Greek},12.253499746322632,23, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0025110244750976562,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002439260482788086,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0024383068084716797,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0023565292358398438,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0022935867309570312,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0023267269134521484,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002335071563720703,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0022766590118408203,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002285003662109375,, -linux_unicode_greek_casei,3,10,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.002235889434814453,, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.5075342655181885,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.3014566898345947,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.30255842208862305,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.419527530670166,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.30051612854003906,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.41606736183166504,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.3061816692352295,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.316450834274292,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.29686737060546875,186, -linux_unicode_word,3,10,rg (ignore),rg -n \wAh,0.3846714496612549,186, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.30101466178894043,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.29622554779052734,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.3100159168243408,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.30087780952453613,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.29802870750427246,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.4232194423675537,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.45890188217163086,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.2998533248901367,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.29979395866394043,174, -linux_unicode_word,3,10,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.2986025810241699,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7579238414764404,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7875633239746094,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7632112503051758,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7843427658081055,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7860534191131592,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7815673351287842,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7678496837615967,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7820045948028564,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.7667298316955566,174, -linux_unicode_word,3,10,ag (ignore) (ASCII),ag -s \wAh,1.765808343887329,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.26370882987976,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,13.948208808898926,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.321836948394775,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.353292226791382,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,13.980775117874146,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.000723600387573,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.369597673416138,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,13.967730045318604,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.324349164962769,174, -linux_unicode_word,3,10,pt (ignore) (ASCII),pt -e \wAh,14.270223140716553,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.162141561508179,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,10.980525970458984,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.026103496551514,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.277002811431885,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.148287057876587,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.005484819412231,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,10.91290545463562,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.106207847595215,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.16712760925293,174, -linux_unicode_word,3,10,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,11.083898544311523,174, -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.044305801391602,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.056626081466675,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.048550844192505,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.029039859771729,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.047250509262085,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.04845643043518,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.051046133041382,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.03917121887207,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.039993047714233,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore),git grep -E -I -n \wAh,13.041208982467651,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.9960885047912598,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.985478401184082,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.9874212741851807,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.987626314163208,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.994694471359253,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.992467164993286,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.9871950149536133,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.995185613632202,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.9936091899871826,174,LC_ALL=C -linux_unicode_word,3,10,git grep (ignore) (ASCII),git grep -E -I -n \wAh,2.9940080642700195,174,LC_ALL=C -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21994638442993164,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.22097373008728027,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.23552775382995605,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21982312202453613,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.3113522529602051,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.26632070541381836,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21911191940307617,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.22008752822875977,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21874570846557617,180, -linux_unicode_word,3,10,rg (whitelist),rg -n --no-ignore -tall \wAh,0.21397948265075684,180, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21848511695861816,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.2182908058166504,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.2177116870880127,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21211910247802734,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.2223820686340332,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.22381138801574707,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.2192692756652832,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.28908252716064453,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21803808212280273,168, -linux_unicode_word,3,10,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.21266746520996094,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.22500395774841309,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.2196519374847412,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.23636341094970703,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.22854065895080566,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.24159979820251465,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.2279496192932129,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.2282264232635498,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.22038722038269043,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.2304396629333496,168, -linux_unicode_word,3,10,ucg (ASCII),ucg --nosmart-case \wAh,0.22999143600463867,168, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.4643971920013428,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.31100964546203613,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.2884225845336914,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.3069937229156494,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.29024529457092285,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.4824669361114502,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.46274733543395996,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.28812289237976074,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.350308895111084,6, -linux_word,3,10,rg (ignore),rg -n -w PM_RESUME,0.374927282333374,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.6171681880950928,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.6098666191101074,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.5964553356170654,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.6071968078613281,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.5954012870788574,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.6015000343322754,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.601473331451416,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.5954999923706055,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.6129882335662842,6, -linux_word,3,10,ag (ignore),ag -s -w PM_RESUME,1.588838815689087,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.572103500366211,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.43345308303833,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.209619045257568,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.430129051208496,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.560482263565063,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.483187913894653,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.457705020904541,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.179070472717285,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.290963411331177,6, -linux_word,3,10,pt (ignore),pt -w PM_RESUME,14.554560422897339,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.818600416183472,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.8375983238220215,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,8.135910034179688,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.684378623962402,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.841930389404297,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.910590171813965,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.786734104156494,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.763006687164307,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.749568223953247,6, -linux_word,3,10,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,7.872854232788086,6, -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.34014463424682617,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3321688175201416,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.34490489959716797,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.34313368797302246,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3335700035095215,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.33677148818969727,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3442800045013428,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3435385227203369,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3433525562286377,6,LC_ALL=C -linux_word,3,10,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.3496122360229492,6,LC_ALL=C -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.20868396759033203,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.20928955078125,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.21094799041748047,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.21063971519470215,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.20990324020385742,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.28969311714172363,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.20476388931274414,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.23818445205688477,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.2111814022064209,6, -linux_word,3,10,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.20949006080627441,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22462105751037598,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22188782691955566,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22634053230285645,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.21634244918823242,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.2205817699432373,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.22465920448303223,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.2336571216583252,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.20835447311401367,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.21285319328308105,6, -linux_word,3,10,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.2190699577331543,6, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6189219951629639,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6190304756164551,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6199381351470947,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.618828296661377,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6196391582489014,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6181838512420654,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6187732219696045,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6184597015380859,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6172432899475098,848, -subtitles_en_alternate,3,10,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6174371242523193,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.755958080291748,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.757115602493286,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.756659746170044,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.755875825881958,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7559609413146973,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7556204795837402,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.757873773574829,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7584357261657715,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.7554702758789062,848, -subtitles_en_alternate,3,10,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.756683111190796,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4781913757324219,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.480832576751709,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.481184959411621,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.479053258895874,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4790685176849365,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4752089977264404,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.479438304901123,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4795243740081787,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4814894199371338,848, -subtitles_en_alternate,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.4802560806274414,848, -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4137959480285645,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4180681705474854,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4078221321105957,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4076828956604004,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.41274094581604,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4122402667999268,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.409217357635498,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.407381057739258,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.413433790206909,848,LC_ALL=C -subtitles_en_alternate,3,10,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.417088270187378,848,LC_ALL=C -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2927560806274414,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29286980628967285,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29212307929992676,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2928035259246826,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29462766647338867,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29508256912231445,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2949047088623047,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29440784454345703,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.29571032524108887,848, -subtitles_en_alternate,3,10,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2957477569580078,848, -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9552104473114014,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9549355506896973,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9537510871887207,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9541327953338623,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.956911087036133,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9570367336273193,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9511656761169434,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9506640434265137,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9526963233947754,848,LC_ALL=C -subtitles_en_alternate,3,10,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.9588701725006104,848,LC_ALL=C -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.168982028961182,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.168334722518921,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.168300628662109,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.167222499847412,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.166507244110107,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.170989274978638,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.1682024002075195,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.167780637741089,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.168872356414795,862, -subtitles_en_alternate_casei,3,10,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.180398464202881,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4541521072387695,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4504010677337646,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.447232961654663,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4495904445648193,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4561190605163574,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4501171112060547,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.446692705154419,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4604244232177734,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4578661918640137,862, -subtitles_en_alternate_casei,3,10,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4538376331329346,862, -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.52874755859375,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.528880596160889,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.531128168106079,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.530141353607178,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.60682225227356,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.5284905433654785,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.528053283691406,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.52666974067688,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.530948877334595,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.527572393417358,862,LC_ALL=C -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7230067253112793,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.72373366355896,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7248330116271973,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.723958730697632,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7269558906555176,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7254459857940674,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.722374439239502,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7215871810913086,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.722040891647339,862, -subtitles_en_alternate_casei,3,10,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7217414379119873,862, -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.120846271514893,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.124289512634277,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.121231555938721,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.133900880813599,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.13477349281311,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.124036550521851,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.12525200843811,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.119184970855713,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.11840033531189,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,3,10,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,5.127475023269653,862,LC_ALL=en_US.UTF-8 -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26776623725891113,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2677316665649414,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26764774322509766,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26764392852783203,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2678048610687256,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26839542388916016,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2679786682128906,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.26825690269470215,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2678089141845703,629, -subtitles_en_literal,3,10,rg,rg Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.2678341865539551,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3364849090576172,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33446741104125977,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3352184295654297,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33528780937194824,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33663368225097656,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33841681480407715,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3371107578277588,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3376932144165039,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33527708053588867,629, -subtitles_en_literal,3,10,rg (no mmap),rg --no-mmap Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.33412981033325195,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4306020736694336,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4329919815063477,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4332242012023926,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.432997941970825,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4360785484313965,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.435281276702881,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.431150436401367,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4315969944000244,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4306139945983887,629, -subtitles_en_literal,3,10,pt,pt -N Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4309916496276855,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32330894470214844,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3243591785430908,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3266782760620117,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32552504539489746,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32386016845703125,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3260154724121094,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.32358860969543457,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3273475170135498,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3286449909210205,629, -subtitles_en_literal,3,10,sift,sift Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3271455764770508,629, -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5178654193878174,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5178477764129639,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5173301696777344,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5160887241363525,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5176410675048828,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5159375667572021,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5159437656402588,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5144126415252686,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5155332088470459,629,LC_ALL=C -subtitles_en_literal,3,10,grep,grep -a Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.514521598815918,629,LC_ALL=C -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5953242778778076,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5949890613555908,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5955290794372559,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5951504707336426,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5948066711425781,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5955345630645752,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5947279930114746,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5945889949798584,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5973446369171143,629, -subtitles_en_literal,3,10,rg (lines),rg -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.594796895980835,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.734492301940918,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7287397384643555,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7362167835235596,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7313451766967773,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7278831005096436,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.728785276412964,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7299938201904297,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.727299213409424,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7277636528015137,629, -subtitles_en_literal,3,10,ag (lines),ag -s Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7295165061950684,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7461349964141846,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7452898025512695,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7452714443206787,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.744922399520874,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7460696697235107,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7454876899719238,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7456295490264893,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7443864345550537,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7447819709777832,629, -subtitles_en_literal,3,10,ucg (lines),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7446470260620117,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4404242038726807,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4294676780700684,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.429917097091675,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.431140422821045,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4285945892333984,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4293277263641357,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4368669986724854,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4359662532806396,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.4405126571655273,629, -subtitles_en_literal,3,10,pt (lines),pt Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,3.433344841003418,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7574958801269531,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7570157051086426,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7525804042816162,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7591047286987305,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.755040168762207,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7555766105651855,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7529222965240479,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.758681058883667,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7559700012207031,629, -subtitles_en_literal,3,10,sift (lines),sift -n Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.7559340000152588,629, -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9682326316833496,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9697835445404053,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9684174060821533,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9705235958099365,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9682950973510742,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9695034027099609,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9688384532928467,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9686503410339355,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9681143760681152,629,LC_ALL=C -subtitles_en_literal,3,10,grep (lines),grep -an Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9680168628692627,629,LC_ALL=C -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3666412830352783,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3665914535522461,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36571455001831055,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3664999008178711,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36658453941345215,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3661923408508301,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36447882652282715,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3663473129272461,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.36589932441711426,642, -subtitles_en_literal_casei,3,10,rg,rg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.3653714656829834,642, -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.081154823303223,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.084660291671753,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.08470344543457,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.082594156265259,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.080471515655518,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.086612701416016,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.081760406494141,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.097002983093262,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.08205771446228,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep,grep -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.081174373626709,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6137702465057373,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.613584041595459,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6138026714324951,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6139190196990967,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.613776445388794,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6142146587371826,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6156847476959229,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6130235195159912,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6155576705932617,642,LC_ALL=C -subtitles_en_literal_casei,3,10,grep (ASCII),grep -E -ai Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6164846420288086,642,LC_ALL=C -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6970095634460449,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6997818946838379,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6979782581329346,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6970696449279785,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6959774494171143,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6961612701416016,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6932253837585449,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6929948329925537,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6953890323638916,642, -subtitles_en_literal_casei,3,10,rg (lines),rg -n -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6952941417694092,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7740752696990967,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.774446964263916,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7716448307037354,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.773153781890869,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.779618740081787,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7801287174224854,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.781130075454712,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.772829055786133,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.77199649810791,642, -subtitles_en_literal_casei,3,10,ag (lines) (ASCII),ag -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7716152667999268,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.839766263961792,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8391139507293701,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8380751609802246,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.840296745300293,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8403871059417725,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8408434391021729,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8414220809936523,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8398075103759766,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8436241149902344,642, -subtitles_en_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8423728942871094,642, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5950007438659668,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5956854820251465,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5952165126800537,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5980286598205566,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5956542491912842,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5966405868530273,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5958805084228516,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5963141918182373,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5990002155303955,629, -subtitles_en_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5966975688934326,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7282555103302,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.729177474975586,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7297959327697754,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7296860218048096,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.729125499725342,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.729316234588623,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7287533283233643,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7305104732513428,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7299206256866455,629, -subtitles_en_literal_word,3,10,ag (ASCII),ag -sw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.729327440261841,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8094220161437988,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8118293285369873,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8110437393188477,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.811244010925293,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8089673519134521,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8087558746337891,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8099534511566162,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.805889368057251,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.8085830211639404,629, -subtitles_en_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.810387134552002,629, -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.969839334487915,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9697055816650391,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.969874382019043,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9701571464538574,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9694199562072754,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9696424007415771,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9697527885437012,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.968994140625,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9701812267303467,629,LC_ALL=C -subtitles_en_literal_word,3,10,grep (ASCII),grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9686706066131592,629,LC_ALL=C -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.595914363861084,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5983798503875732,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5960469245910645,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5948517322540283,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5958602428436279,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5954585075378418,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5953717231750488,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5959024429321289,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5959782600402832,629, -subtitles_en_literal_word,3,10,rg,rg -nw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.5955371856689453,629, -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9723165035247803,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9710309505462646,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9703977108001709,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9703128337860107,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9703538417816162,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9708397388458252,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9728231430053711,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9786312580108643,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9749376773834229,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,3,10,grep,grep -anw Sherlock Holmes /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.9707028865814209,629,LC_ALL=en_US.UTF-8 -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7828025817871094,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7794389724731445,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.778043270111084,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.774141788482666,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.778355121612549,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7741646766662598,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.772979259490967,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7767364978790283,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7799744606018066,13, -subtitles_en_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.7726826667785645,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.551705837249756,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5482068061828613,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.538416624069214,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5385212898254395,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5387394428253174,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5385680198669434,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5381128787994385,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.538067579269409,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5391359329223633,13, -subtitles_en_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,2.5382723808288574,13, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.07424545288086,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.07216191291809,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.090161323547363,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.073503732681274,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.074660062789917,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.071975708007812,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.076007604598999,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.074021816253662,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.075836896896362,48, -subtitles_en_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,10.07709789276123,48, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.783349275588989,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.7711498737335205,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.7679526805877686,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.769197463989258,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.770420789718628,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.770123720169067,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.769317150115967,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.772680997848511,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.769444227218628,13, -subtitles_en_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,7.768393516540527,13, -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.407429218292236,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.40935754776001,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.409480810165405,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.409695625305176,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.4078004360198975,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.413295745849609,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.420169353485107,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.414563179016113,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.40968656539917,13,LC_ALL=C -subtitles_en_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.410497188568115,13,LC_ALL=C -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.605414628982544,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6049544811248779,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6051681041717529,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6063950061798096,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6052758693695068,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6048481464385986,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.60489821434021,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6051614284515381,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6050229072570801,317, -subtitles_en_surrounding_words,3,10,rg,rg -n \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6052291393280029,317, -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2898845672607422,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2869348526000977,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2862842082977295,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2864055633544922,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2851040363311768,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.285186529159546,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2865922451019287,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2853999137878418,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2826249599456787,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,grep,grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2860167026519775,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6012325286865234,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.601163387298584,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6019690036773682,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6013593673706055,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6016466617584229,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6019842624664307,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6014797687530518,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6019721031188965,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.601752758026123,317, -subtitles_en_surrounding_words,3,10,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,0.6017599105834961,317, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.68667197227478,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.660332679748535,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.660835266113281,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.660434007644653,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.664055347442627,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.662182569503784,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.660929679870605,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.657424688339233,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.659005165100098,323, -subtitles_en_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,11.660208225250244,323, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.690763711929321,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.688983201980591,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.69182276725769,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.690439462661743,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.689068794250488,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.6937761306762695,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.6903581619262695,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.687433242797852,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.68887186050415,317, -subtitles_en_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,4.686846017837524,317, -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2726647853851318,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2737226486206055,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2792630195617676,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2764034271240234,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2774908542633057,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2776587009429932,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2776594161987305,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2777113914489746,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2754859924316406,317,LC_ALL=C -subtitles_en_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.sample.en,1.2763752937316895,317,LC_ALL=C -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9028000831604004,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.901930332183838,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9000146389007568,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9049570560455322,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9017412662506104,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9024994373321533,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9020378589630127,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.901792049407959,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9039933681488037,691, -subtitles_ru_alternate,3,10,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8997247219085693,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.9008402824401855,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.893612861633301,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.8897013664245605,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890028238296509,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.889577865600586,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890358209609985,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890805244445801,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.891323804855347,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890573501586914,691, -subtitles_ru_alternate,3,10,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.892488718032837,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8788585662841797,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.863766670227051,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8625569343566895,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.857377529144287,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8643264770507812,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.863802909851074,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.859354019165039,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8629326820373535,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.862051486968994,691, -subtitles_ru_alternate,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8658623695373535,691, -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.515479803085327,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.503782033920288,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.510310888290405,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.509161472320557,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.52185344696045,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.509994506835938,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.509246349334717,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.511957168579102,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.508247375488281,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.51308274269104,691,LC_ALL=C -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3016955852508545,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.299199104309082,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3037669658660889,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.303251028060913,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2978003025054932,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3006718158721924,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3024837970733643,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.297926425933838,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.297990083694458,691, -subtitles_ru_alternate,3,10,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.298790693283081,691, -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.991622447967529,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.981353759765625,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.982196092605591,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.99190878868103,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.016578912734985,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.9818947315216064,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.982048988342285,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.986757755279541,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,7.99491548538208,691,LC_ALL=C -subtitles_ru_alternate,3,10,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.03109359741211,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890226364135742,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.891613721847534,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890208959579468,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.892171859741211,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.891136407852173,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.8886566162109375,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.889105319976807,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890317916870117,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.890429496765137,691, -subtitles_ru_alternate_casei,3,10,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,5.891230344772339,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.868140935897827,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.863978624343872,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.862642526626587,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8691396713256836,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.871619939804077,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.877925395965576,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8617172241210938,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.8666179180145264,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.866544246673584,691, -subtitles_ru_alternate_casei,3,10,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.868028163909912,691, -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.564217805862427,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.56824803352356,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.567821741104126,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.568634986877441,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.564311742782593,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.573625564575195,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.590597152709961,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.56586766242981,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.572263956069946,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.582438707351685,691,LC_ALL=C -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.836108446121216,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.830481290817261,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.837197780609131,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.831356048583984,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.829216480255127,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.835860013961792,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.8315253257751465,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.832231044769287,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.843297004699707,735, -subtitles_ru_alternate_casei,3,10,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.830520153045654,735, -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.727419137954712,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.736006021499634,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.733150720596313,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.727008819580078,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.726323366165161,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.724290132522583,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.725264549255371,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.726403951644897,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.729755640029907,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,3,10,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.736154317855835,735,LC_ALL=en_US.UTF-8 -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3251616954803467,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3260176181793213,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.325009822845459,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3253958225250244,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3255586624145508,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32509374618530273,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32692670822143555,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32549190521240234,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32480716705322266,583, -subtitles_ru_literal,3,10,rg,rg Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3243875503540039,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4499814510345459,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.45062875747680664,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4532792568206787,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4568295478820801,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.45064687728881836,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4510054588317871,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.45026254653930664,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4513223171234131,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.4508659839630127,583, -subtitles_ru_literal,3,10,rg (no mmap),rg --no-mmap Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.45338964462280273,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.911964416503906,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.907763004302979,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.93012261390686,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.91182827949524,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.911576986312866,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.928250551223755,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.926709175109863,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.9106764793396,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.90697717666626,583, -subtitles_ru_literal,3,10,pt,pt -N Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.926398754119873,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.41078209877014,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.421114921569824,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.42653226852417,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.411635160446167,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.41897940635681,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.415560722351074,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.41150665283203,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.434045553207397,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.408607959747314,583, -subtitles_ru_literal,3,10,sift,sift Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,16.418298482894897,583, -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7815132141113281,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7787928581237793,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7789037227630615,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7791144847869873,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7804174423217773,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7803263664245605,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.779409646987915,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7803800106048584,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7826926708221436,583,LC_ALL=C -subtitles_ru_literal,3,10,grep,grep -a Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7790436744689941,583,LC_ALL=C -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9256212711334229,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9252862930297852,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9253382682800293,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9255073070526123,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.925473690032959,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9254281520843506,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9273276329040527,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9264523983001709,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9256389141082764,583, -subtitles_ru_literal,3,10,rg (lines),rg -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9267659187316895,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.481263160705566,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.478214979171753,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.479391813278198,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.480245590209961,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.479216575622559,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.480084419250488,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.4808125495910645,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.479414224624634,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.477892637252808,583, -subtitles_ru_literal,3,10,ag (lines),ag -s Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.488618850708008,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8875257968902588,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8994288444519043,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8891081809997559,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8927254676818848,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8885462284088135,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8860197067260742,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8897171020507812,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8881864547729492,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8842110633850098,583, -subtitles_ru_literal,3,10,ucg (lines),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8878448009490967,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.960192918777466,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.926759719848633,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.929388761520386,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.947829723358154,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.930480718612671,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.931763648986816,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.929036140441895,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.93698763847351,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.929525375366211,583, -subtitles_ru_literal,3,10,pt (lines),pt Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,12.932105541229248,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.172893047332764,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.174585819244385,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.17912483215332,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.173067092895508,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.189521074295044,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.172780513763428,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.16919755935669,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.16868829727173,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.19803738594055,583, -subtitles_ru_literal,3,10,sift (lines),sift -n Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,17.171013832092285,583, -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2980215549468994,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2992823123931885,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2971000671386719,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2973082065582275,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2979285717010498,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.299248218536377,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.307051658630371,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3012950420379639,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.300577163696289,583,LC_ALL=C -subtitles_ru_literal,3,10,grep (lines),grep -an Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.2991137504577637,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1314334869384766,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1306557655334473,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1315603256225586,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1313893795013428,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.132558822631836,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1295897960662842,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.131528615951538,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.130932092666626,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1316814422607422,604, -subtitles_ru_literal_casei,3,10,rg,rg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.1331970691680908,604, -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.192144632339478,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.181128025054932,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.183438777923584,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.195424556732178,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.191128015518188,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.181877851486206,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.183242797851562,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.18350863456726,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.18522834777832,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep,grep -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,8.195779085159302,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7842297554016113,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7869102954864502,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7825243473052979,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7850461006164551,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7839555740356445,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7831940650939941,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7849681377410889,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7857487201690674,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7865192890167236,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,grep (ASCII),grep -E -ai Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.784534215927124,583,LC_ALL=C -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.731257438659668,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.730975866317749,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.731431007385254,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.733675479888916,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7313485145568848,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7320530414581299,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7312524318695068,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7336010932922363,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7369468212127686,604, -subtitles_ru_literal_casei,3,10,rg (lines),rg -n -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.7337863445281982,604, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7288784980773926,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7287564277648926,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7289779186248779,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7297887802124023,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7297365665435791,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7302100658416748,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7292482852935791,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7287256717681885,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7282981872558594,, -subtitles_ru_literal_casei,3,10,ag (lines) (ASCII),ag -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7294399738311768,, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.902496337890625,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9001023769378662,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.895233392715454,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8891777992248535,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8906826972961426,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.9022135734558105,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8985214233398438,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8962385654449463,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8911592960357666,583, -subtitles_ru_literal_casei,3,10,ucg (lines) (ASCII),ucg -i Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.894214153289795,583, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3251180648803711,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3250443935394287,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3250398635864258,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3258678913116455,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3260321617126465,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32577013969421387,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32557225227355957,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.32527589797973633,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3257458209991455,, -subtitles_ru_literal_word,3,10,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.3253803253173828,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7521560192108154,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7522988319396973,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7518208026885986,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7535896301269531,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7515583038330078,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.75272536277771,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7540724277496338,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7537317276000977,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7529683113098145,, -subtitles_ru_literal_word,3,10,ag (ASCII),ag -sw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.7519652843475342,, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.895404577255249,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8901162147521973,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8873977661132812,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.885707139968872,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8928821086883545,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8904106616973877,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8904242515563965,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.890967845916748,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.8881947994232178,583, -subtitles_ru_literal_word,3,10,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.900097131729126,583, -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.301781415939331,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3029043674468994,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.302168369293213,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3010151386260986,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3041775226593018,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3008759021759033,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3115224838256836,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3092575073242188,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3020920753479004,583,LC_ALL=C -subtitles_ru_literal_word,3,10,grep (ASCII),grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.299107313156128,583,LC_ALL=C -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9281308650970459,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9305391311645508,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.928086519241333,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9288325309753418,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9280257225036621,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9294643402099609,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9276673793792725,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9298434257507324,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9300410747528076,579, -subtitles_ru_literal_word,3,10,rg,rg -nw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.928978443145752,579, -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3036572933197021,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.301509141921997,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.301844596862793,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.300811767578125,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3004207611083984,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3020946979522705,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3045520782470703,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3078258037567139,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3057043552398682,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,3,10,grep,grep -anw Шерлок Холмс /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.3066091537475586,579,LC_ALL=en_US.UTF-8 -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.906493186950684,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.905959129333496,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.9105610847473145,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.905940532684326,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.903593063354492,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.902836561203003,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.903217792510986,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.903507709503174,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.905400037765503,41, -subtitles_ru_no_literal,3,10,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,4.898482322692871,41, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.972111940383911,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.970813512802124,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.976404905319214,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9732987880706787,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.972306966781616,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.97151255607605,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9718263149261475,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.973245859146118,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9723284244537354,, -subtitles_ru_no_literal,3,10,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.9733688831329346,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3929569721221924,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.392943859100342,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.392956256866455,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4027605056762695,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3976504802703857,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.399548053741455,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.39271879196167,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3926007747650146,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3937296867370605,, -subtitles_ru_no_literal,3,10,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.3968875408172607,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.012164831161499,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.016608953475952,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.0102171897888184,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.000244379043579,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.0036542415618896,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.002727508544922,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.000943660736084,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.0042483806610107,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.0024917125701904,, -subtitles_ru_no_literal,3,10,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,3.007298707962036,, -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.488464593887329,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4832253456115723,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4868624210357666,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.482663631439209,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4814178943634033,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4921915531158447,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.477674722671509,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4839584827423096,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4775733947753906,,LC_ALL=C -subtitles_ru_no_literal,3,10,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4787662029266357,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9554853439331055,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9573261737823486,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9586184024810791,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9581241607666016,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9575743675231934,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9565131664276123,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.957273006439209,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9568536281585693,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.9590330123901367,278, -subtitles_ru_surrounding_words,3,10,rg,rg -n \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,0.956944465637207,278, -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6629645824432373,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6628422737121582,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6596570014953613,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6606900691986084,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6575767993927002,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6601543426513672,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6579883098602295,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6584765911102295,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6587963104248047,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,grep,grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6574666500091553,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.410092353820801,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4107093811035156,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4124505519866943,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.41247820854187,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4112393856048584,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4098284244537354,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4091367721557617,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4103705883026123,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.409790515899658,, -subtitles_ru_surrounding_words,3,10,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.4096734523773193,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.9796345233917236,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.9837162494659424,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.9813201427459717,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.979423999786377,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.976318120956421,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.9775450229644775,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.976980447769165,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.979104518890381,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.980332612991333,, -subtitles_ru_surrounding_words,3,10,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,2.9827349185943604,, -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.60090970993042,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5965259075164795,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5928871631622314,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5957767963409424,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5944275856018066,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.6034324169158936,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5949978828430176,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5950729846954346,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.593465805053711,,LC_ALL=C -subtitles_ru_surrounding_words,3,10,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /mnt/bench/subtitles/OpenSubtitles2016.raw.ru,1.5951871871948242,,LC_ALL=C diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/summary deleted file mode 100644 index 867974e5d..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-20-ubuntu1604-ec2/summary +++ /dev/null @@ -1,235 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.351 +/- 0.074 (lines: 68) -ag (ignore) 1.747 +/- 0.005 (lines: 68) -git grep (ignore) 0.501 +/- 0.003 (lines: 68) -rg (whitelist)* 0.216 +/- 0.031 (lines: 68) -ucg (whitelist) 0.214 +/- 0.008 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.391 +/- 0.078 (lines: 160) -ag (ignore) 1.968 +/- 0.009 (lines: 160) -git grep (ignore) 2.018 +/- 0.006 (lines: 160) -rg (whitelist)* 0.222 +/- 0.001 (lines: 160)* -ucg (whitelist) 0.522 +/- 0.002 (lines: 160) - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.334 +/- 0.053 (lines: 16) -rg (ignore) (mmap) 1.611 +/- 0.009 (lines: 16) -ag (ignore) (mmap) 1.588 +/- 0.011 (lines: 16) -pt (ignore) 0.456 +/- 0.025 (lines: 16) -sift (ignore) 0.630 +/- 0.004 (lines: 16) -git grep (ignore) 0.345 +/- 0.007 (lines: 16) -rg (whitelist)* 0.228 +/- 0.042 (lines: 16) -ucg (whitelist) 0.218 +/- 0.007 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.345 +/- 0.073 (lines: 370) -rg (ignore) (mmap) 1.612 +/- 0.011 (lines: 370) -ag (ignore) (mmap) 1.609 +/- 0.015 (lines: 370) -pt (ignore) 17.204 +/- 0.126 (lines: 370) -sift (ignore) 0.805 +/- 0.005 (lines: 370) -git grep (ignore) 0.343 +/- 0.007 (lines: 370) -rg (whitelist)* 0.222 +/- 0.021 (lines: 370) -ucg (whitelist) 0.217 +/- 0.006 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg 0.349 +/- 0.104 (lines: 16) -ag 1.589 +/- 0.009 (lines: 16) -ucg* 0.218 +/- 0.007 (lines: 16)* -pt 0.462 +/- 0.012 (lines: 16) -sift 0.352 +/- 0.018 (lines: 16) -git grep 0.342 +/- 0.005 (lines: 16) - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.577 +/- 0.003 (lines: 490) -rg (ignore) (ASCII) 0.416 +/- 0.025 (lines: 490) -ag (ignore) (ASCII) 2.339 +/- 0.010 (lines: 766) -pt (ignore) (ASCII) 22.066 +/- 0.057 (lines: 490) -sift (ignore) (ASCII) 25.563 +/- 0.108 (lines: 490) -git grep (ignore) 26.382 +/- 0.044 (lines: 490) -git grep (ignore) (ASCII) 4.153 +/- 0.010 (lines: 490) -rg (whitelist) 0.503 +/- 0.011 (lines: 419) -rg (whitelist) (ASCII)* 0.343 +/- 0.038 (lines: 419)* -ucg (whitelist) (ASCII) 1.130 +/- 0.003 (lines: 416) - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.318 +/- 0.034 (lines: 1652) -ag (ignore) 1.899 +/- 0.008 (lines: 1652) -pt (ignore) 13.713 +/- 0.241 (lines: 1652) -sift (ignore) 10.172 +/- 0.186 (lines: 1652) -git grep (ignore) 1.108 +/- 0.004 (lines: 1652) -rg (whitelist)* 0.221 +/- 0.022 (lines: 1630)* -ucg (whitelist) 0.301 +/- 0.001 (lines: 1630) - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.414 +/- 0.021 (lines: 23)* -pt 12.745 +/- 0.166 (lines: 23) -sift 7.767 +/- 0.264 (lines: 23) - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg 0.425 +/- 0.027 (lines: 103) -pt 12.612 +/- 0.217 (lines: 23) -sift* 0.002 +/- 0.000 (lines: 0)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.355 +/- 0.073 (lines: 186) -rg (ignore) (ASCII) 0.329 +/- 0.060 (lines: 174) -ag (ignore) (ASCII) 1.774 +/- 0.011 (lines: 174) -pt (ignore) (ASCII) 14.180 +/- 0.180 (lines: 174) -sift (ignore) (ASCII) 11.087 +/- 0.108 (lines: 174) -git grep (ignore) 13.045 +/- 0.008 (lines: 186) -git grep (ignore) (ASCII) 2.991 +/- 0.004 (lines: 174) -rg (whitelist) 0.235 +/- 0.031 (lines: 180) -rg (whitelist) (ASCII)* 0.225 +/- 0.023 (lines: 168)* -ucg (ASCII) 0.229 +/- 0.007 (lines: 168) - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.362 +/- 0.080 (lines: 6) -ag (ignore) 1.603 +/- 0.009 (lines: 6) -pt (ignore) 14.417 +/- 0.144 (lines: 6) -sift (ignore) 7.840 +/- 0.123 (lines: 6) -git grep (ignore) 0.341 +/- 0.005 (lines: 6) -rg (whitelist)* 0.220 +/- 0.026 (lines: 6)* -ucg (whitelist) 0.221 +/- 0.007 (lines: 6) - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.619 +/- 0.001 (lines: 848) -ag (lines) 3.757 +/- 0.001 (lines: 848) -ucg (lines) 1.479 +/- 0.002 (lines: 848) -grep (lines) 3.412 +/- 0.004 (lines: 848) -rg* 0.294 +/- 0.001 (lines: 848)* -grep 2.955 +/- 0.003 (lines: 848) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -ag (ASCII) 5.170 +/- 0.004 (lines: 862) -ucg (ASCII) 3.453 +/- 0.005 (lines: 862) -grep (ASCII) 4.537 +/- 0.025 (lines: 862) -rg* 2.724 +/- 0.002 (lines: 862)* -grep 5.125 +/- 0.006 (lines: 862) - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.268 +/- 0.000 (lines: 629)* -rg (no mmap) 0.336 +/- 0.001 (lines: 629) -pt 3.433 +/- 0.002 (lines: 629) -sift 0.326 +/- 0.002 (lines: 629) -grep 0.516 +/- 0.001 (lines: 629) -rg (lines) 0.595 +/- 0.001 (lines: 629) -ag (lines) 2.730 +/- 0.003 (lines: 629) -ucg (lines) 0.745 +/- 0.001 (lines: 629) -pt (lines) 3.434 +/- 0.005 (lines: 629) -sift (lines) 0.756 +/- 0.002 (lines: 629) -grep (lines) 0.969 +/- 0.001 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.366 +/- 0.001 (lines: 642)* -grep 4.084 +/- 0.005 (lines: 642) -grep (ASCII) 0.614 +/- 0.001 (lines: 642) -rg (lines) 0.696 +/- 0.002 (lines: 642) -ag (lines) (ASCII) 2.775 +/- 0.004 (lines: 642) -ucg (lines) (ASCII) 0.841 +/- 0.002 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII) 0.596 +/- 0.001 (lines: 629) -ag (ASCII) 2.729 +/- 0.001 (lines: 629) -ucg (ASCII) 0.810 +/- 0.002 (lines: 629) -grep (ASCII) 0.970 +/- 0.000 (lines: 629) -rg* 0.596 +/- 0.001 (lines: 629)* -grep 0.972 +/- 0.003 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.777 +/- 0.003 (lines: 13) -rg (ASCII)* 2.541 +/- 0.005 (lines: 13)* -ag (ASCII) 10.076 +/- 0.005 (lines: 48) -ucg (ASCII) 7.771 +/- 0.004 (lines: 13) -grep (ASCII) 4.411 +/- 0.004 (lines: 13) - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.605 +/- 0.000 (lines: 317) -grep 1.286 +/- 0.002 (lines: 317) -rg (ASCII)* 0.602 +/- 0.000 (lines: 317)* -ag (ASCII) 11.663 +/- 0.008 (lines: 323) -ucg (ASCII) 4.690 +/- 0.002 (lines: 317) -grep (ASCII) 1.276 +/- 0.002 (lines: 317) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.902 +/- 0.002 (lines: 691) -ag (lines) 5.892 +/- 0.003 (lines: 691) -ucg (lines) 2.864 +/- 0.006 (lines: 691) -grep (lines) 8.511 +/- 0.005 (lines: 691) -rg* 1.300 +/- 0.002 (lines: 691)* -grep 7.994 +/- 0.017 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -ag (ASCII) 5.891 +/- 0.001 (lines: 691) -ucg (ASCII)* 2.868 +/- 0.005 (lines: 691)* -grep (ASCII) 8.572 +/- 0.009 (lines: 691) -rg 4.834 +/- 0.004 (lines: 735) -grep 8.729 +/- 0.004 (lines: 735) - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.325 +/- 0.001 (lines: 583)* -rg (no mmap) 0.452 +/- 0.002 (lines: 583) -pt 12.917 +/- 0.009 (lines: 583) -sift 16.418 +/- 0.008 (lines: 583) -grep 0.780 +/- 0.001 (lines: 583) -rg (lines) 0.926 +/- 0.001 (lines: 583) -ag (lines) 4.481 +/- 0.003 (lines: 583) -ucg (lines) 1.889 +/- 0.004 (lines: 583) -pt (lines) 12.935 +/- 0.011 (lines: 583) -sift (lines) 17.177 +/- 0.010 (lines: 583) -grep (lines) 1.300 +/- 0.003 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 1.131 +/- 0.001 (lines: 604) -grep 8.187 +/- 0.006 (lines: 604) -grep (ASCII) 0.785 +/- 0.001 (lines: 583) -rg (lines) 1.733 +/- 0.002 (lines: 604) -ag (lines) (ASCII)* 0.729 +/- 0.001 (lines: 0)* -ucg (lines) (ASCII) 1.896 +/- 0.005 (lines: 583) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.325 +/- 0.000 (lines: 0)* -ag (ASCII) 0.753 +/- 0.001 (lines: 0) -ucg (ASCII) 1.891 +/- 0.004 (lines: 583) -grep (ASCII) 1.303 +/- 0.004 (lines: 583) -rg 0.929 +/- 0.001 (lines: 579) -grep 1.304 +/- 0.003 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 4.905 +/- 0.003 (lines: 41) -rg (ASCII) 3.973 +/- 0.002 (lines: 0) -ag (ASCII)* 2.395 +/- 0.004 (lines: 0)* -ucg (ASCII) 3.006 +/- 0.005 (lines: 0) -grep (ASCII) 2.483 +/- 0.005 (lines: 0) - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.957 +/- 0.001 (lines: 278)* -grep 1.660 +/- 0.002 (lines: 278) -ag (ASCII) 2.411 +/- 0.001 (lines: 0) -ucg (ASCII) 2.980 +/- 0.002 (lines: 0) -grep (ASCII) 1.596 +/- 0.003 (lines: 0) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/raw.csv deleted file mode 100644 index 5c7158b64..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/raw.csv +++ /dev/null @@ -1,484 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.16187143325805664,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15862464904785156,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15711188316345215,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5682125091552734,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.551994800567627,68, -linux_alternates,1,3,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5516140460968018,68, -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.24930572509765625,68,LC_ALL=C -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.25743985176086426,68,LC_ALL=C -linux_alternates,1,3,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.24960589408874512,68,LC_ALL=C -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1039431095123291,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10251975059509277,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10156440734863281,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15678954124450684,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15236687660217285,68, -linux_alternates,1,3,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1554563045501709,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.16192197799682617,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15988397598266602,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1610555648803711,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6026794910430908,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6083211898803711,160, -linux_alternates_casei,1,3,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.674222469329834,160, -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.0635485649108887,160,LC_ALL=C -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.8944556713104248,160,LC_ALL=C -linux_alternates_casei,1,3,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.860692024230957,160,LC_ALL=C -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.11778616905212402,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.11570453643798828,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.13424015045166016,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2392585277557373,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2421557903289795,160, -linux_alternates_casei,1,3,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2390902042388916,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.14362168312072754,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.16165685653686523,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.1725757122039795,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3785591125488281,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3961794376373291,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3924229145050049,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,0.5462315082550049,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,0.7240490913391113,16, -linux_literal,1,3,ag (ignore) (mmap),ag -s PM_RESUME,0.4528837203979492,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.16354584693908691,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.15301966667175293,16, -linux_literal,1,3,pt (ignore),pt PM_RESUME,0.15467524528503418,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.33901119232177734,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.34641242027282715,16, -linux_literal,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.3532230854034424,16, -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.1970062255859375,16,LC_ALL=C -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.21334624290466309,16,LC_ALL=C -linux_literal,1,3,git grep (ignore),git grep -I -n PM_RESUME,0.19323515892028809,16,LC_ALL=C -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.10708379745483398,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.10089921951293945,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.10404157638549805,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.17191362380981445,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.1670548915863037,16, -linux_literal,1,3,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.16875147819519043,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.16549420356750488,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.14867877960205078,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.1509239673614502,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38896727561950684,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.39926719665527344,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3912012577056885,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,0.48294734954833984,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,0.4827127456665039,370, -linux_literal_casei,1,3,ag (ignore) (mmap),ag -i PM_RESUME,0.4216601848602295,370, -linux_literal_casei,1,3,pt (ignore),pt -i PM_RESUME,11.884198665618896,370, -linux_literal_casei,1,3,pt (ignore),pt -i PM_RESUME,12.05774974822998,370, -linux_literal_casei,1,3,pt (ignore),pt -i PM_RESUME,11.864668130874634,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.3698842525482178,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.3745250701904297,370, -linux_literal_casei,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.3670051097869873,370, -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.18896126747131348,370,LC_ALL=C -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.19655537605285645,370,LC_ALL=C -linux_literal_casei,1,3,git grep (ignore),git grep -I -n -i PM_RESUME,0.183945894241333,370,LC_ALL=C -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.11336517333984375,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.10497522354125977,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.10771870613098145,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.1626441478729248,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.16270971298217773,370, -linux_literal_casei,1,3,ucg (whitelist),ucg -i PM_RESUME,0.1596980094909668,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.14002084732055664,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.13782882690429688,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.13794231414794922,16, -linux_literal_default,1,3,ag,ag PM_RESUME,0.4623262882232666,16, -linux_literal_default,1,3,ag,ag PM_RESUME,0.419907808303833,16, -linux_literal_default,1,3,ag,ag PM_RESUME,0.44193005561828613,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.1634502410888672,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.17029428482055664,16, -linux_literal_default,1,3,ucg,ucg PM_RESUME,0.16076922416687012,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.15809178352355957,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.1554114818572998,16, -linux_literal_default,1,3,pt,pt PM_RESUME,0.15415430068969727,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.1160738468170166,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.11754369735717773,16, -linux_literal_default,1,3,sift,sift PM_RESUME,0.11825299263000488,16, -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.18619132041931152,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.16708111763000488,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,3,git grep,git grep PM_RESUME,0.20236515998840332,16,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.34000611305236816,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.36969494819641113,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3622872829437256,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2572669982910156,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3148176670074463,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3092081546783447,490, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.7651598453521729,766, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.7487096786499023,766, -linux_no_literal,1,3,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.7506840229034424,766, -linux_no_literal,1,3,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.426137685775757,490, -linux_no_literal,1,3,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.454124450683594,490, -linux_no_literal,1,3,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.573740243911743,490, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.734328746795654,490, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.95349931716919,490, -linux_no_literal,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.97816801071167,490, -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.792009830474854,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.744960308074951,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},9.04098892211914,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.8596012592315674,490,LC_ALL=C -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.824751853942871,490,LC_ALL=C -linux_no_literal,1,3,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.9543235301971436,490,LC_ALL=C -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.31849026679992676,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3028290271759033,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.31795716285705566,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.22214102745056152,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2748534679412842,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2098088264465332,419, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4494349956512451,416, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.44551706314086914,416, -linux_no_literal,1,3,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4425935745239258,416, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.19018173217773438,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.1422746181488037,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.14041566848754883,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,0.5190994739532471,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,0.5290501117706299,1652, -linux_re_literal_suffix,1,3,ag (ignore),ag -s [A-Z]+_RESUME,0.5360753536224365,1652, -linux_re_literal_suffix,1,3,pt (ignore),pt -e [A-Z]+_RESUME,11.900719404220581,1652, -linux_re_literal_suffix,1,3,pt (ignore),pt -e [A-Z]+_RESUME,11.905181646347046,1652, -linux_re_literal_suffix,1,3,pt (ignore),pt -e [A-Z]+_RESUME,11.878832817077637,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,3.9338936805725098,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,3.971776247024536,1652, -linux_re_literal_suffix,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,4.010965585708618,1652, -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.553400993347168,1652,LC_ALL=C -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5757920742034912,1652,LC_ALL=C -linux_re_literal_suffix,1,3,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.6472165584564209,1652,LC_ALL=C -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.10109567642211914,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.1010751724243164,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.10259413719177246,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13558602333068848,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13765740394592285,1630, -linux_re_literal_suffix,1,3,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.14018011093139648,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.2655603885650635,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.2579922676086426,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.2389824390411377,23, -linux_unicode_greek,1,3,pt,pt -e \p{Greek},11.789764881134033,23, -linux_unicode_greek,1,3,pt,pt -e \p{Greek},11.717109680175781,23, -linux_unicode_greek,1,3,pt,pt -e \p{Greek},11.714937448501587,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.732529401779175,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.782707452774048,23, -linux_unicode_greek,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.8073642253875732,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.29653406143188477,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.24062681198120117,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.24714946746826172,103, -linux_unicode_greek_casei,1,3,pt,pt -i -e \p{Greek},11.754312515258789,23, -linux_unicode_greek_casei,1,3,pt,pt -i -e \p{Greek},11.742995500564575,23, -linux_unicode_greek_casei,1,3,pt,pt -i -e \p{Greek},11.763852596282959,23, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0018308162689208984,, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0017769336700439453,, -linux_unicode_greek_casei,1,3,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0018434524536132812,, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.19392776489257812,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.14665579795837402,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.15625548362731934,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.14500045776367188,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.15199685096740723,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.14606475830078125,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,0.47933006286621094,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,0.4965095520019531,174, -linux_unicode_word,1,3,ag (ignore) (ASCII),ag -s \wAh,0.4971892833709717,174, -linux_unicode_word,1,3,pt (ignore) (ASCII),pt -e \wAh,12.043948650360107,174, -linux_unicode_word,1,3,pt (ignore) (ASCII),pt -e \wAh,12.024799823760986,174, -linux_unicode_word,1,3,pt (ignore) (ASCII),pt -e \wAh,12.032919883728027,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.146677255630493,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.05977988243103,174, -linux_unicode_word,1,3,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.246629238128662,174, -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,4.401025772094727,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,4.499484062194824,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore),git grep -E -I -n \wAh,4.530885934829712,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.552142858505249,174,LC_ALL=C -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.4553732872009277,174,LC_ALL=C -linux_unicode_word,1,3,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.3407535552978516,174,LC_ALL=C -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.10183477401733398,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.10535907745361328,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.10527634620666504,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.10268187522888184,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.10159945487976074,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.09854245185852051,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.17232871055603027,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.17245817184448242,168, -linux_unicode_word,1,3,ucg (ASCII),ucg --nosmart-case \wAh,0.1736738681793213,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.18302679061889648,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.14654874801635742,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.14666008949279785,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,0.43340468406677246,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,0.4431777000427246,6, -linux_word,1,3,ag (ignore),ag -s -w PM_RESUME,0.4939415454864502,6, -linux_word,1,3,pt (ignore),pt -w PM_RESUME,12.12212347984314,6, -linux_word,1,3,pt (ignore),pt -w PM_RESUME,12.106850862503052,6, -linux_word,1,3,pt (ignore),pt -w PM_RESUME,12.119231224060059,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.3320345878601074,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.2089524269104004,6, -linux_word,1,3,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.34165096282959,6, -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.20112895965576172,6,LC_ALL=C -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.16607999801635742,6,LC_ALL=C -linux_word,1,3,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.2049086093902588,6,LC_ALL=C -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.10440325736999512,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.09853243827819824,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.09580087661743164,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.16874432563781738,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.16241073608398438,6, -linux_word,1,3,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.1621534824371338,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5109667778015137,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.662921667098999,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.627272367477417,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.4915170669555664,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.294611930847168,848, -subtitles_en_alternate,1,3,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.475243330001831,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.450028419494629,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.266982078552246,848, -subtitles_en_alternate,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.429199457168579,848, -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.81933856010437,848,LC_ALL=C -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.829207420349121,848,LC_ALL=C -subtitles_en_alternate,1,3,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.795469284057617,848,LC_ALL=C -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3135373592376709,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.47072267532348633,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3777759075164795,848, -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2277214527130127,848,LC_ALL=C -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.4641876220703125,848,LC_ALL=C -subtitles_en_alternate,1,3,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.4201643466949463,848,LC_ALL=C -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.925377368927002,862, -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.7743782997131348,862, -subtitles_en_alternate_casei,1,3,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.9031031131744385,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.902085542678833,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.9104111194610596,862, -subtitles_en_alternate_casei,1,3,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.9407846927642822,862, -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.6935694217681885,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.7745134830474854,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.5532472133636475,862,LC_ALL=C -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.3000056743621826,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.46085786819458,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2774720191955566,862, -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.183770418167114,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.210017442703247,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,3,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.052750587463379,862,LC_ALL=en_US.UTF-8 -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2422008514404297,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18678736686706543,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20187044143676758,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21189618110656738,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21378588676452637,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2638204097747803,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6680185794830322,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7018795013427734,629, -subtitles_en_literal,1,3,pt,pt -N Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7135086059570312,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.33170270919799805,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3204488754272461,629, -subtitles_en_literal,1,3,sift,sift Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3302597999572754,629, -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5119576454162598,629,LC_ALL=C -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.48076844215393066,629,LC_ALL=C -subtitles_en_literal,1,3,grep,grep -a Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.6118988990783691,629,LC_ALL=C -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.6149063110351562,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.547245979309082,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5441193580627441,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.990401268005371,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9924650192260742,629, -subtitles_en_literal,1,3,ag (lines),ag -s Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.807952642440796,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.772294282913208,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8758792877197266,629, -subtitles_en_literal,1,3,ucg (lines),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8043625354766846,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5409111976623535,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.535851001739502,629, -subtitles_en_literal,1,3,pt (lines),pt Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6951041221618652,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7138817310333252,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.727524995803833,629, -subtitles_en_literal,1,3,sift (lines),sift -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7202486991882324,629, -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0228428840637207,629,LC_ALL=C -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.9452800750732422,629,LC_ALL=C -subtitles_en_literal,1,3,grep (lines),grep -an Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0286569595336914,629,LC_ALL=C -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.36867737770080566,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.391110897064209,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.42432594299316406,642, -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.2124955654144287,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.288994789123535,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep,grep -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.2279436588287354,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5713660717010498,642,LC_ALL=C -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5478014945983887,642,LC_ALL=C -subtitles_en_literal_casei,1,3,grep (ASCII),grep -E -ai Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5502541065216064,642,LC_ALL=C -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5866222381591797,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5829083919525146,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7458250522613525,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8324756622314453,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8361680507659912,642, -subtitles_en_literal_casei,1,3,ag (lines) (ASCII),ag -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.017822265625,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.9228289127349854,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.9356215000152588,642, -subtitles_en_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.9355306625366211,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.46090102195739746,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.41375064849853516,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4181649684906006,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8445067405700684,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.805356740951538,629, -subtitles_en_literal_word,1,3,ag (ASCII),ag -sw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8274097442626953,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.9036450386047363,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7601873874664307,629, -subtitles_en_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7341368198394775,629, -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.867140531539917,629,LC_ALL=C -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8452246189117432,629,LC_ALL=C -subtitles_en_literal_word,1,3,grep (ASCII),grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8254234790802002,629,LC_ALL=C -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.39222264289855957,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5510556697845459,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.439284086227417,629, -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8688523769378662,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0727341175079346,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,3,grep,grep -anw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8665497303009033,629,LC_ALL=en_US.UTF-8 -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2950611114501953,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.226304769515991,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.3140387535095215,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.055910587310791,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.032794952392578,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0602478981018066,13, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,7.566168308258057,48, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,7.360717535018921,48, -subtitles_en_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,7.30781364440918,48, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.13957142829895,13, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.132368564605713,13, -subtitles_en_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.929611921310425,13, -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.432003974914551,13,LC_ALL=C -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.714038610458374,13,LC_ALL=C -subtitles_en_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.6915385723114014,13,LC_ALL=C -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.42601513862609863,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.561565637588501,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5141217708587646,317, -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.3077969551086426,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1768431663513184,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,grep,grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0883615016937256,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5061089992523193,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4004178047180176,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5536422729492188,317, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.981522798538208,323, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.83101487159729,323, -subtitles_en_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.025806427001953,323, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.906707286834717,317, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.8826284408569336,317, -subtitles_en_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.852736711502075,317, -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.262470006942749,317,LC_ALL=C -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1661438941955566,317,LC_ALL=C -subtitles_en_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1648437976837158,317,LC_ALL=C -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.79972243309021,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.629694938659668,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8325402736663818,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.124853849411011,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.0995543003082275,691, -subtitles_ru_alternate,1,3,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.105457544326782,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.491947650909424,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.544341802597046,691, -subtitles_ru_alternate,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.6295418739318848,691, -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.948693513870239,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.991183280944824,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.004202842712402,691,LC_ALL=C -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1708271503448486,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3341143131256104,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3589985370635986,691, -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.3860955238342285,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.437295436859131,691,LC_ALL=C -subtitles_ru_alternate,1,3,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.34372615814209,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.100299119949341,691, -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.343926668167114,691, -subtitles_ru_alternate_casei,1,3,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.247299432754517,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.6179757118225098,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.438668727874756,691, -subtitles_ru_alternate_casei,1,3,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.6296229362487793,691, -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.816138744354248,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.005900859832764,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.96263861656189,691,LC_ALL=C -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.222437858581543,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.260664463043213,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,4.040424823760986,735, -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.112156391143799,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.066831350326538,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,3,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.983258962631226,735,LC_ALL=en_US.UTF-8 -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3009657859802246,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.31114768981933594,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3145453929901123,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3670217990875244,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.39557576179504395,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.38857460021972656,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.653504133224487,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.440903663635254,583, -subtitles_ru_literal,1,3,pt,pt -N Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.604345321655273,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.333267450332642,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.3738181591033936,583, -subtitles_ru_literal,1,3,sift,sift Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.604928970336914,583, -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7382421493530273,583,LC_ALL=C -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7205381393432617,583,LC_ALL=C -subtitles_ru_literal,1,3,grep,grep -a Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8509528636932373,583,LC_ALL=C -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6589868068695068,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.857933759689331,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7283596992492676,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.111611843109131,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1084604263305664,583, -subtitles_ru_literal,1,3,ag (lines),ag -s Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.993370771408081,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8463020324707031,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8160367012023926,583, -subtitles_ru_literal,1,3,ucg (lines),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9012954235076904,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.590208530426025,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.712487697601318,583, -subtitles_ru_literal,1,3,pt (lines),pt Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.628024339675903,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.999194145202637,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.639494895935059,583, -subtitles_ru_literal,1,3,sift (lines),sift -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.6554951667785645,583, -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3319404125213623,583,LC_ALL=C -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3712143898010254,583,LC_ALL=C -subtitles_ru_literal,1,3,grep (lines),grep -an Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2382845878601074,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2365717887878418,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2306108474731445,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.22041654586792,604, -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.636392116546631,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.447664976119995,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep,grep -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.47466516494751,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8679373264312744,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8400778770446777,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,grep (ASCII),grep -E -ai Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8912734985351562,583,LC_ALL=C -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6649067401885986,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.472435712814331,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.5518934726715088,604, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6329071521759033,, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6236186027526855,, -subtitles_ru_literal_casei,1,3,ag (lines) (ASCII),ag -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.744124174118042,, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.842088222503662,583, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6797516345977783,583, -subtitles_ru_literal_casei,1,3,ucg (lines) (ASCII),ucg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.86281418800354,583, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3059053421020508,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3220036029815674,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3317573070526123,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.790125846862793,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8004007339477539,, -subtitles_ru_literal_word,1,3,ag (ASCII),ag -sw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7884745597839355,, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8595643043518066,583, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8338594436645508,583, -subtitles_ru_literal_word,1,3,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6697683334350586,583, -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1608448028564453,583,LC_ALL=C -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3229436874389648,583,LC_ALL=C -subtitles_ru_literal_word,1,3,grep (ASCII),grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3650012016296387,583,LC_ALL=C -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.840968132019043,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7012484073638916,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6782803535461426,579, -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3308250904083252,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2687301635742188,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,3,grep,grep -anw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.317870855331421,579,LC_ALL=en_US.UTF-8 -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.8553390502929688,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.6567201614379883,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.6484830379486084,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.968876838684082,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.0976366996765137,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.9159646034240723,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8425374031066895,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0483176708221436,, -subtitles_ru_no_literal,1,3,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0838112831115723,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.510307550430298,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.542471408843994,, -subtitles_ru_no_literal,1,3,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.5069386959075928,, -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0888967514038086,,LC_ALL=C -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.119218349456787,,LC_ALL=C -subtitles_ru_no_literal,1,3,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0531933307647705,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.792813777923584,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8660504817962646,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8515620231628418,278, -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4405500888824463,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6386635303497314,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,grep,grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.5895426273345947,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.032708168029785,, -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.927478551864624,, -subtitles_ru_surrounding_words,1,3,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.019101619720459,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.6226632595062256,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.5062124729156494,, -subtitles_ru_surrounding_words,1,3,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.5160763263702393,, -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.613976240158081,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.5636706352233887,,LC_ALL=C -subtitles_ru_surrounding_words,1,3,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4378304481506348,,LC_ALL=C diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/summary deleted file mode 100644 index 3f84c28a2..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-09-22-archlinux-cheetah/summary +++ /dev/null @@ -1,235 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.159 +/- 0.002 (lines: 68) -ag (ignore) 0.557 +/- 0.009 (lines: 68) -git grep (ignore) 0.252 +/- 0.005 (lines: 68) -rg (whitelist)* 0.103 +/- 0.001 (lines: 68)* -ucg (whitelist) 0.155 +/- 0.002 (lines: 68) - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.161 +/- 0.001 (lines: 160) -ag (ignore) 0.628 +/- 0.040 (lines: 160) -git grep (ignore) 0.940 +/- 0.109 (lines: 160) -rg (whitelist)* 0.123 +/- 0.010 (lines: 160)* -ucg (whitelist) 0.240 +/- 0.002 (lines: 160) - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.159 +/- 0.015 (lines: 16) -rg (ignore) (mmap) 0.389 +/- 0.009 (lines: 16) -ag (ignore) (mmap) 0.574 +/- 0.138 (lines: 16) -pt (ignore) 0.157 +/- 0.006 (lines: 16) -sift (ignore) 0.346 +/- 0.007 (lines: 16) -git grep (ignore) 0.201 +/- 0.011 (lines: 16) -rg (whitelist)* 0.104 +/- 0.003 (lines: 16)* -ucg (whitelist) 0.169 +/- 0.002 (lines: 16) - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.155 +/- 0.009 (lines: 370) -rg (ignore) (mmap) 0.393 +/- 0.005 (lines: 370) -ag (ignore) (mmap) 0.462 +/- 0.035 (lines: 370) -pt (ignore) 11.936 +/- 0.106 (lines: 370) -sift (ignore) 0.370 +/- 0.004 (lines: 370) -git grep (ignore) 0.190 +/- 0.006 (lines: 370) -rg (whitelist)* 0.109 +/- 0.004 (lines: 370)* -ucg (whitelist) 0.162 +/- 0.002 (lines: 370) - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg 0.139 +/- 0.001 (lines: 16) -ag 0.441 +/- 0.021 (lines: 16) -ucg 0.165 +/- 0.005 (lines: 16) -pt 0.156 +/- 0.002 (lines: 16) -sift* 0.117 +/- 0.001 (lines: 16)* -git grep 0.185 +/- 0.018 (lines: 16) - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.357 +/- 0.015 (lines: 490) -rg (ignore) (ASCII) 0.294 +/- 0.032 (lines: 490) -ag (ignore) (ASCII) 0.755 +/- 0.009 (lines: 766) -pt (ignore) (ASCII) 12.485 +/- 0.078 (lines: 490) -sift (ignore) (ASCII) 8.889 +/- 0.134 (lines: 490) -git grep (ignore) 8.859 +/- 0.159 (lines: 490) -git grep (ignore) (ASCII) 1.880 +/- 0.067 (lines: 490) -rg (whitelist) 0.313 +/- 0.009 (lines: 419) -rg (whitelist) (ASCII)* 0.236 +/- 0.035 (lines: 419)* -ucg (whitelist) (ASCII) 0.446 +/- 0.003 (lines: 416) - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.158 +/- 0.028 (lines: 1652) -ag (ignore) 0.528 +/- 0.009 (lines: 1652) -pt (ignore) 11.895 +/- 0.014 (lines: 1652) -sift (ignore) 3.972 +/- 0.039 (lines: 1652) -git grep (ignore) 0.592 +/- 0.049 (lines: 1652) -rg (whitelist)* 0.102 +/- 0.001 (lines: 1630)* -ucg (whitelist) 0.138 +/- 0.002 (lines: 1630) - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.254 +/- 0.014 (lines: 23)* -pt 11.741 +/- 0.043 (lines: 23) -sift 2.774 +/- 0.038 (lines: 23) - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg 0.261 +/- 0.031 (lines: 103) -pt 11.754 +/- 0.010 (lines: 23) -sift* 0.002 +/- 0.000 (lines: 0)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.166 +/- 0.025 (lines: 186) -rg (ignore) (ASCII) 0.148 +/- 0.004 (lines: 174) -ag (ignore) (ASCII) 0.491 +/- 0.010 (lines: 174) -pt (ignore) (ASCII) 12.034 +/- 0.010 (lines: 174) -sift (ignore) (ASCII) 4.151 +/- 0.094 (lines: 174) -git grep (ignore) 4.477 +/- 0.068 (lines: 186) -git grep (ignore) (ASCII) 1.449 +/- 0.106 (lines: 174) -rg (whitelist) 0.104 +/- 0.002 (lines: 180) -rg (whitelist) (ASCII)* 0.101 +/- 0.002 (lines: 168)* -ucg (ASCII) 0.173 +/- 0.001 (lines: 168) - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.159 +/- 0.021 (lines: 6) -ag (ignore) 0.457 +/- 0.032 (lines: 6) -pt (ignore) 12.116 +/- 0.008 (lines: 6) -sift (ignore) 3.294 +/- 0.074 (lines: 6) -git grep (ignore) 0.191 +/- 0.021 (lines: 6) -rg (whitelist)* 0.100 +/- 0.004 (lines: 6)* -ucg (whitelist) 0.164 +/- 0.004 (lines: 6) - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.600 +/- 0.079 (lines: 848) -ag (lines) 2.420 +/- 0.109 (lines: 848) -ucg (lines) 1.382 +/- 0.100 (lines: 848) -grep (lines) 2.815 +/- 0.017 (lines: 848) -rg* 0.387 +/- 0.079 (lines: 848)* -grep 2.371 +/- 0.126 (lines: 848) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -ag (ASCII) 3.868 +/- 0.082 (lines: 862) -ucg (ASCII) 2.918 +/- 0.020 (lines: 862) -grep (ASCII) 3.674 +/- 0.112 (lines: 862) -rg* 2.346 +/- 0.100 (lines: 862)* -grep 4.149 +/- 0.084 (lines: 862) - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.210 +/- 0.029 (lines: 629)* -rg (no mmap) 0.230 +/- 0.029 (lines: 629) -pt 1.694 +/- 0.024 (lines: 629) -sift 0.327 +/- 0.006 (lines: 629) -grep 0.535 +/- 0.069 (lines: 629) -rg (lines) 0.569 +/- 0.040 (lines: 629) -ag (lines) 1.930 +/- 0.106 (lines: 629) -ucg (lines) 0.818 +/- 0.053 (lines: 629) -pt (lines) 1.591 +/- 0.091 (lines: 629) -sift (lines) 0.721 +/- 0.007 (lines: 629) -grep (lines) 0.999 +/- 0.047 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.395 +/- 0.028 (lines: 642)* -grep 3.243 +/- 0.040 (lines: 642) -grep (ASCII) 0.556 +/- 0.013 (lines: 642) -rg (lines) 0.638 +/- 0.093 (lines: 642) -ag (lines) (ASCII) 1.895 +/- 0.106 (lines: 642) -ucg (lines) (ASCII) 0.931 +/- 0.007 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII) 0.431 +/- 0.026 (lines: 629)* -ag (ASCII) 1.826 +/- 0.020 (lines: 629) -ucg (ASCII) 0.799 +/- 0.091 (lines: 629) -grep (ASCII) 0.846 +/- 0.021 (lines: 629) -rg* 0.461 +/- 0.082 (lines: 629) -grep 0.936 +/- 0.118 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.278 +/- 0.046 (lines: 13) -rg (ASCII)* 2.050 +/- 0.015 (lines: 13)* -ag (ASCII) 7.412 +/- 0.136 (lines: 48) -ucg (ASCII) 6.067 +/- 0.119 (lines: 13) -grep (ASCII) 3.613 +/- 0.157 (lines: 13) - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.501 +/- 0.069 (lines: 317) -grep 1.191 +/- 0.110 (lines: 317) -rg (ASCII)* 0.487 +/- 0.078 (lines: 317)* -ag (ASCII) 4.946 +/- 0.102 (lines: 323) -ucg (ASCII) 3.881 +/- 0.027 (lines: 317) -grep (ASCII) 1.198 +/- 0.056 (lines: 317) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.754 +/- 0.109 (lines: 691) -ag (lines) 4.110 +/- 0.013 (lines: 691) -ucg (lines) 2.555 +/- 0.069 (lines: 691) -grep (lines) 6.981 +/- 0.029 (lines: 691) -rg* 1.288 +/- 0.102 (lines: 691)* -grep 6.389 +/- 0.047 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -ag (ASCII) 4.231 +/- 0.123 (lines: 691) -ucg (ASCII)* 2.562 +/- 0.107 (lines: 691)* -grep (ASCII) 6.928 +/- 0.099 (lines: 691) -rg 4.175 +/- 0.118 (lines: 735) -grep 7.054 +/- 0.065 (lines: 735) - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.309 +/- 0.007 (lines: 583)* -rg (no mmap) 0.384 +/- 0.015 (lines: 583) -pt 5.566 +/- 0.111 (lines: 583) -sift 6.437 +/- 0.147 (lines: 583) -grep 0.770 +/- 0.071 (lines: 583) -rg (lines) 0.748 +/- 0.101 (lines: 583) -ag (lines) 3.071 +/- 0.067 (lines: 583) -ucg (lines) 1.855 +/- 0.043 (lines: 583) -pt (lines) 5.644 +/- 0.063 (lines: 583) -sift (lines) 6.765 +/- 0.203 (lines: 583) -grep (lines) 1.314 +/- 0.068 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 1.229 +/- 0.008 (lines: 604) -grep 6.520 +/- 0.102 (lines: 604) -grep (ASCII) 0.866 +/- 0.026 (lines: 583) -rg (lines) 1.563 +/- 0.097 (lines: 604) -ag (lines) (ASCII)* 0.667 +/- 0.067 (lines: 0)* -ucg (lines) (ASCII) 1.795 +/- 0.100 (lines: 583) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.320 +/- 0.013 (lines: 0)* -ag (ASCII) 0.793 +/- 0.006 (lines: 0) -ucg (ASCII) 1.788 +/- 0.103 (lines: 583) -grep (ASCII) 1.283 +/- 0.108 (lines: 583) -rg 0.740 +/- 0.088 (lines: 579) -grep 1.306 +/- 0.033 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.720 +/- 0.117 (lines: 41) -rg (ASCII) 2.994 +/- 0.093 (lines: 0) -ag (ASCII)* 1.992 +/- 0.130 (lines: 0)* -ucg (ASCII) 2.520 +/- 0.020 (lines: 0) -grep (ASCII) 2.087 +/- 0.033 (lines: 0) - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.837 +/- 0.039 (lines: 278)* -grep 1.556 +/- 0.103 (lines: 278) -ag (ASCII) 1.993 +/- 0.057 (lines: 0) -ucg (ASCII) 2.548 +/- 0.065 (lines: 0) -grep (ASCII) 1.538 +/- 0.091 (lines: 0) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/raw.csv deleted file mode 100644 index 06ce51162..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09452986717224121,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08666801452636719,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08859610557556152,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07011771202087402,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06441712379455566,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06532430648803711,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10056233406066895,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09930968284606934,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09773039817810059,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07829093933105469,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0827643871307373,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08210110664367676,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06728911399841309,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06839728355407715,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.0736091136932373,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3859975337982178,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.38575077056884766,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.4032607078552246,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.0657193660736084,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.058367013931274414,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.05761837959289551,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07888174057006836,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08236145973205566,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07680559158325195,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3796377182006836,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3852665424346924,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.387775182723999,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06758904457092285,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06706357002258301,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07329010963439941,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06952190399169922,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06766009330749512,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06621623039245605,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.29076576232910156,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3039717674255371,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3147861957550049,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16966867446899414,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16578006744384766,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16440153121948242,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2742593288421631,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.27411365509033203,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2799038887023926,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15713810920715332,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15285205841064453,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.14862322807312012,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.06728196144104004,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.06869316101074219,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07347917556762695,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.05894923210144043,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.0584101676940918,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.05851030349731445,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16553878784179688,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16529393196105957,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16843223571777344,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16363120079040527,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16463160514831543,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16590571403503418,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07585549354553223,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07546257972717285,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07645726203918457,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.0733344554901123,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07160758972167969,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07302546501159668,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06922054290771484,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06507658958435059,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06478118896484375,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06373715400695801,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06354117393493652,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06615662574768066,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07121825218200684,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07050347328186035,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07254600524902344,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06099557876586914,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.061118364334106445,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.062296390533447266,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2724471092224121,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.26970720291137695,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2697625160217285,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21796512603759766,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.32093358039855957,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.35228729248046875,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2418622970581055,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2306008338928223,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.1873059272766113,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22467422485351562,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23565077781677246,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21903586387634277,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19292092323303223,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19452929496765137,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1927196979522705,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28882503509521484,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29108643531799316,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29820847511291504,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.32578349113464355,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2801830768585205,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.41840386390686035,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.42424988746643066,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3513953685760498,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.35476160049438477,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2841978073120117,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18991756439208984,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.296999454498291,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2810351848602295,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27904558181762695,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28331899642944336,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.065884590148926,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9066839218139648,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8898587226867676,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8937196731567383,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8904955387115479,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8846819400787354,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2928280830383301,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2243812084197998,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2868325710296631,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2832787036895752,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2892146110534668,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22050261497497559,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1501314640045166,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3660097122192383,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3461437225341797,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.281209945678711,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.287156343460083,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2730507850646973,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.712820529937744,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7904467582702637,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.657541036605835,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.28091931343078613,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2749307155609131,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.27948546409606934,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3499312400817871,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3630790710449219,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.35364317893981934,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36719226837158203,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3705906867980957,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3758120536804199,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1964221000671387,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1625583171844482,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1898295879364014,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.168842077255249,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2533905506134033,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2375917434692383,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.27202439308166504,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.26978445053100586,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.21065115928649902,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36217236518859863,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36077117919921875,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2883784770965576,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.496169090270996,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.315001964569092,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.3024141788482666,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.0939135551452637,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.8922672271728516,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1002702713012695,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3976116180419922,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.4013686180114746,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3070716857910156,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/summary deleted file mode 100644 index d7fa50e79..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-jemalloc/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.090 +/- 0.004 (lines: 68) -rg (whitelist)* 0.067 +/- 0.003 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.099 +/- 0.001 (lines: 160) -rg (whitelist)* 0.081 +/- 0.002 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.070 +/- 0.003 (lines: 16) -rg (ignore) (mmap) 0.392 +/- 0.010 (lines: 16) -rg (whitelist)* 0.061 +/- 0.004 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.079 +/- 0.003 (lines: 370) -rg (ignore) (mmap) 0.384 +/- 0.004 (lines: 370) -rg (whitelist)* 0.069 +/- 0.003 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.068 +/- 0.002 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.303 +/- 0.012 (lines: 490) -rg (ignore) (ASCII) 0.167 +/- 0.003 (lines: 490) -rg (whitelist) 0.276 +/- 0.003 (lines: 419) -rg (whitelist) (ASCII)* 0.153 +/- 0.004 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.070 +/- 0.003 (lines: 1652) -rg (whitelist)* 0.059 +/- 0.000 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.166 +/- 0.002 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.165 +/- 0.001 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.076 +/- 0.001 (lines: 186) -rg (ignore) (ASCII) 0.073 +/- 0.001 (lines: 174) -rg (whitelist) 0.066 +/- 0.002 (lines: 180) -rg (whitelist) (ASCII)* 0.064 +/- 0.001 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.071 +/- 0.001 (lines: 6) -rg (whitelist)* 0.061 +/- 0.001 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.271 +/- 0.002 (lines: 848)* -rg* 0.297 +/- 0.070 (lines: 848) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 2.220 +/- 0.029 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg 0.226 +/- 0.008 (lines: 629) -rg (no mmap)* 0.193 +/- 0.001 (lines: 629)* -rg (lines) 0.293 +/- 0.005 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.341 +/- 0.070 (lines: 642)* -rg (lines) 0.377 +/- 0.041 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.257 +/- 0.058 (lines: 629)* -rg 0.281 +/- 0.002 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 1.954 +/- 0.097 (lines: 13) -rg (ASCII)* 1.890 +/- 0.005 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.268 +/- 0.038 (lines: 317) -rg (ASCII)* 0.264 +/- 0.038 (lines: 317)* - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines)* 1.287 +/- 0.119 (lines: 691) -rg 1.280 +/- 0.007 (lines: 691)* - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.720 +/- 0.067 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.278 +/- 0.003 (lines: 583)* -rg (no mmap) 0.356 +/- 0.007 (lines: 583) -rg (lines) 0.371 +/- 0.004 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg* 1.183 +/- 0.018 (lines: 604)* -rg (lines) 1.220 +/- 0.045 (lines: 604) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.251 +/- 0.035 (lines: 0)* -rg 0.337 +/- 0.042 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.371 +/- 0.108 (lines: 41) -rg (ASCII)* 3.029 +/- 0.118 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.369 +/- 0.053 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/raw.csv deleted file mode 100644 index 3322762b7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09608030319213867,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08815908432006836,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08974266052246094,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06675052642822266,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06632375717163086,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06531620025634766,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09764790534973145,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10003781318664551,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10493707656860352,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07940077781677246,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07863998413085938,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07791614532470703,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06878829002380371,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06836318969726562,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.07277226448059082,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.379986047744751,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.40039825439453125,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.39777183532714844,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.059081315994262695,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.05873990058898926,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.0586698055267334,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07791399955749512,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.0774388313293457,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07851481437683105,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3788566589355469,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.385251522064209,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38781046867370605,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06934094429016113,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07142090797424316,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07115054130554199,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06683826446533203,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.0690450668334961,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06625819206237793,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2812047004699707,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2557988166809082,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2892444133758545,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16913127899169922,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16315627098083496,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16622567176818848,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2771792411804199,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2861213684082031,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2742443084716797,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15151619911193848,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15233445167541504,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1620476245880127,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07045555114746094,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07046008110046387,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07087540626525879,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06178712844848633,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.0631401538848877,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.0627889633178711,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16510963439941406,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16919803619384766,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16366028785705566,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.17235875129699707,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16506695747375488,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16702055931091309,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07636308670043945,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.0767667293548584,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07441020011901855,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07776570320129395,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07788562774658203,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07390785217285156,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06318306922912598,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06787896156311035,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06569766998291016,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06557774543762207,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06389331817626953,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06407284736633301,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06868839263916016,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07014894485473633,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06822323799133301,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.05816149711608887,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.0577540397644043,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06107187271118164,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.38473939895629883,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2760040760040283,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.366499662399292,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.32836484909057617,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3063969612121582,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3368823528289795,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2332417964935303,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0444729328155518,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0396711826324463,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.13685226440429688,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1380929946899414,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.13843274116516113,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.192030668258667,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1971268653869629,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2931783199310303,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2777669429779053,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28525233268737793,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22691082954406738,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.31324243545532227,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4144246578216553,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.41251444816589355,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.492443323135376,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4691810607910156,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4890565872192383,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2987544536590576,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28134918212890625,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29971933364868164,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22062921524047852,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2716941833496094,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2172706127166748,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0828537940979004,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8791723251342773,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.079643964767456,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8388440608978271,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8970744609832764,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6844482421875,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28177690505981445,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29820775985717773,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2861142158508301,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22010159492492676,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22217011451721191,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2219986915588379,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.146566390991211,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3609087467193604,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1496453285217285,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.281858205795288,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.365553855895996,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2781758308410645,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.622640609741211,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7452948093414307,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.762295961380005,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.27922916412353516,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2578129768371582,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.21048188209533691,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.34738945960998535,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.368546724319458,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.35752224922180176,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2654876708984375,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2697427272796631,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3652024269104004,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.178579330444336,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1693329811096191,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.144824504852295,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0454356670379639,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0725409984588623,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2725732326507568,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.20514369010925293,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.18602967262268066,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2725963592529297,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.35959553718566895,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36090755462646484,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.35926032066345215,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.509491205215454,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.292212963104248,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.4941117763519287,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.0987064838409424,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1049976348876953,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.098233222961426,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3214902877807617,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.38519954681396484,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3827836513519287,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/summary deleted file mode 100644 index 788c36774..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-glibc-system/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.091 +/- 0.004 (lines: 68) -rg (whitelist)* 0.066 +/- 0.001 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.101 +/- 0.004 (lines: 160) -rg (whitelist)* 0.079 +/- 0.001 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.070 +/- 0.002 (lines: 16) -rg (ignore) (mmap) 0.393 +/- 0.011 (lines: 16) -rg (whitelist)* 0.059 +/- 0.000 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.078 +/- 0.001 (lines: 370) -rg (ignore) (mmap) 0.384 +/- 0.005 (lines: 370) -rg (whitelist)* 0.071 +/- 0.001 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.067 +/- 0.001 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.275 +/- 0.017 (lines: 490) -rg (ignore) (ASCII) 0.166 +/- 0.003 (lines: 490) -rg (whitelist) 0.279 +/- 0.006 (lines: 419) -rg (whitelist) (ASCII)* 0.155 +/- 0.006 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.071 +/- 0.000 (lines: 1652) -rg (whitelist)* 0.063 +/- 0.001 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.166 +/- 0.003 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.168 +/- 0.004 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.076 +/- 0.001 (lines: 186) -rg (ignore) (ASCII) 0.077 +/- 0.002 (lines: 174) -rg (whitelist)* 0.066 +/- 0.002 (lines: 180) -rg (whitelist) (ASCII) 0.065 +/- 0.001 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.069 +/- 0.001 (lines: 6) -rg (whitelist)* 0.059 +/- 0.002 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines)* 0.342 +/- 0.058 (lines: 848) -rg 0.324 +/- 0.016 (lines: 848)* - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 2.106 +/- 0.110 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.138 +/- 0.001 (lines: 629)* -rg (no mmap) 0.227 +/- 0.057 (lines: 629) -rg (lines) 0.263 +/- 0.032 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.380 +/- 0.058 (lines: 642)* -rg (lines) 0.484 +/- 0.013 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII) 0.293 +/- 0.010 (lines: 629) -rg* 0.237 +/- 0.030 (lines: 629)* - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.014 +/- 0.117 (lines: 13) -rg (ASCII)* 1.807 +/- 0.110 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.289 +/- 0.009 (lines: 317) -rg (ASCII)* 0.221 +/- 0.001 (lines: 317)* - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines)* 1.219 +/- 0.123 (lines: 691)* -rg 1.309 +/- 0.049 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.710 +/- 0.076 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.249 +/- 0.035 (lines: 583)* -rg (no mmap) 0.358 +/- 0.011 (lines: 583) -rg (lines) 0.300 +/- 0.056 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 1.164 +/- 0.017 (lines: 604) -rg (lines)* 1.130 +/- 0.124 (lines: 604)* - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.221 +/- 0.045 (lines: 0)* -rg 0.360 +/- 0.001 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.432 +/- 0.121 (lines: 41) -rg (ASCII)* 3.101 +/- 0.004 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.363 +/- 0.036 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/raw.csv deleted file mode 100644 index 359297a26..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10048675537109375,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09462523460388184,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0931856632232666,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06952047348022461,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07045698165893555,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06589603424072266,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09840559959411621,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0973203182220459,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09747123718261719,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07976746559143066,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07973408699035645,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0842599868774414,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06900453567504883,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06771540641784668,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.07333683967590332,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.38510584831237793,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.38396191596984863,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.37463903427124023,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.05757570266723633,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.058022260665893555,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.06006050109863281,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07654142379760742,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07764244079589844,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07787275314331055,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38339757919311523,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38019704818725586,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3887295722961426,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06747794151306152,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06868124008178711,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06679105758666992,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.07849764823913574,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.08336472511291504,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06723690032958984,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.25814294815063477,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.29274845123291016,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2985391616821289,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16458344459533691,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16898059844970703,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1756742000579834,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3002643585205078,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2709066867828369,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2683436870574951,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1489565372467041,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.14751625061035156,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1487743854522705,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.06930160522460938,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07447147369384766,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07432723045349121,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06141376495361328,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06345224380493164,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.05813455581665039,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16566061973571777,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.17109084129333496,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16268444061279297,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16269755363464355,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16636371612548828,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16133809089660645,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07663178443908691,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07986211776733398,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07756590843200684,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07402157783508301,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07861495018005371,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07465910911560059,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06782341003417969,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06639862060546875,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06768679618835449,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06638240814208984,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06481051445007324,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06659054756164551,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06744074821472168,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06904149055480957,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07302141189575195,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.05972766876220703,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.0587460994720459,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.05879020690917969,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3649451732635498,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.37390756607055664,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3691575527191162,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3192598819732666,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3968648910522461,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.347275972366333,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.11361026763916,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9423036575317383,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9265573024749756,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21686100959777832,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23349666595458984,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2394559383392334,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2971608638763428,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2950170040130615,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2873063087463379,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2898998260498047,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21834325790405273,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2833542823791504,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3961493968963623,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.30686163902282715,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.44585490226745605,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.46064209938049316,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4497091770172119,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.34823131561279297,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2819490432739258,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18886327743530273,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28542351722717285,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18991541862487793,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27848052978515625,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21271944046020508,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0810630321502686,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0093939304351807,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8533532619476318,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8952853679656982,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7897896766662598,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.893296480178833,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19786620140075684,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1896834373474121,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29248762130737305,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2933495044708252,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29410600662231445,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23128199577331543,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.343696117401123,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3544535636901855,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3534214496612549,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2638463973999023,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2450191974639893,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2779006958007812,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7900640964508057,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.812807321548462,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7412266731262207,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2562215328216553,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2781085968017578,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.21145415306091309,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36469101905822754,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.37107086181640625,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.29900336265563965,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3739583492279053,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3521237373352051,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3766622543334961,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1903154850006104,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.196908950805664,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1714701652526855,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0471339225769043,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2229478359222412,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1774308681488037,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.20592975616455078,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2680799961090088,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.29538846015930176,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36015796661376953,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3006131649017334,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36701369285583496,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.4495208263397217,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.4749486446380615,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.29917049407959,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.0949668884277344,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1213910579681396,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.905003070831299,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.39461803436279297,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3211812973022461,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3848116397857666,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/summary deleted file mode 100644 index dda152171..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-jemalloc/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.096 +/- 0.004 (lines: 68) -rg (whitelist)* 0.069 +/- 0.002 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.098 +/- 0.001 (lines: 160) -rg (whitelist)* 0.081 +/- 0.003 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.070 +/- 0.003 (lines: 16) -rg (ignore) (mmap) 0.381 +/- 0.006 (lines: 16) -rg (whitelist)* 0.059 +/- 0.001 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.077 +/- 0.001 (lines: 370) -rg (ignore) (mmap) 0.384 +/- 0.004 (lines: 370) -rg (whitelist)* 0.068 +/- 0.001 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.076 +/- 0.008 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.283 +/- 0.022 (lines: 490) -rg (ignore) (ASCII) 0.170 +/- 0.006 (lines: 490) -rg (whitelist) 0.280 +/- 0.018 (lines: 419) -rg (whitelist) (ASCII)* 0.148 +/- 0.001 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.073 +/- 0.003 (lines: 1652) -rg (whitelist)* 0.061 +/- 0.003 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.166 +/- 0.004 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.163 +/- 0.003 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.078 +/- 0.002 (lines: 186) -rg (ignore) (ASCII) 0.076 +/- 0.002 (lines: 174) -rg (whitelist) 0.067 +/- 0.001 (lines: 180) -rg (whitelist) (ASCII)* 0.066 +/- 0.001 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.070 +/- 0.003 (lines: 6) -rg (whitelist)* 0.059 +/- 0.001 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.369 +/- 0.004 (lines: 848) -rg* 0.354 +/- 0.039 (lines: 848)* - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 1.994 +/- 0.104 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.230 +/- 0.012 (lines: 629)* -rg (no mmap) 0.293 +/- 0.005 (lines: 629) -rg (lines) 0.264 +/- 0.040 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.383 +/- 0.070 (lines: 642)* -rg (lines) 0.420 +/- 0.062 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.252 +/- 0.055 (lines: 629) -rg 0.227 +/- 0.046 (lines: 629)* - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 1.981 +/- 0.116 (lines: 13) -rg (ASCII)* 1.859 +/- 0.060 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg* 0.227 +/- 0.057 (lines: 317)* -rg (ASCII) 0.273 +/- 0.036 (lines: 317) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.351 +/- 0.006 (lines: 691) -rg* 1.262 +/- 0.016 (lines: 691)* - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.781 +/- 0.037 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.249 +/- 0.034 (lines: 583)* -rg (no mmap) 0.345 +/- 0.040 (lines: 583) -rg (lines) 0.368 +/- 0.013 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 1.186 +/- 0.013 (lines: 604) -rg (lines)* 1.149 +/- 0.091 (lines: 604)* - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.256 +/- 0.046 (lines: 0)* -rg 0.343 +/- 0.037 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.408 +/- 0.095 (lines: 41) -rg (ASCII)* 3.040 +/- 0.118 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.367 +/- 0.040 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/raw.csv deleted file mode 100644 index a6c50da56..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09466052055358887,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09342074394226074,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0869603157043457,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06717634201049805,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06487321853637695,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06573486328125,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10077238082885742,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10428118705749512,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09920215606689453,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07973098754882812,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07897496223449707,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07888197898864746,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06830811500549316,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.0715939998626709,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06830549240112305,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3897213935852051,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.39376020431518555,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3769495487213135,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.060272932052612305,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.058103322982788086,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.06174445152282715,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07664990425109863,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07809257507324219,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08361077308654785,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38071417808532715,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.37515711784362793,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.38091325759887695,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06704211235046387,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06667947769165039,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06667375564575195,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06779932975769043,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06725239753723145,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06754946708679199,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2662222385406494,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.30044007301330566,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.30494165420532227,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.17267060279846191,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16266226768493652,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16399097442626953,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.25603818893432617,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.26952672004699707,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2737579345703125,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.14797663688659668,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15069222450256348,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15210580825805664,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.06923699378967285,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07373404502868652,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07130026817321777,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.05809664726257324,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06291556358337402,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.062150001525878906,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16234064102172852,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16682648658752441,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.1634657382965088,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16612553596496582,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.1632983684539795,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16044902801513672,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07571697235107422,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07967901229858398,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07469820976257324,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07374238967895508,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07341313362121582,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07449674606323242,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06552338600158691,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06324410438537598,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.0665595531463623,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06373834609985352,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06749844551086426,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06431031227111816,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.0686798095703125,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06870913505554199,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06892633438110352,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.05895066261291504,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06163740158081055,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.058525800704956055,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.34538722038269043,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.265763521194458,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.26305389404296875,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20859956741333008,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20516705513000488,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20496821403503418,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2090365886688232,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.226768732070923,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.226130962371826,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.24144577980041504,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21985626220703125,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21775150299072266,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2918863296508789,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1962728500366211,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19310998916625977,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.26285672187805176,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18955564498901367,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1910560131072998,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.40812134742736816,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.31265878677368164,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.31433773040771484,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3256862163543701,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.32616353034973145,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.32959580421447754,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27936625480651855,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28154826164245605,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20779705047607422,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.26377248764038086,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2896091938018799,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21306395530700684,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0740439891815186,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.875295639038086,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0514187812805176,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6831274032592773,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6856412887573242,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6853716373443604,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2878584861755371,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22226691246032715,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.294330358505249,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3013031482696533,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2214052677154541,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19563746452331543,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1506719589233398,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.345916509628296,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3316686153411865,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2255687713623047,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0810630321502686,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2861762046813965,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.666182279586792,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.730118751525879,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7910759449005127,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.265308141708374,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2775256633758545,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.29873085021972656,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3600039482116699,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3705918788909912,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.37277793884277344,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3728773593902588,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2903330326080322,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3601820468902588,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1635336875915527,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9739360809326172,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.155383825302124,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2030081748962402,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0454139709472656,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2500181198120117,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2797272205352783,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2795555591583252,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2683413028717041,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2863891124725342,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.35770344734191895,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3524661064147949,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.514166831970215,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.4967641830444336,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.2882306575775146,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.8897318840026855,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1153793334960938,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.100428581237793,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.4093492031097412,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.4054989814758301,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3883328437805176,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/summary deleted file mode 100644 index 6f89062a0..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah-musl-system/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.092 +/- 0.004 (lines: 68) -rg (whitelist)* 0.066 +/- 0.001 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.101 +/- 0.003 (lines: 160) -rg (whitelist)* 0.079 +/- 0.000 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.069 +/- 0.002 (lines: 16) -rg (ignore) (mmap) 0.387 +/- 0.009 (lines: 16) -rg (whitelist)* 0.060 +/- 0.002 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.079 +/- 0.004 (lines: 370) -rg (ignore) (mmap) 0.379 +/- 0.003 (lines: 370) -rg (whitelist)* 0.067 +/- 0.000 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.068 +/- 0.000 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.291 +/- 0.021 (lines: 490) -rg (ignore) (ASCII) 0.166 +/- 0.005 (lines: 490) -rg (whitelist) 0.266 +/- 0.009 (lines: 419) -rg (whitelist) (ASCII)* 0.150 +/- 0.002 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.071 +/- 0.002 (lines: 1652) -rg (whitelist)* 0.061 +/- 0.003 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.164 +/- 0.002 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.163 +/- 0.003 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.077 +/- 0.003 (lines: 186) -rg (ignore) (ASCII) 0.074 +/- 0.001 (lines: 174) -rg (whitelist)* 0.065 +/- 0.002 (lines: 180)* -rg (whitelist) (ASCII) 0.065 +/- 0.002 (lines: 168) - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.069 +/- 0.000 (lines: 6) -rg (whitelist)* 0.060 +/- 0.002 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.291 +/- 0.047 (lines: 848) -rg* 0.206 +/- 0.002 (lines: 848)* - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 2.221 +/- 0.010 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg 0.226 +/- 0.013 (lines: 629) -rg (no mmap) 0.227 +/- 0.056 (lines: 629) -rg (lines)* 0.214 +/- 0.042 (lines: 629)* - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.345 +/- 0.055 (lines: 642) -rg (lines) 0.327 +/- 0.002 (lines: 642)* - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.256 +/- 0.042 (lines: 629) -rg 0.255 +/- 0.039 (lines: 629)* - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.000 +/- 0.109 (lines: 13) -rg (ASCII)* 1.685 +/- 0.001 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.268 +/- 0.040 (lines: 317) -rg (ASCII)* 0.239 +/- 0.055 (lines: 317)* - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.276 +/- 0.109 (lines: 691) -rg* 1.198 +/- 0.105 (lines: 691)* - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.729 +/- 0.062 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.281 +/- 0.017 (lines: 583)* -rg (no mmap) 0.368 +/- 0.007 (lines: 583) -rg (lines) 0.341 +/- 0.044 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg* 1.098 +/- 0.107 (lines: 604)* -rg (lines) 1.166 +/- 0.107 (lines: 604) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.276 +/- 0.007 (lines: 0)* -rg 0.332 +/- 0.040 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.433 +/- 0.126 (lines: 41) -rg (ASCII)* 3.035 +/- 0.126 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.401 +/- 0.011 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/raw.csv deleted file mode 100644 index 595d94a4c..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09865546226501465,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08865809440612793,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0934293270111084,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07241153717041016,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06905841827392578,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.06687068939208984,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1011350154876709,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1053009033203125,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10577726364135742,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0832066535949707,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0812225341796875,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08363056182861328,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.07260608673095703,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06956887245178223,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.07262110710144043,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3854484558105469,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.3801109790802002,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.38498902320861816,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.06220889091491699,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.059615373611450195,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.06207394599914551,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08192729949951172,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08037471771240234,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08067464828491211,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3890647888183594,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3882875442504883,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3826119899749756,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07255673408508301,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07240700721740723,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06744766235351562,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06866455078125,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06612515449523926,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06630897521972656,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.30286335945129395,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2710304260253906,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.30267834663391113,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16382431983947754,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1649789810180664,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16989731788635254,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3308746814727783,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.27356576919555664,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2729830741882324,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16254186630249023,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15763211250305176,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15112638473510742,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07556724548339844,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07514452934265137,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.06890320777893066,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.061008453369140625,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06007099151611328,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.058913469314575195,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.1675281524658203,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.1719217300415039,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.1675257682800293,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16816997528076172,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16349577903747559,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.1649951934814453,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07944488525390625,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.08015990257263184,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07640767097473145,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.0741121768951416,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07456159591674805,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07508492469787598,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06891131401062012,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.0655059814453125,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06730937957763672,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.0630197525024414,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06429147720336914,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06670451164245605,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07088422775268555,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06971001625061035,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.06918931007385254,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.05994749069213867,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06264781951904297,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.061440467834472656,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4529764652252197,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28824853897094727,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.287844181060791,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.34439826011657715,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.34816765785217285,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23656105995178223,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.026144027709961,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2452991008758545,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2087535858154297,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2194046974182129,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22587895393371582,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22500324249267578,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3005552291870117,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2805304527282715,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.30254316329956055,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2822296619415283,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2205369472503662,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23558998107910156,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4217369556427002,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4352266788482666,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3286154270172119,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4068911075592041,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4721720218658447,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.49277544021606445,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2922394275665283,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2809920310974121,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2835381031036377,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28315305709838867,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29279136657714844,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29344797134399414,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0767383575439453,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0589702129364014,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8731834888458252,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6820619106292725,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8845677375793457,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6996817588806152,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2987375259399414,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2955625057220459,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2865116596221924,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27387547492980957,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2899343967437744,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19668984413146973,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4088802337646484,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3826014995574951,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4164769649505615,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2548110485076904,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.080472707748413,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3337528705596924,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.449100971221924,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.747535467147827,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7990715503692627,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.21280717849731445,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.18636178970336914,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2740190029144287,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36304640769958496,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3737907409667969,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.37337779998779297,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2974729537963867,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2715010643005371,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36052799224853516,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.206491231918335,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.202974557876587,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.195291519165039,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2875757217407227,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2895469665527344,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.277585506439209,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2928614616394043,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2610359191894531,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2692301273345947,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36007237434387207,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.37184953689575195,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3902134895324707,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.2949090003967285,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.48958683013916,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.389604091644287,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.894768714904785,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.873474359512329,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.088130474090576,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3918273448944092,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.38251543045043945,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2919657230377197,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/summary deleted file mode 100644 index 818514c35..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-24-archlinux-cheetah/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.094 +/- 0.005 (lines: 68) -rg (whitelist)* 0.069 +/- 0.003 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.104 +/- 0.003 (lines: 160) -rg (whitelist)* 0.083 +/- 0.001 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.072 +/- 0.002 (lines: 16) -rg (ignore) (mmap) 0.384 +/- 0.003 (lines: 16) -rg (whitelist)* 0.061 +/- 0.001 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.081 +/- 0.001 (lines: 370) -rg (ignore) (mmap) 0.387 +/- 0.004 (lines: 370) -rg (whitelist)* 0.071 +/- 0.003 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.067 +/- 0.001 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.292 +/- 0.018 (lines: 490) -rg (ignore) (ASCII) 0.166 +/- 0.003 (lines: 490) -rg (whitelist) 0.292 +/- 0.033 (lines: 419) -rg (whitelist) (ASCII)* 0.157 +/- 0.006 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.073 +/- 0.004 (lines: 1652) -rg (whitelist)* 0.060 +/- 0.001 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.169 +/- 0.003 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.166 +/- 0.002 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.079 +/- 0.002 (lines: 186) -rg (ignore) (ASCII) 0.075 +/- 0.000 (lines: 174) -rg (whitelist) 0.067 +/- 0.002 (lines: 180) -rg (whitelist) (ASCII)* 0.065 +/- 0.002 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.070 +/- 0.001 (lines: 6) -rg (whitelist)* 0.061 +/- 0.001 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.343 +/- 0.095 (lines: 848) -rg* 0.310 +/- 0.063 (lines: 848)* - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 2.160 +/- 0.117 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.223 +/- 0.004 (lines: 629)* -rg (no mmap) 0.295 +/- 0.012 (lines: 629) -rg (lines) 0.246 +/- 0.032 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.395 +/- 0.058 (lines: 642)* -rg (lines) 0.457 +/- 0.045 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.286 +/- 0.006 (lines: 629)* -rg 0.290 +/- 0.006 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.003 +/- 0.113 (lines: 13) -rg (ASCII)* 1.755 +/- 0.112 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.294 +/- 0.006 (lines: 317) -rg (ASCII)* 0.253 +/- 0.050 (lines: 317)* - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.403 +/- 0.018 (lines: 691) -rg* 1.223 +/- 0.130 (lines: 691)* - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.665 +/- 0.189 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.224 +/- 0.045 (lines: 583)* -rg (no mmap) 0.370 +/- 0.006 (lines: 583) -rg (lines) 0.310 +/- 0.046 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg* 1.202 +/- 0.006 (lines: 604)* -rg (lines) 1.285 +/- 0.006 (lines: 604) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.274 +/- 0.017 (lines: 0)* -rg 0.374 +/- 0.015 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.391 +/- 0.097 (lines: 41) -rg (ASCII)* 2.952 +/- 0.118 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.355 +/- 0.055 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/raw.csv deleted file mode 100644 index b03650a9a..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/raw.csv +++ /dev/null @@ -1,157 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09816598892211914,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08965039253234863,68, -linux_alternates,1,3,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09101128578186035,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07472872734069824,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07628297805786133,68, -linux_alternates,1,3,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07189559936523438,68, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10288548469543457,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10204243659973145,160, -linux_alternates_casei,1,3,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1031193733215332,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08190178871154785,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08523178100585938,160, -linux_alternates_casei,1,3,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.07952761650085449,160, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06972551345825195,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.0691523551940918,16, -linux_literal,1,3,rg (ignore),rg -n PM_RESUME,0.06865429878234863,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.39247632026672363,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.4009978771209717,16, -linux_literal,1,3,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.40122294425964355,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.062048912048339844,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.05932760238647461,16, -linux_literal,1,3,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.058171749114990234,16, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.08261799812316895,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.0780181884765625,370, -linux_literal_casei,1,3,rg (ignore),rg -n -i PM_RESUME,0.07934045791625977,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.4008915424346924,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.3899986743927002,370, -linux_literal_casei,1,3,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.39725732803344727,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.07104611396789551,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.0707247257232666,370, -linux_literal_casei,1,3,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.06864142417907715,370, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06764745712280273,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.06994485855102539,16, -linux_literal_default,1,3,rg,rg PM_RESUME,0.0682222843170166,16, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.27941250801086426,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.31389880180358887,490, -linux_no_literal,1,3,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.30502963066101074,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16565680503845215,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16579079627990723,490, -linux_no_literal,1,3,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.169691801071167,490, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2969038486480713,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2995884418487549,419, -linux_no_literal,1,3,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.27426910400390625,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15207958221435547,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15367984771728516,419, -linux_no_literal,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15249848365783691,419, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07145977020263672,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.07139325141906738,1652, -linux_re_literal_suffix,1,3,rg (ignore),rg -n [A-Z]+_RESUME,0.0708932876586914,1652, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.05987191200256348,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06223797798156738,1630, -linux_re_literal_suffix,1,3,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.06115579605102539,1630, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16427040100097656,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.16524410247802734,23, -linux_unicode_greek,1,3,rg,rg -n \p{Greek},0.1664714813232422,23, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16639113426208496,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16803503036499023,103, -linux_unicode_greek_casei,1,3,rg,rg -n -i \p{Greek},0.16656923294067383,103, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07580804824829102,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07589507102966309,186, -linux_unicode_word,1,3,rg (ignore),rg -n \wAh,0.07574295997619629,186, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07641291618347168,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07523059844970703,174, -linux_unicode_word,1,3,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.07748007774353027,174, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06804847717285156,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06720519065856934,180, -linux_unicode_word,1,3,rg (whitelist),rg -n --no-ignore -tall \wAh,0.06687021255493164,180, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06528687477111816,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.07101035118103027,168, -linux_unicode_word,1,3,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.06446981430053711,168, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07159972190856934,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.0695488452911377,6, -linux_word,1,3,rg (ignore),rg -n -w PM_RESUME,0.07082796096801758,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06297016143798828,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06128263473510742,6, -linux_word,1,3,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.06177973747253418,6, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.36841607093811035,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.30306172370910645,848, -subtitles_en_alternate,1,3,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3288271427154541,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3186373710632324,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23814082145690918,848, -subtitles_en_alternate,1,3,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23152780532836914,848, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2480580806732178,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.2288904190063477,862, -subtitles_en_alternate_casei,1,3,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.287020206451416,862, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21738362312316895,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.16032648086547852,629, -subtitles_en_literal,1,3,rg,rg Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.15392351150512695,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21230578422546387,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27013158798217773,629, -subtitles_en_literal,1,3,rg (no mmap),rg --no-mmap Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19994258880615234,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2728753089904785,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23652935028076172,629, -subtitles_en_literal,1,3,rg (lines),rg -n Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2579770088195801,629, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3031468391418457,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.40822505950927734,642, -subtitles_en_literal_casei,1,3,rg,rg -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.38727545738220215,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4260599613189697,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4490511417388916,642, -subtitles_en_literal_casei,1,3,rg (lines),rg -n -i Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.49449872970581055,642, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2707977294921875,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2691836357116699,629, -subtitles_en_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.24464011192321777,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22373199462890625,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.25702810287475586,629, -subtitles_en_literal_word,1,3,rg,rg -nw Sherlock Holmes /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23047828674316406,629, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.139404773712158,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0484464168548584,13, -subtitles_en_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.0293972492218018,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.840238094329834,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7812306880950928,13, -subtitles_en_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7657690048217773,13, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.26054978370666504,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2869753837585449,317, -subtitles_en_surrounding_words,1,3,rg,rg -n \w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22949600219726562,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21858429908752441,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2064223289489746,317, -subtitles_en_surrounding_words,1,3,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20789289474487305,317, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.313758373260498,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2925219535827637,691, -subtitles_ru_alternate,1,3,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3444299697875977,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.264918565750122,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.30733060836792,691, -subtitles_ru_alternate,1,3,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1466560363769531,691, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.783818244934082,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.76894474029541,735, -subtitles_ru_alternate_casei,1,3,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.788987398147583,735, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2822730541229248,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.25232434272766113,583, -subtitles_ru_literal,1,3,rg,rg Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2563645839691162,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.34694504737854004,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3202054500579834,583, -subtitles_ru_literal,1,3,rg (no mmap),rg --no-mmap Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3236703872680664,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.36035776138305664,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3270585536956787,583, -subtitles_ru_literal,1,3,rg (lines),rg -n Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3121967315673828,583, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0397696495056152,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.158402442932129,604, -subtitles_ru_literal_casei,1,3,rg,rg -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1158676147460938,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.2041549682617188,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1511006355285645,604, -subtitles_ru_literal_casei,1,3,rg (lines),rg -n -i Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1794021129608154,604, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.19694828987121582,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.1980271339416504,, -subtitles_ru_literal_word,1,3,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2128591537475586,, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3568108081817627,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3353869915008545,579, -subtitles_ru_literal_word,1,3,rg,rg -nw Шерлок Холмс /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3075387477874756,579, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.5629587173461914,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.5984435081481934,41, -subtitles_ru_no_literal,1,3,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.4725229740142822,41, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.170077323913574,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.064476490020752,, -subtitles_ru_no_literal,1,3,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.159156084060669,, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3924906253814697,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3874075412750244,278, -subtitles_ru_surrounding_words,1,3,rg,rg -n \w+\s+Холмс\s+\w+ /data/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.39940643310546875,278, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/summary deleted file mode 100644 index f4a7451de..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2016-12-30-archlinux-cheetah/summary +++ /dev/null @@ -1,126 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.093 +/- 0.005 (lines: 68) -rg (whitelist)* 0.074 +/- 0.002 (lines: 68)* - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.103 +/- 0.001 (lines: 160) -rg (whitelist)* 0.082 +/- 0.003 (lines: 160)* - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore) 0.069 +/- 0.001 (lines: 16) -rg (ignore) (mmap) 0.398 +/- 0.005 (lines: 16) -rg (whitelist)* 0.060 +/- 0.002 (lines: 16)* - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.080 +/- 0.002 (lines: 370) -rg (ignore) (mmap) 0.396 +/- 0.006 (lines: 370) -rg (whitelist)* 0.070 +/- 0.001 (lines: 370)* - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.069 +/- 0.001 (lines: 16)* - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.299 +/- 0.018 (lines: 490) -rg (ignore) (ASCII) 0.167 +/- 0.002 (lines: 490) -rg (whitelist) 0.290 +/- 0.014 (lines: 419) -rg (whitelist) (ASCII)* 0.153 +/- 0.001 (lines: 419)* - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.071 +/- 0.000 (lines: 1652) -rg (whitelist)* 0.061 +/- 0.001 (lines: 1630)* - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.165 +/- 0.001 (lines: 23)* - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.167 +/- 0.001 (lines: 103)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.076 +/- 0.000 (lines: 186) -rg (ignore) (ASCII) 0.076 +/- 0.001 (lines: 174) -rg (whitelist) 0.067 +/- 0.001 (lines: 180) -rg (whitelist) (ASCII)* 0.067 +/- 0.004 (lines: 168)* - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.071 +/- 0.001 (lines: 6) -rg (whitelist)* 0.062 +/- 0.001 (lines: 6)* - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.333 +/- 0.033 (lines: 848) -rg* 0.263 +/- 0.048 (lines: 848)* - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -rg* 2.255 +/- 0.030 (lines: 862)* - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.177 +/- 0.035 (lines: 629)* -rg (no mmap) 0.227 +/- 0.037 (lines: 629) -rg (lines) 0.256 +/- 0.018 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.366 +/- 0.056 (lines: 642)* -rg (lines) 0.457 +/- 0.035 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII) 0.262 +/- 0.015 (lines: 629) -rg* 0.237 +/- 0.018 (lines: 629)* - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.072 +/- 0.059 (lines: 13) -rg (ASCII)* 1.796 +/- 0.039 (lines: 13)* - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.259 +/- 0.029 (lines: 317) -rg (ASCII)* 0.211 +/- 0.007 (lines: 317)* - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.317 +/- 0.026 (lines: 691) -rg* 1.240 +/- 0.083 (lines: 691)* - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -rg* 3.781 +/- 0.010 (lines: 735)* - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.264 +/- 0.016 (lines: 583)* -rg (no mmap) 0.330 +/- 0.015 (lines: 583) -rg (lines) 0.333 +/- 0.025 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg* 1.105 +/- 0.060 (lines: 604)* -rg (lines) 1.178 +/- 0.027 (lines: 604) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.203 +/- 0.009 (lines: 0)* -rg 0.333 +/- 0.025 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.545 +/- 0.065 (lines: 41) -rg (ASCII)* 3.131 +/- 0.058 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.393 +/- 0.006 (lines: 278)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/README b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/README deleted file mode 100644 index 4dcc4b554..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/README +++ /dev/null @@ -1,59 +0,0 @@ -This directory contains updated benchmarks as of 2018-01-08. They were captured -via the benchsuite script at `benchsuite/benchsuite` from the root of this -repository. The command that was run: - - $ ./benchsuite \ - --dir /tmp/benchsuite \ - --raw runs/2018-01-08-archlinux-cheetah/raw.csv \ - --warmup-iter 1 \ - --bench-iter 5 - -These results are most directly comparable to the -`2016-09-22-archlinux-cheetah` run in the parent directory. - -The versions of each tool are as follows: - - $ grep -V - grep (GNU grep) 3.1 - - $ ag -V - ag version 2.1.0 - Features: - +jit +lzma +zlib - - $ sift -V - sift 0.8.0 (linux/amd64) - built from commit 2ca94717 (which seems to be 0.9.0) - - $ pt --version - pt version 2.1.4 - - $ ucg -V - UniversalCodeGrep 0.3.3 - [...] - Build info - - Repo version: 0.3.3-251-g9b5a3e3 - - Compiler info: - Name ($(CXX)): "g++ -std=gnu++1z" - Version string: "g++ (GCC) 7.2.1 20171224" - - ISA extensions in use: - sse4.2: yes - popcnt: yes - - libpcre info: - Not linked against libpcre. - - libpcre2-8 info: - Version: 10.30 2017-08-14 - JIT support built in?: yes - JIT target architecture: x86 64bit (little endian + unaligned) - Newline style: LF - -The version of ripgrep was compiled from source on commit 85d463c0, with the -simd-accel and avx-accel features enabled: - - $ export RUSTFLAGS="-C target-cpu=native" - $ cargo build --release --features 'simd-accel avx-accel' diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/raw.csv deleted file mode 100644 index 99ea232d5..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/raw.csv +++ /dev/null @@ -1,806 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_alternates,1,5,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10186767578125,68, -linux_alternates,1,5,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10199356079101562,68, -linux_alternates,1,5,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09750819206237793,68, -linux_alternates,1,5,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09634733200073242,68, -linux_alternates,1,5,rg (ignore),rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.10117292404174805,68, -linux_alternates,1,5,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.49642109870910645,68, -linux_alternates,1,5,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.48993706703186035,68, -linux_alternates,1,5,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4837028980255127,68, -linux_alternates,1,5,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.4773833751678467,68, -linux_alternates,1,5,ag (ignore),ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.558436393737793,68, -linux_alternates,1,5,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2605454921722412,68,LC_ALL=C -linux_alternates,1,5,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.26748204231262207,68,LC_ALL=C -linux_alternates,1,5,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.26719212532043457,68,LC_ALL=C -linux_alternates,1,5,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2719383239746094,68,LC_ALL=C -linux_alternates,1,5,git grep (ignore),git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.26963257789611816,68,LC_ALL=C -linux_alternates,1,5,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.08797001838684082,68, -linux_alternates,1,5,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09073781967163086,68, -linux_alternates,1,5,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0914468765258789,68, -linux_alternates,1,5,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09071612358093262,68, -linux_alternates,1,5,rg (whitelist),rg --no-ignore -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.0914316177368164,68, -linux_alternates,1,5,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1372535228729248,68, -linux_alternates,1,5,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.13880419731140137,68, -linux_alternates,1,5,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.13315439224243164,68, -linux_alternates,1,5,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1367807388305664,68, -linux_alternates,1,5,ucg (whitelist),ucg --nosmart-case ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.13135552406311035,68, -linux_alternates_casei,1,5,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.12781810760498047,160, -linux_alternates_casei,1,5,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.11988544464111328,160, -linux_alternates_casei,1,5,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1205439567565918,160, -linux_alternates_casei,1,5,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.12867259979248047,160, -linux_alternates_casei,1,5,rg (ignore),rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.1215970516204834,160, -linux_alternates_casei,1,5,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5444357395172119,160, -linux_alternates_casei,1,5,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5511739253997803,160, -linux_alternates_casei,1,5,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5382294654846191,160, -linux_alternates_casei,1,5,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5499558448791504,160, -linux_alternates_casei,1,5,ag (ignore),ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6376545429229736,160, -linux_alternates_casei,1,5,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9767155647277832,160,LC_ALL=C -linux_alternates_casei,1,5,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.920574426651001,160,LC_ALL=C -linux_alternates_casei,1,5,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9352290630340576,160,LC_ALL=C -linux_alternates_casei,1,5,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.8866012096405029,160,LC_ALL=C -linux_alternates_casei,1,5,git grep (ignore),git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9189445972442627,160,LC_ALL=C -linux_alternates_casei,1,5,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09351730346679688,160, -linux_alternates_casei,1,5,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09393739700317383,160, -linux_alternates_casei,1,5,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09986448287963867,160, -linux_alternates_casei,1,5,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09596824645996094,160, -linux_alternates_casei,1,5,rg (whitelist),rg --no-ignore -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.09604883193969727,160, -linux_alternates_casei,1,5,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.23943114280700684,160, -linux_alternates_casei,1,5,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2587015628814697,160, -linux_alternates_casei,1,5,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2543606758117676,160, -linux_alternates_casei,1,5,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.2490406036376953,160, -linux_alternates_casei,1,5,ucg (whitelist),ucg -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.24046540260314941,160, -linux_literal,1,5,rg (ignore),rg -n PM_RESUME,0.08253765106201172,16, -linux_literal,1,5,rg (ignore),rg -n PM_RESUME,0.08176755905151367,16, -linux_literal,1,5,rg (ignore),rg -n PM_RESUME,0.08141684532165527,16, -linux_literal,1,5,rg (ignore),rg -n PM_RESUME,0.08108830451965332,16, -linux_literal,1,5,rg (ignore),rg -n PM_RESUME,0.08082938194274902,16, -linux_literal,1,5,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.6870582103729248,16, -linux_literal,1,5,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.807842493057251,16, -linux_literal,1,5,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.8129942417144775,16, -linux_literal,1,5,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.7582321166992188,16, -linux_literal,1,5,rg (ignore) (mmap),rg -n --mmap PM_RESUME,0.6869800090789795,16, -linux_literal,1,5,ag (ignore) (mmap),ag -s PM_RESUME,0.6534101963043213,16, -linux_literal,1,5,ag (ignore) (mmap),ag -s PM_RESUME,0.6020612716674805,16, -linux_literal,1,5,ag (ignore) (mmap),ag -s PM_RESUME,0.6712157726287842,16, -linux_literal,1,5,ag (ignore) (mmap),ag -s PM_RESUME,0.6267571449279785,16, -linux_literal,1,5,ag (ignore) (mmap),ag -s PM_RESUME,0.505136251449585,16, -linux_literal,1,5,pt (ignore),pt PM_RESUME,0.21415948867797852,16, -linux_literal,1,5,pt (ignore),pt PM_RESUME,0.19318318367004395,16, -linux_literal,1,5,pt (ignore),pt PM_RESUME,0.21352124214172363,16, -linux_literal,1,5,pt (ignore),pt PM_RESUME,0.18979454040527344,16, -linux_literal,1,5,pt (ignore),pt PM_RESUME,0.16629600524902344,16, -linux_literal,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.46967077255249023,16, -linux_literal,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.46343088150024414,16, -linux_literal,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.4723978042602539,16, -linux_literal,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.4741063117980957,16, -linux_literal,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git PM_RESUME,0.4613051414489746,16, -linux_literal,1,5,git grep (ignore),git grep -I -n PM_RESUME,0.20196986198425293,16,LC_ALL=C -linux_literal,1,5,git grep (ignore),git grep -I -n PM_RESUME,0.18932533264160156,16,LC_ALL=C -linux_literal,1,5,git grep (ignore),git grep -I -n PM_RESUME,0.19396305084228516,16,LC_ALL=C -linux_literal,1,5,git grep (ignore),git grep -I -n PM_RESUME,0.1952073574066162,16,LC_ALL=C -linux_literal,1,5,git grep (ignore),git grep -I -n PM_RESUME,0.20149731636047363,16,LC_ALL=C -linux_literal,1,5,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.08270478248596191,16, -linux_literal,1,5,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.08414745330810547,16, -linux_literal,1,5,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.08627724647521973,16, -linux_literal,1,5,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.08978700637817383,16, -linux_literal,1,5,rg (whitelist),rg -n --no-ignore -tall PM_RESUME,0.0836489200592041,16, -linux_literal,1,5,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.15774202346801758,16, -linux_literal,1,5,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.16005396842956543,16, -linux_literal,1,5,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.15743708610534668,16, -linux_literal,1,5,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.16156601905822754,16, -linux_literal,1,5,ucg (whitelist),ucg --nosmart-case PM_RESUME,0.1557624340057373,16, -linux_literal_casei,1,5,rg (ignore),rg -n -i PM_RESUME,0.1028127670288086,374, -linux_literal_casei,1,5,rg (ignore),rg -n -i PM_RESUME,0.10258054733276367,374, -linux_literal_casei,1,5,rg (ignore),rg -n -i PM_RESUME,0.10902261734008789,374, -linux_literal_casei,1,5,rg (ignore),rg -n -i PM_RESUME,0.10802555084228516,374, -linux_literal_casei,1,5,rg (ignore),rg -n -i PM_RESUME,0.10153412818908691,374, -linux_literal_casei,1,5,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.7902817726135254,374, -linux_literal_casei,1,5,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.7985179424285889,374, -linux_literal_casei,1,5,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.8208649158477783,374, -linux_literal_casei,1,5,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.7937076091766357,374, -linux_literal_casei,1,5,rg (ignore) (mmap),rg -n -i --mmap PM_RESUME,0.7936429977416992,374, -linux_literal_casei,1,5,ag (ignore) (mmap),ag -i PM_RESUME,0.5215470790863037,374, -linux_literal_casei,1,5,ag (ignore) (mmap),ag -i PM_RESUME,0.46518707275390625,374, -linux_literal_casei,1,5,ag (ignore) (mmap),ag -i PM_RESUME,0.4467353820800781,374, -linux_literal_casei,1,5,ag (ignore) (mmap),ag -i PM_RESUME,0.4595184326171875,374, -linux_literal_casei,1,5,ag (ignore) (mmap),ag -i PM_RESUME,0.4531285762786865,374, -linux_literal_casei,1,5,pt (ignore),pt -i PM_RESUME,14.187762022018433,374, -linux_literal_casei,1,5,pt (ignore),pt -i PM_RESUME,14.178058385848999,374, -linux_literal_casei,1,5,pt (ignore),pt -i PM_RESUME,14.096448421478271,374, -linux_literal_casei,1,5,pt (ignore),pt -i PM_RESUME,14.190524339675903,374, -linux_literal_casei,1,5,pt (ignore),pt -i PM_RESUME,14.231573343276978,374, -linux_literal_casei,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.4668574333190918,374, -linux_literal_casei,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.46050214767456055,374, -linux_literal_casei,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.46228861808776855,374, -linux_literal_casei,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.44957947731018066,374, -linux_literal_casei,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git PM_RESUME,0.4612581729888916,374, -linux_literal_casei,1,5,git grep (ignore),git grep -I -n -i PM_RESUME,0.1932981014251709,370,LC_ALL=C -linux_literal_casei,1,5,git grep (ignore),git grep -I -n -i PM_RESUME,0.20561552047729492,370,LC_ALL=C -linux_literal_casei,1,5,git grep (ignore),git grep -I -n -i PM_RESUME,0.19516706466674805,370,LC_ALL=C -linux_literal_casei,1,5,git grep (ignore),git grep -I -n -i PM_RESUME,0.20196247100830078,370,LC_ALL=C -linux_literal_casei,1,5,git grep (ignore),git grep -I -n -i PM_RESUME,0.19236421585083008,370,LC_ALL=C -linux_literal_casei,1,5,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.09555959701538086,370, -linux_literal_casei,1,5,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.09589338302612305,370, -linux_literal_casei,1,5,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.09479856491088867,370, -linux_literal_casei,1,5,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.09741568565368652,370, -linux_literal_casei,1,5,rg (whitelist),rg -n -i --no-ignore -tall PM_RESUME,0.10127615928649902,370, -linux_literal_casei,1,5,ucg (whitelist),ucg -i PM_RESUME,0.15514039993286133,370, -linux_literal_casei,1,5,ucg (whitelist),ucg -i PM_RESUME,0.15668940544128418,370, -linux_literal_casei,1,5,ucg (whitelist),ucg -i PM_RESUME,0.15429425239562988,370, -linux_literal_casei,1,5,ucg (whitelist),ucg -i PM_RESUME,0.15332818031311035,370, -linux_literal_casei,1,5,ucg (whitelist),ucg -i PM_RESUME,0.14861536026000977,370, -linux_literal_default,1,5,rg,rg PM_RESUME,0.08931398391723633,16, -linux_literal_default,1,5,rg,rg PM_RESUME,0.08717465400695801,16, -linux_literal_default,1,5,rg,rg PM_RESUME,0.0879361629486084,16, -linux_literal_default,1,5,rg,rg PM_RESUME,0.08688950538635254,16, -linux_literal_default,1,5,rg,rg PM_RESUME,0.09138607978820801,16, -linux_literal_default,1,5,ag,ag PM_RESUME,0.5342838764190674,16, -linux_literal_default,1,5,ag,ag PM_RESUME,0.47187042236328125,16, -linux_literal_default,1,5,ag,ag PM_RESUME,0.4456596374511719,16, -linux_literal_default,1,5,ag,ag PM_RESUME,0.4507424831390381,16, -linux_literal_default,1,5,ag,ag PM_RESUME,0.44472575187683105,16, -linux_literal_default,1,5,ucg,ucg PM_RESUME,0.15556907653808594,16, -linux_literal_default,1,5,ucg,ucg PM_RESUME,0.1533644199371338,16, -linux_literal_default,1,5,ucg,ucg PM_RESUME,0.15392351150512695,16, -linux_literal_default,1,5,ucg,ucg PM_RESUME,0.1535196304321289,16, -linux_literal_default,1,5,ucg,ucg PM_RESUME,0.15589547157287598,16, -linux_literal_default,1,5,pt,pt PM_RESUME,0.2261514663696289,16, -linux_literal_default,1,5,pt,pt PM_RESUME,0.2731902599334717,16, -linux_literal_default,1,5,pt,pt PM_RESUME,0.2563004493713379,16, -linux_literal_default,1,5,pt,pt PM_RESUME,0.2575085163116455,16, -linux_literal_default,1,5,pt,pt PM_RESUME,0.1724245548248291,16, -linux_literal_default,1,5,sift,sift PM_RESUME,0.13233542442321777,16, -linux_literal_default,1,5,sift,sift PM_RESUME,0.1256580352783203,16, -linux_literal_default,1,5,sift,sift PM_RESUME,0.12435102462768555,16, -linux_literal_default,1,5,sift,sift PM_RESUME,0.1259307861328125,16, -linux_literal_default,1,5,sift,sift PM_RESUME,0.12412142753601074,16, -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.1742086410522461,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.16890597343444824,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.16680669784545898,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.16899871826171875,16,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.19794917106628418,16,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.33940672874450684,490, -linux_no_literal,1,5,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3274960517883301,490, -linux_no_literal,1,5,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32681775093078613,490, -linux_no_literal,1,5,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.32865071296691895,490, -linux_no_literal,1,5,rg (ignore),rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.3240926265716553,490, -linux_no_literal,1,5,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.17426586151123047,490, -linux_no_literal,1,5,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.17265701293945312,490, -linux_no_literal,1,5,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1703634262084961,490, -linux_no_literal,1,5,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.17192435264587402,490, -linux_no_literal,1,5,rg (ignore) (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.1704559326171875,490, -linux_no_literal,1,5,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.8443403244018555,766, -linux_no_literal,1,5,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.6956703662872314,766, -linux_no_literal,1,5,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.6938261985778809,766, -linux_no_literal,1,5,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.695967435836792,766, -linux_no_literal,1,5,ag (ignore) (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.6945271492004395,766, -linux_no_literal,1,5,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.645716428756714,490, -linux_no_literal,1,5,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.441533088684082,490, -linux_no_literal,1,5,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.472522735595703,490, -linux_no_literal,1,5,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.42497444152832,490, -linux_no_literal,1,5,pt (ignore) (ASCII),pt -e \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},12.407486200332642,490, -linux_no_literal,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},9.091489553451538,490, -linux_no_literal,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},9.049214124679565,490, -linux_no_literal,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.879419803619385,490, -linux_no_literal,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},9.07261848449707,490, -linux_no_literal,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.918747901916504,490, -linux_no_literal,1,5,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.334321975708008,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.993232727050781,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.622304916381836,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.35973048210144,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ignore),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},8.39980435371399,490,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},2.0318400859832764,490,LC_ALL=C -linux_no_literal,1,5,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.8587837219238281,490,LC_ALL=C -linux_no_literal,1,5,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.873384714126587,490,LC_ALL=C -linux_no_literal,1,5,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.8111364841461182,490,LC_ALL=C -linux_no_literal,1,5,git grep (ignore) (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},1.8385357856750488,490,LC_ALL=C -linux_no_literal,1,5,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.28792643547058105,458, -linux_no_literal,1,5,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.28545212745666504,458, -linux_no_literal,1,5,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.28576135635375977,458, -linux_no_literal,1,5,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.29883813858032227,458, -linux_no_literal,1,5,rg (whitelist),rg -n --no-ignore -tall \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.28493285179138184,458, -linux_no_literal,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15974783897399902,458, -linux_no_literal,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.15943312644958496,458, -linux_no_literal,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.160233736038208,458, -linux_no_literal,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16201996803283691,458, -linux_no_literal,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.16033530235290527,458, -linux_no_literal,1,5,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.4639148712158203,416, -linux_no_literal,1,5,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.46042823791503906,416, -linux_no_literal,1,5,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.45925426483154297,416, -linux_no_literal,1,5,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.477064847946167,416, -linux_no_literal,1,5,ucg (whitelist) (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.507554292678833,416, -linux_re_literal_suffix,1,5,rg (ignore),rg -n [A-Z]+_RESUME,0.08520364761352539,1652, -linux_re_literal_suffix,1,5,rg (ignore),rg -n [A-Z]+_RESUME,0.08203816413879395,1652, -linux_re_literal_suffix,1,5,rg (ignore),rg -n [A-Z]+_RESUME,0.08355021476745605,1652, -linux_re_literal_suffix,1,5,rg (ignore),rg -n [A-Z]+_RESUME,0.0865166187286377,1652, -linux_re_literal_suffix,1,5,rg (ignore),rg -n [A-Z]+_RESUME,0.08125448226928711,1652, -linux_re_literal_suffix,1,5,ag (ignore),ag -s [A-Z]+_RESUME,0.4846627712249756,1652, -linux_re_literal_suffix,1,5,ag (ignore),ag -s [A-Z]+_RESUME,0.48070311546325684,1652, -linux_re_literal_suffix,1,5,ag (ignore),ag -s [A-Z]+_RESUME,0.4813041687011719,1652, -linux_re_literal_suffix,1,5,ag (ignore),ag -s [A-Z]+_RESUME,0.4755582809448242,1652, -linux_re_literal_suffix,1,5,ag (ignore),ag -s [A-Z]+_RESUME,0.4926290512084961,1652, -linux_re_literal_suffix,1,5,pt (ignore),pt -e [A-Z]+_RESUME,14.124520540237427,1652, -linux_re_literal_suffix,1,5,pt (ignore),pt -e [A-Z]+_RESUME,14.151537656784058,1652, -linux_re_literal_suffix,1,5,pt (ignore),pt -e [A-Z]+_RESUME,14.157994270324707,1652, -linux_re_literal_suffix,1,5,pt (ignore),pt -e [A-Z]+_RESUME,14.102291822433472,1652, -linux_re_literal_suffix,1,5,pt (ignore),pt -e [A-Z]+_RESUME,14.103861093521118,1652, -linux_re_literal_suffix,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,4.182392835617065,1652, -linux_re_literal_suffix,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,4.190829277038574,1652, -linux_re_literal_suffix,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,3.9770240783691406,1652, -linux_re_literal_suffix,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,3.9978606700897217,1652, -linux_re_literal_suffix,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git [A-Z]+_RESUME,4.146454572677612,1652, -linux_re_literal_suffix,1,5,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5080702304840088,1652,LC_ALL=C -linux_re_literal_suffix,1,5,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5281260013580322,1652,LC_ALL=C -linux_re_literal_suffix,1,5,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5350546836853027,1652,LC_ALL=C -linux_re_literal_suffix,1,5,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5474245548248291,1652,LC_ALL=C -linux_re_literal_suffix,1,5,git grep (ignore),git grep -E -I -n [A-Z]+_RESUME,0.5256762504577637,1652,LC_ALL=C -linux_re_literal_suffix,1,5,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.07924222946166992,1630, -linux_re_literal_suffix,1,5,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.0767812728881836,1630, -linux_re_literal_suffix,1,5,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.07874488830566406,1630, -linux_re_literal_suffix,1,5,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.0804905891418457,1630, -linux_re_literal_suffix,1,5,rg (whitelist),rg -n --no-ignore -tall [A-Z]+_RESUME,0.07479119300842285,1630, -linux_re_literal_suffix,1,5,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13643193244934082,1630, -linux_re_literal_suffix,1,5,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13543128967285156,1630, -linux_re_literal_suffix,1,5,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13312768936157227,1630, -linux_re_literal_suffix,1,5,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13562273979187012,1630, -linux_re_literal_suffix,1,5,ucg (whitelist),ucg --nosmart-case [A-Z]+_RESUME,0.13236212730407715,1630, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.17355775833129883,23, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.1676032543182373,23, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.1727275848388672,23, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.17095375061035156,23, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.17271947860717773,23, -linux_unicode_greek,1,5,pt,pt -e \p{Greek},14.14364218711853,23, -linux_unicode_greek,1,5,pt,pt -e \p{Greek},14.137334108352661,23, -linux_unicode_greek,1,5,pt,pt -e \p{Greek},14.083475351333618,23, -linux_unicode_greek,1,5,pt,pt -e \p{Greek},14.095231056213379,23, -linux_unicode_greek,1,5,pt,pt -e \p{Greek},14.151906490325928,23, -linux_unicode_greek,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.8376963138580322,23, -linux_unicode_greek,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.8271427154541016,23, -linux_unicode_greek,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.8310961723327637,23, -linux_unicode_greek,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.826141595840454,23, -linux_unicode_greek,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \p{Greek},2.805818796157837,23, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.16843819618225098,103, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.1704998016357422,103, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.17055058479309082,103, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.17064881324768066,103, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.1699228286743164,103, -linux_unicode_greek_casei,1,5,pt,pt -i -e \p{Greek},14.164355993270874,23, -linux_unicode_greek_casei,1,5,pt,pt -i -e \p{Greek},14.099931478500366,23, -linux_unicode_greek_casei,1,5,pt,pt -i -e \p{Greek},14.155095338821411,23, -linux_unicode_greek_casei,1,5,pt,pt -i -e \p{Greek},14.109308004379272,23, -linux_unicode_greek_casei,1,5,pt,pt -i -e \p{Greek},14.072362422943115,23, -linux_unicode_greek_casei,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.003945589065551758,, -linux_unicode_greek_casei,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.004189729690551758,, -linux_unicode_greek_casei,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.0034589767456054688,, -linux_unicode_greek_casei,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.003614187240600586,, -linux_unicode_greek_casei,1,5,sift,sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -i --git \p{Greek},0.003975629806518555,, -linux_unicode_word,1,5,rg (ignore),rg -n \wAh,0.09798526763916016,186, -linux_unicode_word,1,5,rg (ignore),rg -n \wAh,0.09575009346008301,186, -linux_unicode_word,1,5,rg (ignore),rg -n \wAh,0.10181760787963867,186, -linux_unicode_word,1,5,rg (ignore),rg -n \wAh,0.09650158882141113,186, -linux_unicode_word,1,5,rg (ignore),rg -n \wAh,0.09717488288879395,186, -linux_unicode_word,1,5,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.09417867660522461,174, -linux_unicode_word,1,5,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.09903812408447266,174, -linux_unicode_word,1,5,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.09407877922058105,174, -linux_unicode_word,1,5,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.09681963920593262,174, -linux_unicode_word,1,5,rg (ignore) (ASCII),rg -n (?-u)\wAh,0.09762454032897949,174, -linux_unicode_word,1,5,ag (ignore) (ASCII),ag -s \wAh,0.5779609680175781,174, -linux_unicode_word,1,5,ag (ignore) (ASCII),ag -s \wAh,0.635645866394043,174, -linux_unicode_word,1,5,ag (ignore) (ASCII),ag -s \wAh,0.6109263896942139,174, -linux_unicode_word,1,5,ag (ignore) (ASCII),ag -s \wAh,0.6260912418365479,174, -linux_unicode_word,1,5,ag (ignore) (ASCII),ag -s \wAh,0.6823546886444092,174, -linux_unicode_word,1,5,pt (ignore) (ASCII),pt -e \wAh,14.178487062454224,174, -linux_unicode_word,1,5,pt (ignore) (ASCII),pt -e \wAh,14.190000057220459,174, -linux_unicode_word,1,5,pt (ignore) (ASCII),pt -e \wAh,14.16363000869751,174, -linux_unicode_word,1,5,pt (ignore) (ASCII),pt -e \wAh,14.160430431365967,174, -linux_unicode_word,1,5,pt (ignore) (ASCII),pt -e \wAh,14.2189621925354,174, -linux_unicode_word,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.17629337310791,174, -linux_unicode_word,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.051238059997559,174, -linux_unicode_word,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.323853015899658,174, -linux_unicode_word,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.085661172866821,174, -linux_unicode_word,1,5,sift (ignore) (ASCII),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n --git \wAh,4.036486625671387,174, -linux_unicode_word,1,5,git grep (ignore),git grep -E -I -n \wAh,4.620476961135864,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ignore),git grep -E -I -n \wAh,4.536192417144775,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ignore),git grep -E -I -n \wAh,4.510494232177734,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ignore),git grep -E -I -n \wAh,6.001620769500732,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ignore),git grep -E -I -n \wAh,4.602652311325073,186,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.3785994052886963,174,LC_ALL=C -linux_unicode_word,1,5,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.4163663387298584,174,LC_ALL=C -linux_unicode_word,1,5,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.402677297592163,174,LC_ALL=C -linux_unicode_word,1,5,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.3327512741088867,174,LC_ALL=C -linux_unicode_word,1,5,git grep (ignore) (ASCII),git grep -E -I -n \wAh,1.3501760959625244,174,LC_ALL=C -linux_unicode_word,1,5,rg (whitelist),rg -n --no-ignore -tall \wAh,0.07958698272705078,180, -linux_unicode_word,1,5,rg (whitelist),rg -n --no-ignore -tall \wAh,0.0798649787902832,180, -linux_unicode_word,1,5,rg (whitelist),rg -n --no-ignore -tall \wAh,0.08086204528808594,180, -linux_unicode_word,1,5,rg (whitelist),rg -n --no-ignore -tall \wAh,0.0814356803894043,180, -linux_unicode_word,1,5,rg (whitelist),rg -n --no-ignore -tall \wAh,0.08273720741271973,180, -linux_unicode_word,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.08280825614929199,168, -linux_unicode_word,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.08074021339416504,168, -linux_unicode_word,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.0821676254272461,168, -linux_unicode_word,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.07926368713378906,168, -linux_unicode_word,1,5,rg (whitelist) (ASCII),rg -n --no-ignore -tall (?-u)\wAh,0.08405280113220215,168, -linux_unicode_word,1,5,ucg (ASCII),ucg --nosmart-case \wAh,0.1545090675354004,168, -linux_unicode_word,1,5,ucg (ASCII),ucg --nosmart-case \wAh,0.1517190933227539,168, -linux_unicode_word,1,5,ucg (ASCII),ucg --nosmart-case \wAh,0.15704965591430664,168, -linux_unicode_word,1,5,ucg (ASCII),ucg --nosmart-case \wAh,0.15523767471313477,168, -linux_unicode_word,1,5,ucg (ASCII),ucg --nosmart-case \wAh,0.1582942008972168,168, -linux_word,1,5,rg (ignore),rg -n -w PM_RESUME,0.09102368354797363,6, -linux_word,1,5,rg (ignore),rg -n -w PM_RESUME,0.08986210823059082,6, -linux_word,1,5,rg (ignore),rg -n -w PM_RESUME,0.08989477157592773,6, -linux_word,1,5,rg (ignore),rg -n -w PM_RESUME,0.0895695686340332,6, -linux_word,1,5,rg (ignore),rg -n -w PM_RESUME,0.09547114372253418,6, -linux_word,1,5,ag (ignore),ag -s -w PM_RESUME,0.4948008060455322,6, -linux_word,1,5,ag (ignore),ag -s -w PM_RESUME,0.45710110664367676,6, -linux_word,1,5,ag (ignore),ag -s -w PM_RESUME,0.44803452491760254,6, -linux_word,1,5,ag (ignore),ag -s -w PM_RESUME,0.44779396057128906,6, -linux_word,1,5,ag (ignore),ag -s -w PM_RESUME,0.4563112258911133,6, -linux_word,1,5,pt (ignore),pt -w PM_RESUME,14.233235597610474,6, -linux_word,1,5,pt (ignore),pt -w PM_RESUME,14.277648687362671,6, -linux_word,1,5,pt (ignore),pt -w PM_RESUME,14.218127727508545,6, -linux_word,1,5,pt (ignore),pt -w PM_RESUME,14.171622037887573,6, -linux_word,1,5,pt (ignore),pt -w PM_RESUME,14.214240312576294,6, -linux_word,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.1536731719970703,6, -linux_word,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.2415099143981934,6, -linux_word,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.2526626586914062,6, -linux_word,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.2590816020965576,6, -linux_word,1,5,sift (ignore),sift --binary-skip --exclude-files .* --exclude-files *.pdf -n -w --git PM_RESUME,3.222473621368408,6, -linux_word,1,5,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.16982412338256836,6,LC_ALL=C -linux_word,1,5,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.16739583015441895,6,LC_ALL=C -linux_word,1,5,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.16866540908813477,6,LC_ALL=C -linux_word,1,5,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.18207120895385742,6,LC_ALL=C -linux_word,1,5,git grep (ignore),git grep -E -I -n -w PM_RESUME,0.17716264724731445,6,LC_ALL=C -linux_word,1,5,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.07490420341491699,6, -linux_word,1,5,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.07714152336120605,6, -linux_word,1,5,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.07552146911621094,6, -linux_word,1,5,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.07651710510253906,6, -linux_word,1,5,rg (whitelist),rg -n -w --no-ignore -tall PM_RESUME,0.0757131576538086,6, -linux_word,1,5,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.1530015468597412,6, -linux_word,1,5,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.15152239799499512,6, -linux_word,1,5,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.1571195125579834,6, -linux_word,1,5,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.15993595123291016,6, -linux_word,1,5,ucg (whitelist),ucg --nosmart-case -w PM_RESUME,0.15633797645568848,6, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.33371877670288086,848, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3207988739013672,848, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3301675319671631,848, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.29731154441833496,848, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2711911201477051,848, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.186570405960083,848, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.1659939289093018,848, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.187847137451172,848, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.3522064685821533,848, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.316105842590332,848, -subtitles_en_alternate,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1400718688964844,848, -subtitles_en_alternate,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1492774486541748,848, -subtitles_en_alternate,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1337254047393799,848, -subtitles_en_alternate,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1037378311157227,848, -subtitles_en_alternate,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1312851905822754,848, -subtitles_en_alternate,1,5,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8294000625610352,848,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.808884620666504,848,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8134734630584717,848,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8405649662017822,848,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -an Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.8500289916992188,848,LC_ALL=C -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21175312995910645,848, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2118232250213623,848, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21287035942077637,848, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21167230606079102,848, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.28102636337280273,848, -subtitles_en_alternate,1,5,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5029187202453613,848,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.49977445602417,848,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.508340835571289,848,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5002548694610596,848,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E -a Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.629526138305664,848,LC_ALL=C -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.730497360229492,862, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.781018018722534,862, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.7858059406280518,862, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.7127914428710938,862, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.717308759689331,862, -subtitles_en_alternate_casei,1,5,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.428208351135254,862, -subtitles_en_alternate_casei,1,5,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.389420509338379,862, -subtitles_en_alternate_casei,1,5,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.403301954269409,862, -subtitles_en_alternate_casei,1,5,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.4691550731658936,862, -subtitles_en_alternate_casei,1,5,ucg (ASCII),ucg -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.4245004653930664,862, -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.978189706802368,862,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.974303722381592,862,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.982886552810669,862,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.90018630027771,862,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.0078439712524414,862,LC_ALL=C -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9129142761230469,862, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9066660404205322,862, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.946380615234375,862, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9672930240631104,862, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.028451919555664,862, -subtitles_en_alternate_casei,1,5,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.9427030086517334,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.938739061355591,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.921248435974121,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.9194068908691406,862,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ani Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,2.917184829711914,862,LC_ALL=en_US.UTF-8 -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.12293672561645508,629, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1259000301361084,629, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.12285709381103516,629, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.12280964851379395,629, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1547396183013916,629, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.22011375427246094,629, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23095202445983887,629, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2577846050262451,629, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2563819885253906,629, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.24869346618652344,629, -subtitles_en_literal,1,5,pt,pt -N Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.415337324142456,629, -subtitles_en_literal,1,5,pt,pt -N Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4208543300628662,629, -subtitles_en_literal,1,5,pt,pt -N Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.416351079940796,629, -subtitles_en_literal,1,5,pt,pt -N Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4270708560943604,629, -subtitles_en_literal,1,5,pt,pt -N Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4243996143341064,629, -subtitles_en_literal,1,5,sift,sift Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2245020866394043,629, -subtitles_en_literal,1,5,sift,sift Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2382345199584961,629, -subtitles_en_literal,1,5,sift,sift Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.23533034324645996,629, -subtitles_en_literal,1,5,sift,sift Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2577829360961914,629, -subtitles_en_literal,1,5,sift,sift Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2599349021911621,629, -subtitles_en_literal,1,5,grep,grep -a Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4733700752258301,629,LC_ALL=C -subtitles_en_literal,1,5,grep,grep -a Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4598572254180908,629,LC_ALL=C -subtitles_en_literal,1,5,grep,grep -a Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5303301811218262,629,LC_ALL=C -subtitles_en_literal,1,5,grep,grep -a Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4775106906890869,629,LC_ALL=C -subtitles_en_literal,1,5,grep,grep -a Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4881136417388916,629,LC_ALL=C -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20051789283752441,629, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17326998710632324,629, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.20733428001403809,629, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.189713716506958,629, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17817258834838867,629, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5327835083007812,629, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5411181449890137,629, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.600783109664917,629, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5838911533355713,629, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6051928997039795,629, -subtitles_en_literal,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4090385437011719,629, -subtitles_en_literal,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3816399574279785,629, -subtitles_en_literal,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.38033008575439453,629, -subtitles_en_literal,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3731727600097656,629, -subtitles_en_literal,1,5,ucg (lines),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.38796329498291016,629, -subtitles_en_literal,1,5,pt (lines),pt Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4102630615234375,629, -subtitles_en_literal,1,5,pt (lines),pt Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4137451648712158,629, -subtitles_en_literal,1,5,pt (lines),pt Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.4649333953857422,629, -subtitles_en_literal,1,5,pt (lines),pt Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.430387258529663,629, -subtitles_en_literal,1,5,pt (lines),pt Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.541991949081421,629, -subtitles_en_literal,1,5,sift (lines),sift -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.6231405735015869,629, -subtitles_en_literal,1,5,sift (lines),sift -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5986526012420654,629, -subtitles_en_literal,1,5,sift (lines),sift -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5821917057037354,629, -subtitles_en_literal,1,5,sift (lines),sift -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.6045489311218262,629, -subtitles_en_literal,1,5,sift (lines),sift -n Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5986905097961426,629, -subtitles_en_literal,1,5,grep (lines),grep -an Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8278565406799316,629,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -an Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.777052640914917,629,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -an Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7619414329528809,629,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -an Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8248744010925293,629,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -an Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.824932336807251,629,LC_ALL=C -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.2718961238861084,642, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27082157135009766,642, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.27086758613586426,642, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.274705171585083,642, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3337059020996094,642, -subtitles_en_literal_casei,1,5,grep,grep -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9112112522125244,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.907888650894165,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.912668228149414,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9082865715026855,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.9177796840667725,642,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.6020669937133789,642,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.568228006362915,642,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5648214817047119,642,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5568234920501709,642,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -ai Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.5588953495025635,642,LC_ALL=C -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3486766815185547,642, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.34010815620422363,642, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.33849263191223145,642, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3917088508605957,642, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.39266490936279297,642, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5564041137695312,642, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5533506870269775,642, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6205368041992188,642, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5530028343200684,642, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.6189889907836914,642, -subtitles_en_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3834850788116455,642, -subtitles_en_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.41916346549987793,642, -subtitles_en_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3895289897918701,642, -subtitles_en_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4278140068054199,642, -subtitles_en_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.4013493061065674,642, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17953085899353027,629, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17679834365844727,629, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17448186874389648,629, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.21117281913757324,629, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1848156452178955,629, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5236153602600098,629, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.52512526512146,629, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5218794345855713,629, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5384306907653809,629, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5150353908538818,629, -subtitles_en_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3757903575897217,629, -subtitles_en_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3744041919708252,629, -subtitles_en_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.37261366844177246,629, -subtitles_en_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.40795230865478516,629, -subtitles_en_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.3868849277496338,629, -subtitles_en_literal_word,1,5,grep (ASCII),grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8265349864959717,629,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8123743534088135,629,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7669925689697266,629,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.766636848449707,629,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7665839195251465,629,LC_ALL=C -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1879115104675293,629, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18082356452941895,629, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18497347831726074,629, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1769394874572754,629, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1917715072631836,629, -subtitles_en_literal_word,1,5,grep,grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8192996978759766,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.8193323612213135,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7837738990783691,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7639024257659912,629,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -anw Sherlock Holmes /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.7634689807891846,629,LC_ALL=en_US.UTF-8 -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7922985553741455,13, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7885758876800537,13, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.802325963973999,13, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.792595386505127,13, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.7909605503082275,13, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5903098583221436,13, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5982813835144043,13, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5926671028137207,13, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.5976767539978027,13, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.593153953552246,13, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.614634275436401,48, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.574857473373413,48, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.54079270362854,48, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.600660800933838,48, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,6.531627178192139,48, -subtitles_en_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.361133337020874,13, -subtitles_en_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.456786870956421,13, -subtitles_en_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.403071403503418,13, -subtitles_en_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.398236274719238,13, -subtitles_en_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,5.348573923110962,13, -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.5057969093322754,13,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.4157862663269043,13,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.471182346343994,13,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.4590909481048584,13,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.3759689331054688,13,LC_ALL=C -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18518710136413574,317, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18791556358337402,317, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18598675727844238,317, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18552684783935547,317, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.19262075424194336,317, -subtitles_en_surrounding_words,1,5,grep,grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1321008205413818,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0709969997406006,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.1117346286773682,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0880234241485596,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0745558738708496,317,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.1827528476715088,317, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18874144554138184,317, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17983436584472656,317, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.18831133842468262,317, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,0.17810606956481934,317, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.5957207679748535,323, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.627211570739746,323, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.554431200027466,323, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.492656469345093,323, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,4.443558216094971,323, -subtitles_en_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.522758722305298,317, -subtitles_en_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.502918004989624,317, -subtitles_en_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.6503307819366455,317, -subtitles_en_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.58940052986145,317, -subtitles_en_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,3.569624423980713,317, -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0672054290771484,317,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0729331970214844,317,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.052501916885376,317,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0711696147918701,317,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.sample.en,1.0863316059112549,317,LC_ALL=C -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0312588214874268,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.063939094543457,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0000121593475342,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9842438697814941,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.95733642578125,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7781903743743896,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.861164093017578,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.8268885612487793,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.8621268272399902,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.8216166496276855,691, -subtitles_ru_alternate,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0069098472595215,691, -subtitles_ru_alternate,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.025178909301758,691, -subtitles_ru_alternate,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0631070137023926,691, -subtitles_ru_alternate,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0902633666992188,691, -subtitles_ru_alternate,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0272655487060547,691, -subtitles_ru_alternate,1,5,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.510146617889404,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.541701793670654,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.506088733673096,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.51838755607605,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -an Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.486810684204102,691,LC_ALL=C -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9679937362670898,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9942011833190918,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9233448505401611,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9294781684875488,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8729774951934814,691, -subtitles_ru_alternate,1,5,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.100147485733032,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.075790166854858,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.069685220718384,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.0526063442230225,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E -a Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.129194498062134,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7894201278686523,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7878782749176025,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.796328544616699,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.8249149322509766,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.7949724197387695,691, -subtitles_ru_alternate_casei,1,5,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.075739622116089,691, -subtitles_ru_alternate_casei,1,5,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.013590097427368,691, -subtitles_ru_alternate_casei,1,5,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.012375593185425,691, -subtitles_ru_alternate_casei,1,5,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.023118495941162,691, -subtitles_ru_alternate_casei,1,5,ucg (ASCII),ucg -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0641982555389404,691, -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.467320442199707,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.486851692199707,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.479818344116211,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.516186475753784,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,7.471773862838745,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,11.026185274124146,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,11.168465614318848,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,11.039950370788574,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,11.089850425720215,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,11.112446546554565,735, -subtitles_ru_alternate_casei,1,5,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.822641849517822,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.808355331420898,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.80171275138855,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.794351577758789,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ani Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.844403266906738,735,LC_ALL=en_US.UTF-8 -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.20681476593017578,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.190568208694458,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.18462657928466797,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.1873643398284912,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.20382428169250488,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3085510730743408,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.318758487701416,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3177149295806885,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.31236958503723145,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.31880998611450195,583, -subtitles_ru_literal,1,5,pt,pt -N Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.152938365936279,583, -subtitles_ru_literal,1,5,pt,pt -N Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.124867677688599,583, -subtitles_ru_literal,1,5,pt,pt -N Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.132290363311768,583, -subtitles_ru_literal,1,5,pt,pt -N Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.158328056335449,583, -subtitles_ru_literal,1,5,pt,pt -N Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.1022467613220215,583, -subtitles_ru_literal,1,5,sift,sift Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.807113409042358,583, -subtitles_ru_literal,1,5,sift,sift Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.8178558349609375,583, -subtitles_ru_literal,1,5,sift,sift Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.925220012664795,583, -subtitles_ru_literal,1,5,sift,sift Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.861236333847046,583, -subtitles_ru_literal,1,5,sift,sift Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.763278484344482,583, -subtitles_ru_literal,1,5,grep,grep -a Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.704503059387207,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep -a Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6887199878692627,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep -a Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7092702388763428,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep -a Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6964359283447266,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep -a Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6928379535675049,583,LC_ALL=C -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2646975517272949,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.26806163787841797,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2700214385986328,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2669072151184082,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2656106948852539,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.9972407817840576,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.906053066253662,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.864766836166382,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.7820546627044678,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.7599871158599854,583, -subtitles_ru_literal,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.411653995513916,583, -subtitles_ru_literal,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.394604206085205,583, -subtitles_ru_literal,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.362853765487671,583, -subtitles_ru_literal,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.4795477390289307,583, -subtitles_ru_literal,1,5,ucg (lines),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.4428844451904297,583, -subtitles_ru_literal,1,5,pt (lines),pt Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.122563123703003,583, -subtitles_ru_literal,1,5,pt (lines),pt Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.17008900642395,583, -subtitles_ru_literal,1,5,pt (lines),pt Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.1965367794036865,583, -subtitles_ru_literal,1,5,pt (lines),pt Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.152370929718018,583, -subtitles_ru_literal,1,5,pt (lines),pt Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,5.106513738632202,583, -subtitles_ru_literal,1,5,sift (lines),sift -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.408761978149414,583, -subtitles_ru_literal,1,5,sift (lines),sift -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.423579454421997,583, -subtitles_ru_literal,1,5,sift (lines),sift -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.2807464599609375,583, -subtitles_ru_literal,1,5,sift (lines),sift -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.3771467208862305,583, -subtitles_ru_literal,1,5,sift (lines),sift -n Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.378506422042847,583, -subtitles_ru_literal,1,5,grep (lines),grep -an Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.121800422668457,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -an Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1189923286437988,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -an Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0678138732910156,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -an Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0668041706085205,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -an Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0713574886322021,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9427816867828369,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0397350788116455,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9732518196105957,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9387776851654053,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.9536802768707275,604, -subtitles_ru_literal_casei,1,5,grep,grep -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.338641405105591,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.280565023422241,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.241750240325928,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.316105604171753,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,6.307560205459595,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7379302978515625,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7226619720458984,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.683293342590332,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.714146614074707,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -ai Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7654330730438232,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0237820148468018,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0194151401519775,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0364336967468262,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.035005807876587,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0438766479492188,604, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.619025468826294,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.647244930267334,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6785612106323242,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6503715515136719,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6314499378204346,, -subtitles_ru_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.8302316665649414,583, -subtitles_ru_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7719593048095703,583, -subtitles_ru_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7697594165802002,583, -subtitles_ru_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7312629222869873,583, -subtitles_ru_literal_casei,1,5,ucg (lines) (ASCII),ucg -i Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.767866849899292,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.19411826133728027,, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.18651676177978516,, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.19614577293395996,, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.18459081649780273,, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Шерлок Холмс(?-u:\b) /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.1797487735748291,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6507105827331543,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6480035781860352,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.7138750553131104,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6521759033203125,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.6728894710540771,, -subtitles_ru_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.3646819591522217,583, -subtitles_ru_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.3836848735809326,583, -subtitles_ru_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.419490337371826,583, -subtitles_ru_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.363335609436035,583, -subtitles_ru_literal_word,1,5,ucg (ASCII),ucg --nosmart-case Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.488351345062256,583, -subtitles_ru_literal_word,1,5,grep (ASCII),grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.171506643295288,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.1602776050567627,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.084787368774414,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0714166164398193,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.083632469177246,583,LC_ALL=C -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2769143581390381,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2694058418273926,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.26763367652893066,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2671318054199219,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2922348976135254,579, -subtitles_ru_literal_word,1,5,grep,grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.083528757095337,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0857081413269043,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.07025146484375,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.071930170059204,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -anw Шерлок Холмс /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.0709245204925537,579,LC_ALL=en_US.UTF-8 -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1552906036376953,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.164951801300049,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.175389289855957,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.1861774921417236,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,3.153625011444092,41, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.7353317737579346,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.7592883110046387,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.7242491245269775,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.747089385986328,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.732586145401001,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0796375274658203,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9670393466949463,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9413447380065918,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.916764497756958,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9110031127929688,, -subtitles_ru_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0622072219848633,, -subtitles_ru_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0975682735443115,, -subtitles_ru_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0741493701934814,, -subtitles_ru_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0423810482025146,, -subtitles_ru_no_literal,1,5,ucg (ASCII),ucg --nosmart-case \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.000764846801758,, -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6251120567321777,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.644089698791504,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6416165828704834,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6321892738342285,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -an \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.6264762878417969,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.29879307746887207,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.3226010799407959,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.32187771797180176,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.2825047969818115,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,0.283217191696167,278, -subtitles_ru_surrounding_words,1,5,grep,grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3977878093719482,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4288139343261719,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4054889678955078,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.4003441333770752,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.5269148349761963,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8912529945373535,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9221522808074951,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9416618347167969,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.893650770187378,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.8895554542541504,, -subtitles_ru_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0110745429992676,, -subtitles_ru_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.9790067672729492,, -subtitles_ru_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.0426392555236816,, -subtitles_ru_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.121723175048828,, -subtitles_ru_surrounding_words,1,5,ucg (ASCII),ucg --nosmart-case \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,2.1247596740722656,, -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3579976558685303,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.382859468460083,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.393401861190796,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.474374532699585,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -an \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/OpenSubtitles2016.raw.ru,1.3835601806640625,,LC_ALL=C diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/summary deleted file mode 100644 index 348c0d687..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2018-01-08-archlinux-cheetah/summary +++ /dev/null @@ -1,235 +0,0 @@ -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg (ignore) 0.100 +/- 0.003 (lines: 68) -ag (ignore) 0.501 +/- 0.033 (lines: 68) -git grep (ignore) 0.267 +/- 0.004 (lines: 68) -rg (whitelist)* 0.090 +/- 0.001 (lines: 68)* -ucg (whitelist) 0.135 +/- 0.003 (lines: 68) - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg (ignore) 0.124 +/- 0.004 (lines: 160) -ag (ignore) 0.564 +/- 0.041 (lines: 160) -git grep (ignore) 0.928 +/- 0.033 (lines: 160) -rg (whitelist)* 0.096 +/- 0.003 (lines: 160)* -ucg (whitelist) 0.248 +/- 0.008 (lines: 160) - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg (ignore)* 0.082 +/- 0.001 (lines: 16)* -rg (ignore) (mmap) 0.751 +/- 0.062 (lines: 16) -ag (ignore) (mmap) 0.612 +/- 0.065 (lines: 16) -pt (ignore) 0.195 +/- 0.020 (lines: 16) -sift (ignore) 0.468 +/- 0.006 (lines: 16) -git grep (ignore) 0.196 +/- 0.005 (lines: 16) -rg (whitelist) 0.085 +/- 0.003 (lines: 16) -ucg (whitelist) 0.159 +/- 0.002 (lines: 16) - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg (ignore) 0.105 +/- 0.003 (lines: 374) -rg (ignore) (mmap) 0.799 +/- 0.012 (lines: 374) -ag (ignore) (mmap) 0.469 +/- 0.030 (lines: 374) -pt (ignore) 14.177 +/- 0.049 (lines: 374) -sift (ignore) 0.460 +/- 0.006 (lines: 374) -git grep (ignore) 0.198 +/- 0.006 (lines: 370) -rg (whitelist)* 0.097 +/- 0.003 (lines: 370)* -ucg (whitelist) 0.154 +/- 0.003 (lines: 370) - -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.089 +/- 0.002 (lines: 16)* -ag 0.469 +/- 0.038 (lines: 16) -ucg 0.154 +/- 0.001 (lines: 16) -pt 0.237 +/- 0.040 (lines: 16) -sift 0.126 +/- 0.003 (lines: 16) -git grep 0.175 +/- 0.013 (lines: 16) - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg (ignore) 0.329 +/- 0.006 (lines: 490) -rg (ignore) (ASCII) 0.172 +/- 0.002 (lines: 490) -ag (ignore) (ASCII) 0.725 +/- 0.067 (lines: 766) -pt (ignore) (ASCII) 12.478 +/- 0.097 (lines: 490) -sift (ignore) (ASCII) 9.002 +/- 0.096 (lines: 490) -git grep (ignore) 8.542 +/- 0.277 (lines: 490) -git grep (ignore) (ASCII) 1.883 +/- 0.087 (lines: 490) -rg (whitelist) 0.289 +/- 0.006 (lines: 458) -rg (whitelist) (ASCII)* 0.160 +/- 0.001 (lines: 458)* -ucg (whitelist) (ASCII) 0.474 +/- 0.020 (lines: 416) - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg (ignore) 0.084 +/- 0.002 (lines: 1652) -ag (ignore) 0.483 +/- 0.006 (lines: 1652) -pt (ignore) 14.128 +/- 0.026 (lines: 1652) -sift (ignore) 4.099 +/- 0.103 (lines: 1652) -git grep (ignore) 0.529 +/- 0.014 (lines: 1652) -rg (whitelist)* 0.078 +/- 0.002 (lines: 1630)* -ucg (whitelist) 0.135 +/- 0.002 (lines: 1630) - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.172 +/- 0.002 (lines: 23)* -pt 14.122 +/- 0.031 (lines: 23) -sift 2.826 +/- 0.012 (lines: 23) - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg 0.170 +/- 0.001 (lines: 103) -pt 14.120 +/- 0.039 (lines: 23) -sift* 0.004 +/- 0.000 (lines: 0)* - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg (ignore) 0.098 +/- 0.002 (lines: 186) -rg (ignore) (ASCII) 0.096 +/- 0.002 (lines: 174) -ag (ignore) (ASCII) 0.627 +/- 0.038 (lines: 174) -pt (ignore) (ASCII) 14.182 +/- 0.024 (lines: 174) -sift (ignore) (ASCII) 4.135 +/- 0.119 (lines: 174) -git grep (ignore) 4.854 +/- 0.643 (lines: 186) -git grep (ignore) (ASCII) 1.376 +/- 0.035 (lines: 174) -rg (whitelist) 0.081 +/- 0.001 (lines: 180)* -rg (whitelist) (ASCII)* 0.082 +/- 0.002 (lines: 168) -ucg (ASCII) 0.155 +/- 0.003 (lines: 168) - -linux_word (pattern: PM_RESUME) -------------------------------- -rg (ignore) 0.091 +/- 0.002 (lines: 6) -ag (ignore) 0.461 +/- 0.020 (lines: 6) -pt (ignore) 14.223 +/- 0.038 (lines: 6) -sift (ignore) 3.226 +/- 0.043 (lines: 6) -git grep (ignore) 0.173 +/- 0.006 (lines: 6) -rg (whitelist)* 0.076 +/- 0.001 (lines: 6)* -ucg (whitelist) 0.156 +/- 0.003 (lines: 6) - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.311 +/- 0.026 (lines: 848) -ag (lines) 2.242 +/- 0.086 (lines: 848) -ucg (lines) 1.132 +/- 0.017 (lines: 848) -grep (lines) 1.828 +/- 0.017 (lines: 848) -rg* 0.226 +/- 0.031 (lines: 848)* -grep 1.528 +/- 0.057 (lines: 848) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -ag (ASCII) 3.745 +/- 0.035 (lines: 862) -ucg (ASCII) 2.423 +/- 0.030 (lines: 862) -grep (ASCII) 2.969 +/- 0.040 (lines: 862) -rg* 1.952 +/- 0.049 (lines: 862)* -grep 2.928 +/- 0.012 (lines: 862) - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.130 +/- 0.014 (lines: 629)* -rg (no mmap) 0.243 +/- 0.017 (lines: 629) -pt 1.421 +/- 0.005 (lines: 629) -sift 0.243 +/- 0.015 (lines: 629) -grep 0.486 +/- 0.027 (lines: 629) -rg (lines) 0.190 +/- 0.014 (lines: 629) -ag (lines) 1.573 +/- 0.034 (lines: 629) -ucg (lines) 0.386 +/- 0.014 (lines: 629) -pt (lines) 1.452 +/- 0.055 (lines: 629) -sift (lines) 0.601 +/- 0.015 (lines: 629) -grep (lines) 0.803 +/- 0.031 (lines: 629) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.284 +/- 0.028 (lines: 642)* -grep 1.912 +/- 0.004 (lines: 642) -grep (ASCII) 0.570 +/- 0.018 (lines: 642) -rg (lines) 0.362 +/- 0.028 (lines: 642) -ag (lines) (ASCII) 1.580 +/- 0.036 (lines: 642) -ucg (lines) (ASCII) 0.404 +/- 0.019 (lines: 642) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.185 +/- 0.015 (lines: 629) -ag (ASCII) 1.525 +/- 0.009 (lines: 629) -ucg (ASCII) 0.384 +/- 0.015 (lines: 629) -grep (ASCII) 0.788 +/- 0.029 (lines: 629) -rg 0.184 +/- 0.006 (lines: 629)* -grep 0.790 +/- 0.028 (lines: 629) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 1.793 +/- 0.005 (lines: 13) -rg (ASCII)* 1.594 +/- 0.003 (lines: 13)* -ag (ASCII) 6.573 +/- 0.036 (lines: 48) -ucg (ASCII) 5.394 +/- 0.042 (lines: 13) -grep (ASCII) 3.446 +/- 0.050 (lines: 13) - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg 0.187 +/- 0.003 (lines: 317) -grep 1.095 +/- 0.026 (lines: 317) -rg (ASCII)* 0.184 +/- 0.005 (lines: 317)* -ag (ASCII) 4.543 +/- 0.075 (lines: 323) -ucg (ASCII) 3.567 +/- 0.058 (lines: 317) -grep (ASCII) 1.070 +/- 0.012 (lines: 317) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 1.007 +/- 0.041 (lines: 691) -ag (lines) 3.830 +/- 0.035 (lines: 691) -ucg (lines) 2.043 +/- 0.034 (lines: 691) -grep (lines) 7.513 +/- 0.020 (lines: 691) -rg* 0.938 +/- 0.046 (lines: 691)* -grep 7.085 +/- 0.030 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -ag (ASCII) 3.799 +/- 0.015 (lines: 691) -ucg (ASCII)* 2.038 +/- 0.030 (lines: 691)* -grep (ASCII) 7.484 +/- 0.019 (lines: 691) -rg 11.087 +/- 0.057 (lines: 735) -grep 6.814 +/- 0.020 (lines: 735) - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.195 +/- 0.010 (lines: 583)* -rg (no mmap) 0.315 +/- 0.005 (lines: 583) -pt 5.134 +/- 0.023 (lines: 583) -sift 5.835 +/- 0.061 (lines: 583) -grep 0.698 +/- 0.008 (lines: 583) -rg (lines) 0.267 +/- 0.002 (lines: 583) -ag (lines) 2.862 +/- 0.096 (lines: 583) -ucg (lines) 2.418 +/- 0.045 (lines: 583) -pt (lines) 5.150 +/- 0.036 (lines: 583) -sift (lines) 6.374 +/- 0.056 (lines: 583) -grep (lines) 1.089 +/- 0.028 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg 0.970 +/- 0.041 (lines: 604) -grep 6.297 +/- 0.037 (lines: 604) -grep (ASCII) 0.725 +/- 0.030 (lines: 583) -rg (lines) 1.032 +/- 0.010 (lines: 604) -ag (lines) (ASCII)* 0.645 +/- 0.022 (lines: 0)* -ucg (lines) (ASCII) 0.774 +/- 0.036 (lines: 583) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.188 +/- 0.007 (lines: 0)* -ag (ASCII) 0.668 +/- 0.028 (lines: 0) -ucg (ASCII) 2.404 +/- 0.052 (lines: 583) -grep (ASCII) 1.114 +/- 0.048 (lines: 583) -rg 0.275 +/- 0.011 (lines: 579) -grep 1.076 +/- 0.008 (lines: 579) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.167 +/- 0.014 (lines: 41) -rg (ASCII) 2.740 +/- 0.014 (lines: 0) -ag (ASCII) 1.963 +/- 0.069 (lines: 0) -ucg (ASCII) 2.055 +/- 0.037 (lines: 0) -grep (ASCII)* 1.634 +/- 0.009 (lines: 0)* - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.302 +/- 0.020 (lines: 278)* -grep 1.432 +/- 0.055 (lines: 278) -ag (ASCII) 1.908 +/- 0.023 (lines: 0) -ucg (ASCII) 2.056 +/- 0.066 (lines: 0) -grep (ASCII) 1.398 +/- 0.044 (lines: 0) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/README.md b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/README.md deleted file mode 100644 index a15d52ea1..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/README.md +++ /dev/null @@ -1,37 +0,0 @@ -This directory contains updated benchmarks as of 2020-10-14. They were captured -via the benchsuite script at `benchsuite/benchsuite` from the root of this -repository. The command that was run: - - $ ./benchsuite \ - --dir /tmp/benchsuite \ - --raw runs/2020-10-14-archlinux-frink/raw.csv \ - --warmup-iter 1 \ - --bench-iter 5 - -The versions of each tool are as follows: - - $ rg --version - ripgrep 12.1.1 (rev def993bad1) - -SIMD -AVX (compiled) - +SIMD +AVX (runtime) - - $ grep -V - grep (GNU grep) 3.4 - - $ ag -V - ag version 2.2.0 - - Features: - +jit +lzma +zlib - - $ git --version - git version 2.28.0 - - $ ugrep --version - ugrep 3.0.2 x86_64-pc-linux-gnu +avx2 +pcre2_jit +zlib +bzip2 +lzma +lz4 - License BSD-3-Clause: - Written by Robert van Engelen and others: - -The version of ripgrep used was compiled from source on commit def993bad1: - - $ cargo build --release --features 'pcre2' diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/raw.csv b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/raw.csv deleted file mode 100644 index c73bcf31f..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/raw.csv +++ /dev/null @@ -1,671 +0,0 @@ -benchmark,warmup_iter,iter,name,command,duration,lines,env -linux_literal_default,1,5,rg,rg PM_RESUME,0.12675833702087402,19, -linux_literal_default,1,5,rg,rg PM_RESUME,0.1196434497833252,19, -linux_literal_default,1,5,rg,rg PM_RESUME,0.12096214294433594,19, -linux_literal_default,1,5,rg,rg PM_RESUME,0.1257617473602295,19, -linux_literal_default,1,5,rg,rg PM_RESUME,0.12903356552124023,19, -linux_literal_default,1,5,ag,ag PM_RESUME,0.8575565814971924,19, -linux_literal_default,1,5,ag,ag PM_RESUME,0.9113664627075195,19, -linux_literal_default,1,5,ag,ag PM_RESUME,0.944256067276001,19, -linux_literal_default,1,5,ag,ag PM_RESUME,0.5309450626373291,19, -linux_literal_default,1,5,ag,ag PM_RESUME,0.6105470657348633,19, -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.49039149284362793,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.48095154762268066,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.48927950859069824,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.47182321548461914,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,git grep,git grep PM_RESUME,0.46923041343688965,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,ugrep,ugrep -r PM_RESUME ./,0.13612771034240723,19, -linux_literal_default,1,5,ugrep,ugrep -r PM_RESUME ./,0.13677191734313965,19, -linux_literal_default,1,5,ugrep,ugrep -r PM_RESUME ./,0.13688087463378906,19, -linux_literal_default,1,5,ugrep,ugrep -r PM_RESUME ./,0.13218474388122559,19, -linux_literal_default,1,5,ugrep,ugrep -r PM_RESUME ./,0.13851046562194824,19, -linux_literal_default,1,5,grep,grep -r PM_RESUME ./,1.1436240673065186,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,grep,grep -r PM_RESUME ./,1.1436970233917236,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,grep,grep -r PM_RESUME ./,1.1542651653289795,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,grep,grep -r PM_RESUME ./,1.14790940284729,19,LC_ALL=en_US.UTF-8 -linux_literal_default,1,5,grep,grep -r PM_RESUME ./,1.1441664695739746,19,LC_ALL=en_US.UTF-8 -linux_literal,1,5,rg,rg -n PM_RESUME,0.134232759475708,19, -linux_literal,1,5,rg,rg -n PM_RESUME,0.12477993965148926,19, -linux_literal,1,5,rg,rg -n PM_RESUME,0.11790871620178223,19, -linux_literal,1,5,rg,rg -n PM_RESUME,0.13471150398254395,19, -linux_literal,1,5,rg,rg -n PM_RESUME,0.13730239868164062,19, -linux_literal,1,5,rg (mmap),rg -n --mmap PM_RESUME,1.2953157424926758,19, -linux_literal,1,5,rg (mmap),rg -n --mmap PM_RESUME,1.3263885974884033,19, -linux_literal,1,5,rg (mmap),rg -n --mmap PM_RESUME,1.320932388305664,19, -linux_literal,1,5,rg (mmap),rg -n --mmap PM_RESUME,1.3446438312530518,19, -linux_literal,1,5,rg (mmap),rg -n --mmap PM_RESUME,1.3919141292572021,19, -linux_literal,1,5,ag (mmap),ag -s PM_RESUME,0.7901346683502197,19, -linux_literal,1,5,ag (mmap),ag -s PM_RESUME,0.9647164344787598,19, -linux_literal,1,5,ag (mmap),ag -s PM_RESUME,0.8800022602081299,19, -linux_literal,1,5,ag (mmap),ag -s PM_RESUME,0.9307558536529541,19, -linux_literal,1,5,ag (mmap),ag -s PM_RESUME,0.8346366882324219,19, -linux_literal,1,5,git grep,git grep -I -n PM_RESUME,0.4694955348968506,19,LC_ALL=C -linux_literal,1,5,git grep,git grep -I -n PM_RESUME,0.4620368480682373,19,LC_ALL=C -linux_literal,1,5,git grep,git grep -I -n PM_RESUME,0.4673285484313965,19,LC_ALL=C -linux_literal,1,5,git grep,git grep -I -n PM_RESUME,0.4570960998535156,19,LC_ALL=C -linux_literal,1,5,git grep,git grep -I -n PM_RESUME,0.4648761749267578,19,LC_ALL=C -linux_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n PM_RESUME ./,0.3233473300933838,19, -linux_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n PM_RESUME ./,0.3199331760406494,19, -linux_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n PM_RESUME ./,0.29825615882873535,19, -linux_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n PM_RESUME ./,0.3003232479095459,19, -linux_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n PM_RESUME ./,0.30283141136169434,19, -linux_literal_casei,1,5,rg,rg -n -i PM_RESUME,0.1349015235900879,456, -linux_literal_casei,1,5,rg,rg -n -i PM_RESUME,0.1277780532836914,456, -linux_literal_casei,1,5,rg,rg -n -i PM_RESUME,0.1251516342163086,456, -linux_literal_casei,1,5,rg,rg -n -i PM_RESUME,0.12959671020507812,456, -linux_literal_casei,1,5,rg,rg -n -i PM_RESUME,0.1374528408050537,456, -linux_literal_casei,1,5,rg (mmap),rg -n -i --mmap PM_RESUME,1.3468265533447266,456, -linux_literal_casei,1,5,rg (mmap),rg -n -i --mmap PM_RESUME,1.3552894592285156,456, -linux_literal_casei,1,5,rg (mmap),rg -n -i --mmap PM_RESUME,1.3028552532196045,456, -linux_literal_casei,1,5,rg (mmap),rg -n -i --mmap PM_RESUME,1.336735725402832,456, -linux_literal_casei,1,5,rg (mmap),rg -n -i --mmap PM_RESUME,1.338634729385376,456, -linux_literal_casei,1,5,ag (mmap),ag -i PM_RESUME,0.5562450885772705,456, -linux_literal_casei,1,5,ag (mmap),ag -i PM_RESUME,0.7324790954589844,456, -linux_literal_casei,1,5,ag (mmap),ag -i PM_RESUME,0.8382794857025146,456, -linux_literal_casei,1,5,ag (mmap),ag -i PM_RESUME,0.5817627906799316,456, -linux_literal_casei,1,5,ag (mmap),ag -i PM_RESUME,0.5771033763885498,456, -linux_literal_casei,1,5,git grep,git grep -I -n -i PM_RESUME,0.48885059356689453,456,LC_ALL=C -linux_literal_casei,1,5,git grep,git grep -I -n -i PM_RESUME,0.4838893413543701,456,LC_ALL=C -linux_literal_casei,1,5,git grep,git grep -I -n -i PM_RESUME,0.48733997344970703,456,LC_ALL=C -linux_literal_casei,1,5,git grep,git grep -I -n -i PM_RESUME,0.4765594005584717,456,LC_ALL=C -linux_literal_casei,1,5,git grep,git grep -I -n -i PM_RESUME,0.47402334213256836,456,LC_ALL=C -linux_literal_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i PM_RESUME ./,0.3075406551361084,456, -linux_literal_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i PM_RESUME ./,0.2922379970550537,456, -linux_literal_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i PM_RESUME ./,0.2901036739349365,456, -linux_literal_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i PM_RESUME ./,0.2723674774169922,456, -linux_literal_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i PM_RESUME ./,0.2762429714202881,456, -linux_re_literal_suffix,1,5,rg,rg -n [A-Z]+_RESUME,0.12853646278381348,1944, -linux_re_literal_suffix,1,5,rg,rg -n [A-Z]+_RESUME,0.1190040111541748,1944, -linux_re_literal_suffix,1,5,rg,rg -n [A-Z]+_RESUME,0.14054393768310547,1944, -linux_re_literal_suffix,1,5,rg,rg -n [A-Z]+_RESUME,0.12263894081115723,1944, -linux_re_literal_suffix,1,5,rg,rg -n [A-Z]+_RESUME,0.12101268768310547,1944, -linux_re_literal_suffix,1,5,ag,ag -s [A-Z]+_RESUME,0.9220716953277588,1944, -linux_re_literal_suffix,1,5,ag,ag -s [A-Z]+_RESUME,1.009810209274292,1944, -linux_re_literal_suffix,1,5,ag,ag -s [A-Z]+_RESUME,0.9654982089996338,1944, -linux_re_literal_suffix,1,5,ag,ag -s [A-Z]+_RESUME,1.2758586406707764,1944, -linux_re_literal_suffix,1,5,ag,ag -s [A-Z]+_RESUME,1.0480666160583496,1944, -linux_re_literal_suffix,1,5,git grep,git grep -E -I -n [A-Z]+_RESUME,1.1811027526855469,1944,LC_ALL=C -linux_re_literal_suffix,1,5,git grep,git grep -E -I -n [A-Z]+_RESUME,1.1824719905853271,1944,LC_ALL=C -linux_re_literal_suffix,1,5,git grep,git grep -E -I -n [A-Z]+_RESUME,1.2052066326141357,1944,LC_ALL=C -linux_re_literal_suffix,1,5,git grep,git grep -E -I -n [A-Z]+_RESUME,1.224193811416626,1944,LC_ALL=C -linux_re_literal_suffix,1,5,git grep,git grep -E -I -n [A-Z]+_RESUME,1.2896029949188232,1944,LC_ALL=C -linux_re_literal_suffix,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n [A-Z]+_RESUME ./,0.5580098628997803,1944, -linux_re_literal_suffix,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n [A-Z]+_RESUME ./,0.5409820079803467,1944, -linux_re_literal_suffix,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n [A-Z]+_RESUME ./,0.5436761379241943,1944, -linux_re_literal_suffix,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n [A-Z]+_RESUME ./,0.5317332744598389,1944, -linux_re_literal_suffix,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n [A-Z]+_RESUME ./,0.5662341117858887,1944, -linux_word,1,5,rg,rg -n -w PM_RESUME,0.13112211227416992,6, -linux_word,1,5,rg,rg -n -w PM_RESUME,0.13633346557617188,6, -linux_word,1,5,rg,rg -n -w PM_RESUME,0.1308743953704834,6, -linux_word,1,5,rg,rg -n -w PM_RESUME,0.13691973686218262,6, -linux_word,1,5,rg,rg -n -w PM_RESUME,0.1369326114654541,6, -linux_word,1,5,ag,ag -s -w PM_RESUME,0.5965347290039062,6, -linux_word,1,5,ag,ag -s -w PM_RESUME,0.8891518115997314,6, -linux_word,1,5,ag,ag -s -w PM_RESUME,0.5207972526550293,6, -linux_word,1,5,ag,ag -s -w PM_RESUME,0.5551142692565918,6, -linux_word,1,5,ag,ag -s -w PM_RESUME,0.5308854579925537,6, -linux_word,1,5,git grep,git grep -E -I -n -w PM_RESUME,0.45984363555908203,6,LC_ALL=C -linux_word,1,5,git grep,git grep -E -I -n -w PM_RESUME,0.47351694107055664,6,LC_ALL=C -linux_word,1,5,git grep,git grep -E -I -n -w PM_RESUME,0.5011758804321289,6,LC_ALL=C -linux_word,1,5,git grep,git grep -E -I -n -w PM_RESUME,0.45740509033203125,6,LC_ALL=C -linux_word,1,5,git grep,git grep -E -I -n -w PM_RESUME,0.46122002601623535,6,LC_ALL=C -linux_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -w PM_RESUME ./,0.3174629211425781,6, -linux_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -w PM_RESUME ./,0.32368993759155273,6, -linux_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -w PM_RESUME ./,0.3131399154663086,6, -linux_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -w PM_RESUME ./,0.2834908962249756,6, -linux_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -w PM_RESUME ./,0.2899782657623291,6, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.2624638080596924,105, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.26248669624328613,105, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.26514244079589844,105, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.26303768157958984,105, -linux_unicode_greek,1,5,rg,rg -n \p{Greek},0.2612752914428711,105, -linux_unicode_greek,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \p{Greek} ./,0.2842683792114258,105, -linux_unicode_greek,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \p{Greek} ./,0.2718374729156494,105, -linux_unicode_greek,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \p{Greek} ./,0.26900339126586914,105, -linux_unicode_greek,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \p{Greek} ./,0.267728328704834,105, -linux_unicode_greek,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \p{Greek} ./,0.27019381523132324,105, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.24460315704345703,225, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.2752077579498291,225, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.25118350982666016,225, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.2610158920288086,225, -linux_unicode_greek_casei,1,5,rg,rg -n -i \p{Greek},0.24675774574279785,225, -linux_unicode_greek_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i \p{Greek} ./,0.26882410049438477,105, -linux_unicode_greek_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i \p{Greek} ./,0.2770118713378906,105, -linux_unicode_greek_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i \p{Greek} ./,0.2694118022918701,105, -linux_unicode_greek_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i \p{Greek} ./,0.2690916061401367,105, -linux_unicode_greek_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i \p{Greek} ./,0.2686276435852051,105, -linux_unicode_word,1,5,rg,rg -n \wAh,0.13727664947509766,229, -linux_unicode_word,1,5,rg,rg -n \wAh,0.1450798511505127,229, -linux_unicode_word,1,5,rg,rg -n \wAh,0.13819336891174316,229, -linux_unicode_word,1,5,rg,rg -n \wAh,0.1422877311706543,229, -linux_unicode_word,1,5,rg,rg -n \wAh,0.13657712936401367,229, -linux_unicode_word,1,5,rg (ASCII),rg -n (?-u)\wAh,0.1487271785736084,216, -linux_unicode_word,1,5,rg (ASCII),rg -n (?-u)\wAh,0.1459641456604004,216, -linux_unicode_word,1,5,rg (ASCII),rg -n (?-u)\wAh,0.13515281677246094,216, -linux_unicode_word,1,5,rg (ASCII),rg -n (?-u)\wAh,0.12724566459655762,216, -linux_unicode_word,1,5,rg (ASCII),rg -n (?-u)\wAh,0.13360023498535156,216, -linux_unicode_word,1,5,ag (ASCII),ag -s \wAh,1.2160453796386719,216, -linux_unicode_word,1,5,ag (ASCII),ag -s \wAh,1.230163335800171,216, -linux_unicode_word,1,5,ag (ASCII),ag -s \wAh,1.2649273872375488,216, -linux_unicode_word,1,5,ag (ASCII),ag -s \wAh,1.224984884262085,216, -linux_unicode_word,1,5,ag (ASCII),ag -s \wAh,1.4559555053710938,216, -linux_unicode_word,1,5,git grep,git grep -E -I -n \wAh,8.233768224716187,229,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep,git grep -E -I -n \wAh,8.191053867340088,229,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep,git grep -E -I -n \wAh,8.175920724868774,229,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep,git grep -E -I -n \wAh,8.167959451675415,229,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep,git grep -E -I -n \wAh,8.1710205078125,229,LC_ALL=en_US.UTF-8 -linux_unicode_word,1,5,git grep (ASCII),git grep -E -I -n \wAh,2.3747494220733643,216,LC_ALL=C -linux_unicode_word,1,5,git grep (ASCII),git grep -E -I -n \wAh,2.3170926570892334,216,LC_ALL=C -linux_unicode_word,1,5,git grep (ASCII),git grep -E -I -n \wAh,2.3430888652801514,216,LC_ALL=C -linux_unicode_word,1,5,git grep (ASCII),git grep -E -I -n \wAh,2.3219168186187744,216,LC_ALL=C -linux_unicode_word,1,5,git grep (ASCII),git grep -E -I -n \wAh,2.3155832290649414,216,LC_ALL=C -linux_unicode_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \wAh ./,0.2722008228302002,229, -linux_unicode_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \wAh ./,0.27547430992126465,229, -linux_unicode_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \wAh ./,0.2771613597869873,229, -linux_unicode_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \wAh ./,0.27692317962646484,229, -linux_unicode_word,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \wAh ./,0.27749085426330566,229, -linux_unicode_word,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \wAh ./,0.2744929790496826,216, -linux_unicode_word,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \wAh ./,0.2725999355316162,216, -linux_unicode_word,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \wAh ./,0.27443718910217285,216, -linux_unicode_word,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \wAh ./,0.2668039798736572,216, -linux_unicode_word,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \wAh ./,0.27918338775634766,216, -linux_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.38802123069763184,611, -linux_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40351152420043945,611, -linux_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40592288970947266,611, -linux_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40622901916503906,611, -linux_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.40683722496032715,611, -linux_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2553420066833496,610, -linux_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2511327266693115,610, -linux_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2530384063720703,610, -linux_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2420644760131836,610, -linux_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.2691671848297119,610, -linux_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.9446702003479004,971, -linux_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.9380638599395752,971, -linux_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.9273786544799805,971, -linux_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.9271430969238281,971, -linux_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},0.9307007789611816,971, -linux_no_literal,1,5,git grep,git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},14.531656265258789,611,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep,git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},14.570266008377075,611,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep,git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},14.51328158378601,611,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep,git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},14.644389629364014,611,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep,git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},14.694648027420044,611,LC_ALL=en_US.UTF-8 -linux_no_literal,1,5,git grep (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},3.164829730987549,610,LC_ALL=C -linux_no_literal,1,5,git grep (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},3.2377045154571533,610,LC_ALL=C -linux_no_literal,1,5,git grep (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},3.1798932552337646,610,LC_ALL=C -linux_no_literal,1,5,git grep (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},3.142343044281006,610,LC_ALL=C -linux_no_literal,1,5,git grep (ASCII),git grep -E -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5},3.185952663421631,610,LC_ALL=C -linux_no_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,6.241358041763306,973, -linux_no_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,6.213250637054443,973, -linux_no_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,6.242088079452515,973, -linux_no_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,6.126717567443848,973, -linux_no_literal,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,6.15744948387146,973, -linux_no_literal,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,0.3647449016571045,972, -linux_no_literal,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,0.36277341842651367,972, -linux_no_literal,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,0.3670034408569336,972, -linux_no_literal,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,0.3563535213470459,972, -linux_no_literal,1,5,ugrep (ASCII),ugrep -r --ignore-files --no-hidden -I -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} ./,0.36490702629089355,972, -linux_alternates,1,5,rg,rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.14299488067626953,112, -linux_alternates,1,5,rg,rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.15548348426818848,112, -linux_alternates,1,5,rg,rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.14477276802062988,112, -linux_alternates,1,5,rg,rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.12926578521728516,112, -linux_alternates,1,5,rg,rg -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.13896560668945312,112, -linux_alternates,1,5,ag,ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9893472194671631,112, -linux_alternates,1,5,ag,ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.016686201095581,112, -linux_alternates,1,5,ag,ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9755496978759766,112, -linux_alternates,1,5,ag,ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9718713760375977,112, -linux_alternates,1,5,ag,ag -s ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,1.0030465126037598,112, -linux_alternates,1,5,git grep,git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5737886428833008,112,LC_ALL=C -linux_alternates,1,5,git grep,git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.562185525894165,112,LC_ALL=C -linux_alternates,1,5,git grep,git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5762710571289062,112,LC_ALL=C -linux_alternates,1,5,git grep,git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5561251640319824,112,LC_ALL=C -linux_alternates,1,5,git grep,git grep -E -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.5849525928497314,112,LC_ALL=C -linux_alternates,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.3186032772064209,112, -linux_alternates,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.2896738052368164,112, -linux_alternates,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.28582000732421875,112, -linux_alternates,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.2837677001953125,112, -linux_alternates,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.27143406867980957,112, -linux_alternates_casei,1,5,rg,rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21955585479736328,203, -linux_alternates_casei,1,5,rg,rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.22631502151489258,203, -linux_alternates_casei,1,5,rg,rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.23458337783813477,203, -linux_alternates_casei,1,5,rg,rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.21781086921691895,203, -linux_alternates_casei,1,5,rg,rg -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.231217622756958,203, -linux_alternates_casei,1,5,ag,ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.7170076370239258,203, -linux_alternates_casei,1,5,ag,ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.7032256126403809,203, -linux_alternates_casei,1,5,ag,ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6868026256561279,203, -linux_alternates_casei,1,5,ag,ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6965539455413818,203, -linux_alternates_casei,1,5,ag,ag -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.6966633796691895,203, -linux_alternates_casei,1,5,git grep,git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9774580001831055,203,LC_ALL=C -linux_alternates_casei,1,5,git grep,git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9654648303985596,203,LC_ALL=C -linux_alternates_casei,1,5,git grep,git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.967714786529541,203,LC_ALL=C -linux_alternates_casei,1,5,git grep,git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9789888858795166,203,LC_ALL=C -linux_alternates_casei,1,5,git grep,git grep -E -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT,0.9938976764678955,203,LC_ALL=C -linux_alternates_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.2825000286102295,203, -linux_alternates_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.27024054527282715,203, -linux_alternates_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.27353668212890625,203, -linux_alternates_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.27333736419677734,203, -linux_alternates_casei,1,5,ugrep,ugrep -r --ignore-files --no-hidden -I -n -i ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT ./,0.2730555534362793,203, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.2259538173675537,830, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.22034168243408203,830, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.22986674308776855,830, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.22815775871276855,830, -subtitles_en_literal,1,5,rg,rg Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.2238922119140625,830, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.36427783966064453,830, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.37499117851257324,830, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.36223769187927246,830, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3646128177642822,830, -subtitles_en_literal,1,5,rg (no mmap),rg --no-mmap Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.36281347274780273,830, -subtitles_en_literal,1,5,grep,grep Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.8064453601837158,830,LC_ALL=C -subtitles_en_literal,1,5,grep,grep Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.8001935482025146,830,LC_ALL=C -subtitles_en_literal,1,5,grep,grep Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.8018591403961182,830,LC_ALL=C -subtitles_en_literal,1,5,grep,grep Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.7978458404541016,830,LC_ALL=C -subtitles_en_literal,1,5,grep,grep Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.7912843227386475,830,LC_ALL=C -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.31099891662597656,830, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3145768642425537,830, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.30507469177246094,830, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3450126647949219,830, -subtitles_en_literal,1,5,rg (lines),rg -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.31091880798339844,830, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5518174171447754,830, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.551568031311035,830, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5306365489959717,830, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.537529468536377,830, -subtitles_en_literal,1,5,ag (lines),ag -s Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5627124309539795,830, -subtitles_en_literal,1,5,grep (lines),grep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2934913635253906,830,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2990975379943848,830,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2942156791687012,830,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2887969017028809,830,LC_ALL=C -subtitles_en_literal,1,5,grep (lines),grep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2922444343566895,830,LC_ALL=C -subtitles_en_literal,1,5,ugrep (lines),ugrep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3939177989959717,830, -subtitles_en_literal,1,5,ugrep (lines),ugrep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3916018009185791,830, -subtitles_en_literal,1,5,ugrep (lines),ugrep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.40460968017578125,830, -subtitles_en_literal,1,5,ugrep (lines),ugrep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.41738367080688477,830, -subtitles_en_literal,1,5,ugrep (lines),ugrep -n Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.41339826583862305,830, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.37847900390625,871, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3692331314086914,871, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.40493106842041016,871, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4074361324310303,871, -subtitles_en_literal_casei,1,5,rg,rg -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4297189712524414,871, -subtitles_en_literal_casei,1,5,grep,grep -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,3.63842511177063,871,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,3.6366350650787354,871,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,3.6044440269470215,871,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,3.6123127937316895,871,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep,grep -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,3.6119742393493652,871,LC_ALL=en_US.UTF-8 -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.917151689529419,871,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.9379458427429199,871,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.9703550338745117,871,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.9309988021850586,871,LC_ALL=C -subtitles_en_literal_casei,1,5,grep (ASCII),grep -E -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.9328129291534424,871,LC_ALL=C -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.5196061134338379,871, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.5225450992584229,871, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4856400489807129,871, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.5204241275787354,871, -subtitles_en_literal_casei,1,5,rg (lines),rg -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.5224106311798096,871, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5935003757476807,871, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.640918016433716,871, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.602182626724243,871, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.575654983520508,871, -subtitles_en_literal_casei,1,5,ag (lines) (ASCII),ag -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5606820583343506,871, -subtitles_en_literal_casei,1,5,ugrep (lines),ugrep -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.0980546474456787,871, -subtitles_en_literal_casei,1,5,ugrep (lines),ugrep -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.095038652420044,871, -subtitles_en_literal_casei,1,5,ugrep (lines),ugrep -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.0974702835083008,871, -subtitles_en_literal_casei,1,5,ugrep (lines),ugrep -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.113879919052124,871, -subtitles_en_literal_casei,1,5,ugrep (lines),ugrep -n -i Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.1096961498260498,871, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/en.sample.txt,0.3175060749053955,830, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/en.sample.txt,0.321685791015625,830, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/en.sample.txt,0.30799293518066406,830, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/en.sample.txt,0.31140613555908203,830, -subtitles_en_literal_word,1,5,rg (ASCII),rg -n (?-u:\b)Sherlock Holmes(?-u:\b) /tmp/benchsuite/subtitles/en.sample.txt,0.32439208030700684,830, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5530965328216553,830, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5833561420440674,830, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5765762329101562,830, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.610975742340088,830, -subtitles_en_literal_word,1,5,ag (ASCII),ag -sw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,2.5965471267700195,830, -subtitles_en_literal_word,1,5,grep (ASCII),grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.3212966918945312,830,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.311401128768921,830,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.298889398574829,830,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.316542148590088,830,LC_ALL=C -subtitles_en_literal_word,1,5,grep (ASCII),grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.3483500480651855,830,LC_ALL=C -subtitles_en_literal_word,1,5,ugrep (ASCII),ugrep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4127326011657715,830, -subtitles_en_literal_word,1,5,ugrep (ASCII),ugrep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4138009548187256,830, -subtitles_en_literal_word,1,5,ugrep (ASCII),ugrep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4203319549560547,830, -subtitles_en_literal_word,1,5,ugrep (ASCII),ugrep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.4127979278564453,830, -subtitles_en_literal_word,1,5,ugrep (ASCII),ugrep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.41126537322998047,830, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3251321315765381,830, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.31773900985717773,830, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.32987523078918457,830, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.32228970527648926,830, -subtitles_en_literal_word,1,5,rg,rg -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,0.3207516670227051,830, -subtitles_en_literal_word,1,5,grep,grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.2946159839630127,830,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.333972454071045,830,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.3002500534057617,830,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.347550630569458,830,LC_ALL=en_US.UTF-8 -subtitles_en_literal_word,1,5,grep,grep -nw Sherlock Holmes /tmp/benchsuite/subtitles/en.sample.txt,1.306572675704956,830,LC_ALL=en_US.UTF-8 -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.4178187847137451,1094, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.44626832008361816,1094, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.44959425926208496,1094, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.38634324073791504,1094, -subtitles_en_alternate,1,5,rg (lines),rg -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.4460463523864746,1094, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.6045682430267334,1094, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.6191344261169434,1094, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.579859972000122,1094, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.6637580394744873,1094, -subtitles_en_alternate,1,5,ag (lines),ag -s Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.5728182792663574,1094, -subtitles_en_alternate,1,5,grep (lines),grep -E -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.323948621749878,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.3338429927825928,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.34714937210083,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.314117908477783,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep (lines),grep -E -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,3.303710699081421,1094,LC_ALL=C -subtitles_en_alternate,1,5,ugrep (lines),ugrep -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.147033452987671,1094, -subtitles_en_alternate,1,5,ugrep (lines),ugrep -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.2054970264434814,1094, -subtitles_en_alternate,1,5,ugrep (lines),ugrep -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.0998892784118652,1094, -subtitles_en_alternate,1,5,ugrep (lines),ugrep -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.101989984512329,1094, -subtitles_en_alternate,1,5,ugrep (lines),ugrep -n Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.110612154006958,1094, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.29009222984313965,1094, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.29300451278686523,1094, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.3199915885925293,1094, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.3187263011932373,1094, -subtitles_en_alternate,1,5,rg,rg Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.30321288108825684,1094, -subtitles_en_alternate,1,5,grep,grep -E Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,2.813009738922119,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,2.80930757522583,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,2.814509153366089,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,2.8390560150146484,1094,LC_ALL=C -subtitles_en_alternate,1,5,grep,grep -E Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,2.830871105194092,1094,LC_ALL=C -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,6.166510343551636,1136, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,6.192304849624634,1136, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,6.185140132904053,1136, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,6.20132040977478,1136, -subtitles_en_alternate_casei,1,5,ag (ASCII),ag -s -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,6.159040451049805,1136, -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.523138999938965,1136,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.512346267700195,1136,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.562563896179199,1136,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.533160448074341,1136,LC_ALL=C -subtitles_en_alternate_casei,1,5,grep (ASCII),grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.504830837249756,1136,LC_ALL=C -subtitles_en_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.1120033264160156,1136, -subtitles_en_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.1150739192962646,1136, -subtitles_en_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.1018304824829102,1136, -subtitles_en_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.1106996536254883,1136, -subtitles_en_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,1.0994808673858643,1136, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.8494291305541992,1136, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.7878148555755615,1136, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.8290884494781494,1136, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.7409803867340088,1136, -subtitles_en_alternate_casei,1,5,rg,rg -n -i Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,0.7880558967590332,1136, -subtitles_en_alternate_casei,1,5,grep,grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.5523765087127686,1136,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.527086019515991,1136,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.740911483764648,1136,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.520638465881348,1136,LC_ALL=en_US.UTF-8 -subtitles_en_alternate_casei,1,5,grep,grep -E -ni Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty /tmp/benchsuite/subtitles/en.sample.txt,5.52523398399353,1136,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3353078365325928,483, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3248591423034668,483, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.33918261528015137,483, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.33177971839904785,483, -subtitles_en_surrounding_words,1,5,rg,rg -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.34472131729125977,483, -subtitles_en_surrounding_words,1,5,grep,grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7516274452209473,483,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7489221096038818,483,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7574889659881592,483,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.813244342803955,483,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,grep,grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.750051498413086,483,LC_ALL=en_US.UTF-8 -subtitles_en_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,70.12419986724854,489, -subtitles_en_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,70.26925611495972,489, -subtitles_en_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,70.56865787506104,489, -subtitles_en_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,70.12933135032654,489, -subtitles_en_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,70.07925295829773,489, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3309454917907715,483, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.33062124252319336,483, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3292708396911621,483, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3300509452819824,483, -subtitles_en_surrounding_words,1,5,rg (ASCII),rg -n (?-u)\w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,0.3252389430999756,483, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,7.372813701629639,489, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,7.338848114013672,489, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,7.739792108535767,489, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,7.302056074142456,489, -subtitles_en_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,7.334207057952881,489, -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7617950439453125,483,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7765378952026367,483,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7456245422363281,483,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.748713731765747,483,LC_ALL=C -subtitles_en_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,1.7846882343292236,483,LC_ALL=C -subtitles_en_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,31.14370322227478,489, -subtitles_en_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,31.543628454208374,489, -subtitles_en_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,31.133421182632446,489, -subtitles_en_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,31.149214506149292,489, -subtitles_en_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Holmes\s+\w+ /tmp/benchsuite/subtitles/en.sample.txt,31.180144548416138,489, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.9173591136932373,22, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.867539644241333,22, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.9047088623046875,22, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.9265778064727783,22, -subtitles_en_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.874317169189453,22, -subtitles_en_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,24.619744777679443,309, -subtitles_en_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,24.622087240219116,309, -subtitles_en_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,24.770710468292236,309, -subtitles_en_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,24.60181713104248,309, -subtitles_en_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,24.678969383239746,309, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.676262140274048,22, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.673837184906006,22, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.667243003845215,22, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.667970657348633,22, -subtitles_en_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,2.6588196754455566,22, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,10.786212682723999,302, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,10.744041204452515,302, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,10.74718165397644,302, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,10.768681287765503,302, -subtitles_en_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,10.772834777832031,302, -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,6.287469148635864,22,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,6.243509769439697,22,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,6.242478370666504,22,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,6.2600791454315186,22,LC_ALL=C -subtitles_en_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,6.2560741901397705,22,LC_ALL=C -subtitles_en_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,4.670856237411499,302, -subtitles_en_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,4.703561544418335,302, -subtitles_en_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,4.675989627838135,302, -subtitles_en_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,4.6688103675842285,302, -subtitles_en_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/en.sample.txt,4.715432167053223,302, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.20440673828125,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.20561552047729492,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.2381761074066162,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.23102140426635742,583, -subtitles_ru_literal,1,5,rg,rg Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.19649791717529297,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.3158297538757324,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.3136112689971924,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.32402992248535156,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.3248250484466553,583, -subtitles_ru_literal,1,5,rg (no mmap),rg --no-mmap Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.3201103210449219,583, -subtitles_ru_literal,1,5,grep,grep Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7790360450744629,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7977695465087891,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7397308349609375,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7123947143554688,583,LC_ALL=C -subtitles_ru_literal,1,5,grep,grep Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.711977481842041,583,LC_ALL=C -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.27593088150024414,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.2842848300933838,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.28340864181518555,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.28469133377075195,583, -subtitles_ru_literal,1,5,rg (lines),rg -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.27951884269714355,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,2.7401182651519775,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,2.658051013946533,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,2.666799306869507,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,2.7145025730133057,583, -subtitles_ru_literal,1,5,ag (lines),ag -s Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,2.7412168979644775,583, -subtitles_ru_literal,1,5,grep (lines),grep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0886235237121582,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0896506309509277,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1100494861602783,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.088308334350586,583,LC_ALL=C -subtitles_ru_literal,1,5,grep (lines),grep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0891127586364746,583,LC_ALL=C -subtitles_ru_literal,1,5,ugrep (lines),ugrep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8426175117492676,583, -subtitles_ru_literal,1,5,ugrep (lines),ugrep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.85064697265625,583, -subtitles_ru_literal,1,5,ugrep (lines),ugrep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8356082439422607,583, -subtitles_ru_literal,1,5,ugrep (lines),ugrep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8405826091766357,583, -subtitles_ru_literal,1,5,ugrep (lines),ugrep -n Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.83730149269104,583, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.48739099502563477,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.4823324680328369,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.4832422733306885,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.4812777042388916,604, -subtitles_ru_literal_casei,1,5,rg,rg -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.4854264259338379,604, -subtitles_ru_literal_casei,1,5,grep,grep -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,6.694453477859497,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,6.759232044219971,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,6.686243534088135,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,6.7029454708099365,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep,grep -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,6.699738264083862,604,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7290260791778564,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7400493621826172,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7299001216888428,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7308380603790283,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,grep (ASCII),grep -E -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.7283904552459717,583,LC_ALL=C -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.5711629390716553,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.574974536895752,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.5820963382720947,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.5438523292541504,604, -subtitles_ru_literal_casei,1,5,rg (lines),rg -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.5054161548614502,604, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6135058403015137,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6051545143127441,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6032793521881104,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6097028255462646,, -subtitles_ru_literal_casei,1,5,ag (lines) (ASCII),ag -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6850666999816895,, -subtitles_ru_literal_casei,1,5,ugrep (lines) (ASCII),ugrep -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.833592176437378,583, -subtitles_ru_literal_casei,1,5,ugrep (lines) (ASCII),ugrep -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8357219696044922,583, -subtitles_ru_literal_casei,1,5,ugrep (lines) (ASCII),ugrep -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8394358158111572,583, -subtitles_ru_literal_casei,1,5,ugrep (lines) (ASCII),ugrep -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8334264755249023,583, -subtitles_ru_literal_casei,1,5,ugrep (lines) (ASCII),ugrep -n -i Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8304622173309326,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:^|\W)Шерлок Холмс(?-u:$|\W) /tmp/benchsuite/subtitles/ru.txt,0.2904787063598633,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:^|\W)Шерлок Холмс(?-u:$|\W) /tmp/benchsuite/subtitles/ru.txt,0.2831101417541504,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:^|\W)Шерлок Холмс(?-u:$|\W) /tmp/benchsuite/subtitles/ru.txt,0.2786984443664551,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:^|\W)Шерлок Холмс(?-u:$|\W) /tmp/benchsuite/subtitles/ru.txt,0.28719663619995117,583, -subtitles_ru_literal_word,1,5,rg (ASCII),rg -n (?-u:^|\W)Шерлок Холмс(?-u:$|\W) /tmp/benchsuite/subtitles/ru.txt,0.27600622177124023,583, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6810102462768555,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6855161190032959,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6827929019927979,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6587810516357422,, -subtitles_ru_literal_word,1,5,ag (ASCII),ag -sw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.6551673412322998,, -subtitles_ru_literal_word,1,5,grep (ASCII),grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0948495864868164,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.097151756286621,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1051688194274902,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1151607036590576,583,LC_ALL=C -subtitles_ru_literal_word,1,5,grep (ASCII),grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1100919246673584,583,LC_ALL=C -subtitles_ru_literal_word,1,5,ugrep (ASCII),ugrep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.84104585647583,, -subtitles_ru_literal_word,1,5,ugrep (ASCII),ugrep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.9092209339141846,, -subtitles_ru_literal_word,1,5,ugrep (ASCII),ugrep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.836583137512207,, -subtitles_ru_literal_word,1,5,ugrep (ASCII),ugrep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8941335678100586,, -subtitles_ru_literal_word,1,5,ugrep (ASCII),ugrep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.8811957836151123,, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.2956504821777344,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.29023194313049316,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.3374972343444824,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.29686713218688965,579, -subtitles_ru_literal_word,1,5,rg,rg -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,0.29778003692626953,579, -subtitles_ru_literal_word,1,5,grep,grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1042869091033936,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.1068925857543945,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0973529815673828,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0917479991912842,579,LC_ALL=en_US.UTF-8 -subtitles_ru_literal_word,1,5,grep,grep -nw Шерлок Холмс /tmp/benchsuite/subtitles/ru.txt,1.0987188816070557,579,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8945937156677246,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8919808864593506,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.9041986465454102,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8838107585906982,691, -subtitles_ru_alternate,1,5,rg (lines),rg -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.903540849685669,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.715298652648926,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.676830530166626,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.721431016921997,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.6990325450897217,691, -subtitles_ru_alternate,1,5,ag (lines),ag -s Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.764216184616089,691, -subtitles_ru_alternate,1,5,grep (lines),grep -E -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.519805669784546,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.40212869644165,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.381818294525146,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.386401176452637,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep (lines),grep -E -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.425997257232666,691,LC_ALL=C -subtitles_ru_alternate,1,5,ugrep (lines),ugrep -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.259684801101685,691, -subtitles_ru_alternate,1,5,ugrep (lines),ugrep -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.236181735992432,691, -subtitles_ru_alternate,1,5,ugrep (lines),ugrep -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.340983629226685,691, -subtitles_ru_alternate,1,5,ugrep (lines),ugrep -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.21895980834961,691, -subtitles_ru_alternate,1,5,ugrep (lines),ugrep -n Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.194425106048584,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8262777328491211,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8343832492828369,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8675012588500977,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8584244251251221,691, -subtitles_ru_alternate,1,5,rg,rg Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,0.8777158260345459,691, -subtitles_ru_alternate,1,5,grep,grep -E Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.25586986541748,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.007173538208008,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.068726301193237,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.010542631149292,691,LC_ALL=C -subtitles_ru_alternate,1,5,grep,grep -E Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.021028280258179,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.7179486751556396,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.682896375656128,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.699859142303467,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.662733316421509,691, -subtitles_ru_alternate_casei,1,5,ag (ASCII),ag -s -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,3.661060094833374,691, -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.434819221496582,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.436205625534058,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.388120412826538,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.407799243927002,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,grep (ASCII),grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,8.44464373588562,691,LC_ALL=C -subtitles_ru_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.216991662979126,691, -subtitles_ru_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.470320701599121,691, -subtitles_ru_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.21274471282959,691, -subtitles_ru_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.38324522972107,691, -subtitles_ru_alternate_casei,1,5,ugrep (ASCII),ugrep -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,13.3148832321167,691, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,6.205031156539917,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,6.1502509117126465,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,6.150696516036987,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,6.150148630142212,735, -subtitles_ru_alternate_casei,1,5,rg,rg -n -i Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,6.153124809265137,735, -subtitles_ru_alternate_casei,1,5,grep,grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,7.477111339569092,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,7.483617782592773,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,7.502292156219482,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,7.528963327407837,735,LC_ALL=en_US.UTF-8 -subtitles_ru_alternate_casei,1,5,grep,grep -E -ni Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти /tmp/benchsuite/subtitles/ru.txt,7.482379198074341,735,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,0.3461883068084717,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,0.30211687088012695,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,0.30521416664123535,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,0.2969543933868408,278, -subtitles_ru_surrounding_words,1,5,rg,rg -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,0.3003671169281006,278, -subtitles_ru_surrounding_words,1,5,grep,grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4209251403808594,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4190807342529297,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4178283214569092,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4173235893249512,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,grep,grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4221296310424805,278,LC_ALL=en_US.UTF-8 -subtitles_ru_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,70.6701226234436,326, -subtitles_ru_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,71.15788650512695,326, -subtitles_ru_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,71.07276272773743,326, -subtitles_ru_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,70.5626060962677,326, -subtitles_ru_surrounding_words,1,5,ugrep,ugrep -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,70.54449439048767,326, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.868441104888916,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.886382818222046,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.8685986995697021,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.8727426528930664,, -subtitles_ru_surrounding_words,1,5,ag (ASCII),ag -s \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.8667800426483154,, -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.3818490505218506,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.3709721565246582,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.3819043636322021,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.460402488708496,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,grep (ASCII),grep -E -n \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.4097135066986084,,LC_ALL=C -subtitles_ru_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.286102294921875,, -subtitles_ru_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.2712647914886475,, -subtitles_ru_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.2950100898742676,, -subtitles_ru_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.264500617980957,, -subtitles_ru_surrounding_words,1,5,ugrep (ASCII),ugrep -n -U \w+\s+Холмс\s+\w+ /tmp/benchsuite/subtitles/ru.txt,1.2877566814422607,, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,3.1152236461639404,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,3.1311423778533936,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,3.0800061225891113,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,3.070636510848999,41, -subtitles_ru_no_literal,1,5,rg,rg -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,3.0940587520599365,41, -subtitles_ru_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,50.85447072982788,86, -subtitles_ru_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,50.832582235336304,86, -subtitles_ru_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,50.8755087852478,86, -subtitles_ru_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,50.79056358337402,86, -subtitles_ru_no_literal,1,5,ugrep,ugrep -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,50.84795618057251,86, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,2.716826915740967,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,2.7381114959716797,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,2.7545180320739746,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,2.7215416431427,, -subtitles_ru_no_literal,1,5,rg (ASCII),rg -n (?-u)\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,2.707784414291382,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.9250116348266602,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.8956947326660156,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.8904175758361816,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.8968868255615234,, -subtitles_ru_no_literal,1,5,ag (ASCII),ag -s \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.900888204574585,, -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.755054235458374,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.7681376934051514,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.7654614448547363,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.75648832321167,,LC_ALL=C -subtitles_ru_no_literal,1,5,grep (ASCII),grep -E -n \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.7456772327423096,,LC_ALL=C -subtitles_ru_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.2170698642730713,, -subtitles_ru_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.1907124519348145,, -subtitles_ru_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.1722266674041748,, -subtitles_ru_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.191617727279663,, -subtitles_ru_no_literal,1,5,ugrep (ASCII),ugrep -n -U \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5} /tmp/benchsuite/subtitles/ru.txt,1.1909863948822021,, diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/summary b/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/summary deleted file mode 100644 index 984546e1e..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/benchsuite/runs/2020-10-14-archlinux-frink/summary +++ /dev/null @@ -1,208 +0,0 @@ -linux_literal_default (pattern: PM_RESUME) ------------------------------------------- -rg* 0.124 +/- 0.004 (lines: 19)* -ag 0.771 +/- 0.187 (lines: 19) -git grep 0.480 +/- 0.010 (lines: 19) -ugrep 0.136 +/- 0.002 (lines: 19) -grep 1.147 +/- 0.005 (lines: 19) - -linux_literal (pattern: PM_RESUME) ----------------------------------- -rg* 0.130 +/- 0.008 (lines: 19)* -rg (mmap) 1.336 +/- 0.036 (lines: 19) -ag (mmap) 0.880 +/- 0.071 (lines: 19) -git grep 0.464 +/- 0.005 (lines: 19) -ugrep 0.309 +/- 0.012 (lines: 19) - -linux_literal_casei (pattern: PM_RESUME) ----------------------------------------- -rg* 0.131 +/- 0.005 (lines: 456)* -rg (mmap) 1.336 +/- 0.020 (lines: 456) -ag (mmap) 0.657 +/- 0.123 (lines: 456) -git grep 0.482 +/- 0.007 (lines: 456) -ugrep 0.288 +/- 0.014 (lines: 456) - -linux_re_literal_suffix (pattern: [A-Z]+_RESUME) ------------------------------------------------- -rg* 0.126 +/- 0.009 (lines: 1944)* -ag 1.044 +/- 0.138 (lines: 1944) -git grep 1.217 +/- 0.045 (lines: 1944) -ugrep 0.548 +/- 0.014 (lines: 1944) - -linux_word (pattern: PM_RESUME) -------------------------------- -rg* 0.134 +/- 0.003 (lines: 6)* -ag 0.618 +/- 0.154 (lines: 6) -git grep 0.471 +/- 0.018 (lines: 6) -ugrep 0.306 +/- 0.018 (lines: 6) - -linux_unicode_greek (pattern: \p{Greek}) ----------------------------------------- -rg* 0.263 +/- 0.001 (lines: 105)* -ugrep 0.273 +/- 0.007 (lines: 105) - -linux_unicode_greek_casei (pattern: \p{Greek}) ----------------------------------------------- -rg* 0.256 +/- 0.013 (lines: 225)* -ugrep 0.271 +/- 0.004 (lines: 105) - -linux_unicode_word (pattern: \wAh) ----------------------------------- -rg 0.140 +/- 0.004 (lines: 229) -rg (ASCII)* 0.138 +/- 0.009 (lines: 216)* -ag (ASCII) 1.278 +/- 0.101 (lines: 216) -git grep 8.188 +/- 0.027 (lines: 229) -git grep (ASCII) 2.334 +/- 0.025 (lines: 216) -ugrep 0.276 +/- 0.002 (lines: 229) -ugrep (ASCII) 0.274 +/- 0.004 (lines: 216) - -linux_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ------------------------------------------------------------------ -rg 0.402 +/- 0.008 (lines: 611) -rg (ASCII)* 0.254 +/- 0.010 (lines: 610)* -ag (ASCII) 0.934 +/- 0.008 (lines: 971) -git grep 14.591 +/- 0.077 (lines: 611) -git grep (ASCII) 3.182 +/- 0.035 (lines: 610) -ugrep 6.196 +/- 0.052 (lines: 973) -ugrep (ASCII) 0.363 +/- 0.004 (lines: 972) - -linux_alternates (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------- -rg* 0.142 +/- 0.010 (lines: 112)* -ag 0.991 +/- 0.019 (lines: 112) -git grep 0.571 +/- 0.011 (lines: 112) -ugrep 0.290 +/- 0.017 (lines: 112) - -linux_alternates_casei (pattern: ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT) -------------------------------------------------------------------------------- -rg* 0.226 +/- 0.007 (lines: 203)* -ag 0.700 +/- 0.011 (lines: 203) -git grep 0.977 +/- 0.011 (lines: 203) -ugrep 0.275 +/- 0.005 (lines: 203) - -subtitles_en_literal (pattern: Sherlock Holmes) ------------------------------------------------ -rg* 0.226 +/- 0.004 (lines: 830)* -rg (no mmap) 0.366 +/- 0.005 (lines: 830) -grep 0.800 +/- 0.006 (lines: 830) -rg (lines) 0.317 +/- 0.016 (lines: 830) -ag (lines) 2.547 +/- 0.013 (lines: 830) -grep (lines) 1.294 +/- 0.004 (lines: 830) -ugrep (lines) 0.404 +/- 0.011 (lines: 830) - -subtitles_en_literal_casei (pattern: Sherlock Holmes) ------------------------------------------------------ -rg* 0.398 +/- 0.024 (lines: 871)* -grep 3.621 +/- 0.016 (lines: 871) -grep (ASCII) 0.938 +/- 0.020 (lines: 871) -rg (lines) 0.514 +/- 0.016 (lines: 871) -ag (lines) (ASCII) 2.595 +/- 0.030 (lines: 871) -ugrep (lines) 1.103 +/- 0.008 (lines: 871) - -subtitles_en_literal_word (pattern: Sherlock Holmes) ----------------------------------------------------- -rg (ASCII)* 0.317 +/- 0.007 (lines: 830)* -ag (ASCII) 2.584 +/- 0.022 (lines: 830) -grep (ASCII) 1.319 +/- 0.018 (lines: 830) -ugrep (ASCII) 0.414 +/- 0.004 (lines: 830) -rg 0.323 +/- 0.005 (lines: 830) -grep 1.317 +/- 0.023 (lines: 830) - -subtitles_en_alternate (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------- -rg (lines) 0.429 +/- 0.027 (lines: 1094) -ag (lines) 3.608 +/- 0.036 (lines: 1094) -grep (lines) 3.325 +/- 0.017 (lines: 1094) -ugrep (lines) 1.133 +/- 0.045 (lines: 1094) -rg* 0.305 +/- 0.014 (lines: 1094)* -grep 2.821 +/- 0.013 (lines: 1094) - -subtitles_en_alternate_casei (pattern: Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty) ---------------------------------------------------------------------------------------------------------------------- -ag (ASCII) 6.181 +/- 0.018 (lines: 1136) -grep (ASCII) 5.527 +/- 0.022 (lines: 1136) -ugrep (ASCII) 1.108 +/- 0.007 (lines: 1136) -rg* 0.799 +/- 0.042 (lines: 1136)* -grep 5.573 +/- 0.095 (lines: 1136) - -subtitles_en_surrounding_words (pattern: \w+\s+Holmes\s+\w+) ------------------------------------------------------------- -rg* 0.335 +/- 0.008 (lines: 483) -grep 1.764 +/- 0.028 (lines: 483) -ugrep 70.234 +/- 0.200 (lines: 489) -rg (ASCII) 0.329 +/- 0.002 (lines: 483)* -ag (ASCII) 7.418 +/- 0.182 (lines: 489) -grep (ASCII) 1.763 +/- 0.017 (lines: 483) -ugrep (ASCII) 31.230 +/- 0.176 (lines: 489) - -subtitles_en_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 2.898 +/- 0.026 (lines: 22) -ugrep 24.659 +/- 0.069 (lines: 309) -rg (ASCII)* 2.669 +/- 0.007 (lines: 22)* -ag (ASCII) 10.764 +/- 0.018 (lines: 302) -grep (ASCII) 6.258 +/- 0.018 (lines: 22) -ugrep (ASCII) 4.687 +/- 0.021 (lines: 302) - -subtitles_ru_literal (pattern: Шерлок Холмс) --------------------------------------------- -rg* 0.215 +/- 0.018 (lines: 583)* -rg (no mmap) 0.320 +/- 0.005 (lines: 583) -grep 0.748 +/- 0.039 (lines: 583) -rg (lines) 0.282 +/- 0.004 (lines: 583) -ag (lines) 2.704 +/- 0.040 (lines: 583) -grep (lines) 1.093 +/- 0.009 (lines: 583) -ugrep (lines) 1.841 +/- 0.006 (lines: 583) - -subtitles_ru_literal_casei (pattern: Шерлок Холмс) --------------------------------------------------- -rg* 0.484 +/- 0.002 (lines: 604)* -grep 6.709 +/- 0.029 (lines: 604) -grep (ASCII) 0.732 +/- 0.005 (lines: 583) -rg (lines) 0.556 +/- 0.032 (lines: 604) -ag (lines) (ASCII) 0.623 +/- 0.035 (lines: 0) -ugrep (lines) (ASCII) 1.835 +/- 0.003 (lines: 583) - -subtitles_ru_literal_word (pattern: Шерлок Холмс) -------------------------------------------------- -rg (ASCII)* 0.283 +/- 0.006 (lines: 583)* -ag (ASCII) 0.673 +/- 0.014 (lines: 0) -grep (ASCII) 1.104 +/- 0.009 (lines: 583) -ugrep (ASCII) 1.872 +/- 0.032 (lines: 0) -rg 0.304 +/- 0.019 (lines: 579) -grep 1.100 +/- 0.006 (lines: 579) - -subtitles_ru_alternate (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------ -rg (lines) 0.896 +/- 0.009 (lines: 691) -ag (lines) 3.715 +/- 0.032 (lines: 691) -grep (lines) 8.423 +/- 0.057 (lines: 691) -ugrep (lines) 13.250 +/- 0.056 (lines: 691) -rg* 0.853 +/- 0.022 (lines: 691)* -grep 8.073 +/- 0.105 (lines: 691) - -subtitles_ru_alternate_casei (pattern: Шерлок Холмс|Джон Уотсон|Ирен Адлер|инспектор Лестрейд|профессор Мориарти) ------------------------------------------------------------------------------------------------------------------ -ag (ASCII)* 3.685 +/- 0.024 (lines: 691)* -grep (ASCII) 8.422 +/- 0.024 (lines: 691) -ugrep (ASCII) 13.320 +/- 0.110 (lines: 691) -rg 6.162 +/- 0.024 (lines: 735) -grep 7.495 +/- 0.021 (lines: 735) - -subtitles_ru_surrounding_words (pattern: \w+\s+Холмс\s+\w+) ------------------------------------------------------------ -rg* 0.310 +/- 0.020 (lines: 278)* -grep 1.419 +/- 0.002 (lines: 278) -ugrep 70.802 +/- 0.292 (lines: 326) -ag (ASCII) 1.873 +/- 0.008 (lines: 0) -grep (ASCII) 1.401 +/- 0.036 (lines: 0) -ugrep (ASCII) 1.281 +/- 0.013 (lines: 0) - -subtitles_ru_no_literal (pattern: \w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}\s+\w{5}) ----------------------------------------------------------------------------------------- -rg 3.098 +/- 0.025 (lines: 41) -ugrep 50.840 +/- 0.032 (lines: 86) -rg (ASCII) 2.728 +/- 0.019 (lines: 0) -ag (ASCII) 1.902 +/- 0.014 (lines: 0) -grep (ASCII) 1.758 +/- 0.009 (lines: 0) -ugrep (ASCII)* 1.193 +/- 0.016 (lines: 0)* diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/build.rs b/collector/compile-benchmarks/ripgrep-13.0.0/build.rs deleted file mode 100644 index b4b62b9c3..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/build.rs +++ /dev/null @@ -1,239 +0,0 @@ -use std::env; -use std::fs::{self, File}; -use std::io::{self, Read, Write}; -use std::path::Path; -use std::process; - -use clap::Shell; - -use app::{RGArg, RGArgKind}; - -#[allow(dead_code)] -#[path = "crates/core/app.rs"] -mod app; - -fn main() { - // OUT_DIR is set by Cargo and it's where any additional build artifacts - // are written. - let outdir = match env::var_os("OUT_DIR") { - Some(outdir) => outdir, - None => { - eprintln!( - "OUT_DIR environment variable not defined. \ - Please file a bug: \ - https://github.com/BurntSushi/ripgrep/issues/new" - ); - process::exit(1); - } - }; - fs::create_dir_all(&outdir).unwrap(); - - let stamp_path = Path::new(&outdir).join("ripgrep-stamp"); - if let Err(err) = File::create(&stamp_path) { - panic!("failed to write {}: {}", stamp_path.display(), err); - } - if let Err(err) = generate_man_page(&outdir) { - eprintln!("failed to generate man page: {}", err); - } - - // Use clap to build completion files. - let mut app = app::app(); - app.gen_completions("rg", Shell::Bash, &outdir); - app.gen_completions("rg", Shell::Fish, &outdir); - app.gen_completions("rg", Shell::PowerShell, &outdir); - // Note that we do not use clap's support for zsh. Instead, zsh completions - // are manually maintained in `complete/_rg`. - - // Make the current git hash available to the build. - if let Some(rev) = git_revision_hash() { - println!("cargo:rustc-env=RIPGREP_BUILD_GIT_HASH={}", rev); - } -} - -fn git_revision_hash() -> Option { - let result = process::Command::new("git") - .args(&["rev-parse", "--short=10", "HEAD"]) - .output(); - result.ok().and_then(|output| { - let v = String::from_utf8_lossy(&output.stdout).trim().to_string(); - if v.is_empty() { - None - } else { - Some(v) - } - }) -} - -fn generate_man_page>(outdir: P) -> io::Result<()> { - // If asciidoctor isn't installed, fallback to asciidoc. - if let Err(err) = process::Command::new("asciidoctor").output() { - eprintln!( - "Could not run 'asciidoctor' binary, falling back to 'a2x'." - ); - eprintln!("Error from running 'asciidoctor': {}", err); - return legacy_generate_man_page::

(outdir); - } - // 1. Read asciidoctor template. - // 2. Interpolate template with auto-generated docs. - // 3. Save interpolation to disk. - // 4. Use asciidoctor to convert to man page. - let outdir = outdir.as_ref(); - let cwd = env::current_dir()?; - let tpl_path = cwd.join("doc").join("rg.1.txt.tpl"); - let txt_path = outdir.join("rg.1.txt"); - - let mut tpl = String::new(); - File::open(&tpl_path)?.read_to_string(&mut tpl)?; - let options = - formatted_options()?.replace("{", "{").replace("}", "}"); - tpl = tpl.replace("{OPTIONS}", &options); - - let githash = git_revision_hash(); - let githash = githash.as_ref().map(|x| &**x); - tpl = tpl.replace("{VERSION}", &app::long_version(githash, false)); - - File::create(&txt_path)?.write_all(tpl.as_bytes())?; - let result = process::Command::new("asciidoctor") - .arg("--doctype") - .arg("manpage") - .arg("--backend") - .arg("manpage") - .arg(&txt_path) - .spawn()? - .wait()?; - if !result.success() { - let msg = - format!("'asciidoctor' failed with exit code {:?}", result.code()); - return Err(ioerr(msg)); - } - Ok(()) -} - -fn legacy_generate_man_page>(outdir: P) -> io::Result<()> { - // If asciidoc isn't installed, then don't do anything. - if let Err(err) = process::Command::new("a2x").output() { - eprintln!("Could not run 'a2x' binary, skipping man page generation."); - eprintln!("Error from running 'a2x': {}", err); - return Ok(()); - } - // 1. Read asciidoc template. - // 2. Interpolate template with auto-generated docs. - // 3. Save interpolation to disk. - // 4. Use a2x (part of asciidoc) to convert to man page. - let outdir = outdir.as_ref(); - let cwd = env::current_dir()?; - let tpl_path = cwd.join("doc").join("rg.1.txt.tpl"); - let txt_path = outdir.join("rg.1.txt"); - - let mut tpl = String::new(); - File::open(&tpl_path)?.read_to_string(&mut tpl)?; - tpl = tpl.replace("{OPTIONS}", &formatted_options()?); - - let githash = git_revision_hash(); - let githash = githash.as_ref().map(|x| &**x); - tpl = tpl.replace("{VERSION}", &app::long_version(githash, false)); - - File::create(&txt_path)?.write_all(tpl.as_bytes())?; - let result = process::Command::new("a2x") - .arg("--no-xmllint") - .arg("--doctype") - .arg("manpage") - .arg("--format") - .arg("manpage") - .arg(&txt_path) - .spawn()? - .wait()?; - if !result.success() { - let msg = format!("'a2x' failed with exit code {:?}", result.code()); - return Err(ioerr(msg)); - } - Ok(()) -} - -fn formatted_options() -> io::Result { - let mut args = app::all_args_and_flags(); - args.sort_by(|x1, x2| x1.name.cmp(&x2.name)); - - let mut formatted = vec![]; - for arg in args { - if arg.hidden { - continue; - } - // ripgrep only has two positional arguments, and probably will only - // ever have two positional arguments, so we just hardcode them into - // the template. - if let app::RGArgKind::Positional { .. } = arg.kind { - continue; - } - formatted.push(formatted_arg(&arg)?); - } - Ok(formatted.join("\n\n")) -} - -fn formatted_arg(arg: &RGArg) -> io::Result { - match arg.kind { - RGArgKind::Positional { .. } => { - panic!("unexpected positional argument") - } - RGArgKind::Switch { long, short, multiple } => { - let mut out = vec![]; - - let mut header = format!("--{}", long); - if let Some(short) = short { - header = format!("-{}, {}", short, header); - } - if multiple { - header = format!("*{}* ...::", header); - } else { - header = format!("*{}*::", header); - } - writeln!(out, "{}", header)?; - writeln!(out, "{}", formatted_doc_txt(arg)?)?; - - Ok(String::from_utf8(out).unwrap()) - } - RGArgKind::Flag { long, short, value_name, multiple, .. } => { - let mut out = vec![]; - - let mut header = format!("--{}", long); - if let Some(short) = short { - header = format!("-{}, {}", short, header); - } - if multiple { - header = format!("*{}* _{}_ ...::", header, value_name); - } else { - header = format!("*{}* _{}_::", header, value_name); - } - writeln!(out, "{}", header)?; - writeln!(out, "{}", formatted_doc_txt(arg)?)?; - - Ok(String::from_utf8(out).unwrap()) - } - } -} - -fn formatted_doc_txt(arg: &RGArg) -> io::Result { - let paragraphs: Vec = arg - .doc_long - .replace("{", "{") - .replace("}", r"}") - // Hack to render ** literally in man page correctly. We can't put - // these crazy +++ in the help text directly, since that shows - // literally in --help output. - .replace("*-g 'foo/**'*", "*-g +++'foo/**'+++*") - .split("\n\n") - .map(|s| s.to_string()) - .collect(); - if paragraphs.is_empty() { - return Err(ioerr(format!("missing docs for --{}", arg.name))); - } - let first = format!(" {}", paragraphs[0].replace("\n", "\n ")); - if paragraphs.len() == 1 { - return Ok(first); - } - Ok(format!("{}\n+\n{}", first, paragraphs[1..].join("\n+\n"))) -} - -fn ioerr(msg: String) -> io::Error { - io::Error::new(io::ErrorKind::Other, msg) -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/build-deb b/collector/compile-benchmarks/ripgrep-13.0.0/ci/build-deb deleted file mode 100755 index 31f9b7197..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/build-deb +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -set -e -D="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" - -# This script builds a binary dpkg for Debian based distros. It does not -# currently run in CI, and is instead run manually and the resulting dpkg is -# uploaded to GitHub via the web UI. -# -# Note that this requires 'cargo deb', which can be installed with -# 'cargo install cargo-deb'. -# -# This should be run from the root of the ripgrep repo. - -if ! command -V cargo-deb > /dev/null 2>&1; then - echo "cargo-deb command missing" >&2 - exit 1 -fi - -if ! command -V asciidoctor > /dev/null 2>&1; then - echo "asciidoctor command missing" >&2 - exit 1 -fi - -# 'cargo deb' does not seem to provide a way to specify an asset that is -# created at build time, such as ripgrep's man page. To work around this, -# we force a debug build, copy out the man page (and shell completions) -# produced from that build, put it into a predictable location and then build -# the deb, which knows where to look. -cargo build - -DEPLOY_DIR=deployment/deb -OUT_DIR="$("$D"/cargo-out-dir target/debug/)" -mkdir -p "$DEPLOY_DIR" - -# Copy man page and shell completions. -cp "$OUT_DIR"/{rg.1,rg.bash,rg.fish} "$DEPLOY_DIR/" -cp complete/_rg "$DEPLOY_DIR/" - -# Since we're distributing the dpkg, we don't know whether the user will have -# PCRE2 installed, so just do a static build. -PCRE2_SYS_STATIC=1 cargo deb diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/cargo-out-dir b/collector/compile-benchmarks/ripgrep-13.0.0/ci/cargo-out-dir deleted file mode 100755 index 2b08d616a..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/cargo-out-dir +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Finds Cargo's `OUT_DIR` directory from the most recent build. -# -# This requires one parameter corresponding to the target directory -# to search for the build output. - -if [ $# != 1 ]; then - echo "Usage: $(basename "$0") " >&2 - exit 2 -fi - -# This works by finding the most recent stamp file, which is produced by -# every ripgrep build. -target_dir="$1" -find "$target_dir" -name ripgrep-stamp -print0 \ - | xargs -0 ls -t \ - | head -n1 \ - | xargs dirname diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/README.md b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/README.md deleted file mode 100644 index 89baa249e..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/README.md +++ /dev/null @@ -1,24 +0,0 @@ -These are Docker images used for cross compilation in CI builds (or locally) -via the [Cross](https://github.com/rust-embedded/cross) tool. - -The Cross tool actually provides its own Docker images, and all Docker images -in this directory are derived from one of them. We provide our own in order -to customize the environment. For example, we need to install some things like -`asciidoctor` in order to generate man pages. We also install compression tools -like `xz` so that tests for the `-z/--search-zip` flag are run. - -If you make a change to a Docker image, then you can re-build it. `cd` into the -directory containing the `Dockerfile` and run: - - $ cd x86_64-unknown-linux-musl - $ ./build - -At this point, subsequent uses of `cross` will now use your built image since -Docker prefers local images over remote images. In order to make these changes -stick, they need to be pushed to Docker Hub: - - $ docker push burntsushi/cross:x86_64-unknown-linux-musl - -Of course, only I (BurntSushi) can push to that location. To make `cross` use -a different location, then edit `Cross.toml` in the root of this repo to use -a different image name for the desired target. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile deleted file mode 100644 index 59901cb54..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM rustembedded/cross:arm-unknown-linux-gnueabihf - -COPY stage/ubuntu-install-packages / -RUN /ubuntu-install-packages diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/build b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/build deleted file mode 100755 index 107b8369b..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/arm-unknown-linux-gnueabihf/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -mkdir -p stage -cp ../../ubuntu-install-packages ./stage/ -docker build -t burntsushi/cross:arm-unknown-linux-gnueabihf . diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/Dockerfile b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/Dockerfile deleted file mode 100644 index 9c9107ea5..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM rustembedded/cross:i686-unknown-linux-gnu - -COPY stage/ubuntu-install-packages / -RUN /ubuntu-install-packages diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/build b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/build deleted file mode 100755 index 5837c8281..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/i686-unknown-linux-gnu/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -mkdir -p stage -cp ../../ubuntu-install-packages ./stage/ -docker build -t burntsushi/cross:i686-unknown-linux-gnu . diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile deleted file mode 100644 index 4b14616b7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM rustembedded/cross:mips64-unknown-linux-gnuabi64 - -COPY stage/ubuntu-install-packages / -RUN /ubuntu-install-packages diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/build b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/build deleted file mode 100755 index a15ca352e..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/mips64-unknown-linux-gnuabi64/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -mkdir -p stage -cp ../../ubuntu-install-packages ./stage/ -docker build -t burntsushi/cross:mips64-unknown-linux-gnuabi64 . diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/Dockerfile b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/Dockerfile deleted file mode 100644 index 8818b605c..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM rustembedded/cross:x86_64-unknown-linux-musl - -COPY stage/ubuntu-install-packages / -RUN /ubuntu-install-packages diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/build b/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/build deleted file mode 100755 index 7fce7c2a7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/docker/x86_64-unknown-linux-musl/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -mkdir -p stage -cp ../../ubuntu-install-packages ./stage/ -docker build -t burntsushi/cross:x86_64-unknown-linux-musl . diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/macos-install-packages b/collector/compile-benchmarks/ripgrep-13.0.0/ci/macos-install-packages deleted file mode 100755 index dc0955c5d..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/macos-install-packages +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -brew install asciidoctor diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/sha256-releases b/collector/compile-benchmarks/ripgrep-13.0.0/ci/sha256-releases deleted file mode 100755 index 670c9766c..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/sha256-releases +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -set -e - -if [ $# != 1 ]; then - echo "Usage: $(basename $0) version" >&2 - exit 1 -fi -version="$1" - -# Linux and Darwin builds. -for arch in i686 x86_64; do - for target in apple-darwin unknown-linux-musl; do - url="https://github.com/BurntSushi/ripgrep/releases/download/$version/ripgrep-$version-$arch-$target.tar.gz" - sha=$(curl -sfSL "$url" | sha256sum) - echo "$version-$arch-$target $sha" - done -done - -# Source. -for ext in zip tar.gz; do - url="https://github.com/BurntSushi/ripgrep/archive/$version.$ext" - sha=$(curl -sfSL "$url" | sha256sum) - echo "source.$ext $sha" -done diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/test-complete b/collector/compile-benchmarks/ripgrep-13.0.0/ci/test-complete deleted file mode 100755 index 3143cc490..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/test-complete +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env zsh - -emulate zsh -o extended_glob -o no_function_argzero -o no_unset - -## -# Compares options in `rg --help` output to options in zsh completion function - -get_comp_args() { - # Technically there are many options that the completion system sets that - # our function may rely on, but we'll trust that we've got it mostly right - setopt local_options unset - - # Our completion function recognises a special variable which tells it to - # dump the _arguments specs and then just return. But do this in a sub-shell - # anyway to avoid any weirdness - ( _RG_COMPLETE_LIST_ARGS=1 source $1 ) -} - -main() { - local diff - local rg="${0:a:h}/../${TARGET_DIR:-target}/release/rg" - local _rg="${0:a:h}/../complete/_rg" - local -a help_args comp_args - - [[ -e $rg ]] || rg=${rg/%\/release\/rg/\/debug\/rg} - - rg=${rg:a} - _rg=${_rg:a} - - [[ -e $rg ]] || { - print -r >&2 "File not found: $rg" - return 1 - } - [[ -e $_rg ]] || { - print -r >&2 "File not found: $_rg" - return 1 - } - - print -rl - 'Comparing options:' "-$rg" "+$_rg" - - # 'Parse' options out of the `--help` output. To prevent false positives we - # only look at lines where the first non-white-space character is `-`, or - # where a long option starting with certain letters (see `_rg`) is found. - # Occasionally we may have to handle some manually, however - help_args=( ${(f)"$( - $rg --help | - $rg -i -- '^\s+--?[a-z0-9.]|--[a-z]' | - $rg -ior '$1' -- $'[\t /\"\'`.,](-[a-z0-9.]|--[a-z0-9-]+)(,|\\b)' | - $rg -v -- --print0 | # False positives - sort -u - )"} ) - - # 'Parse' options out of the completion function - comp_args=( ${(f)"$( get_comp_args $_rg )"} ) - - # Note that we currently exclude hidden (!...) options; matching these - # properly against the `--help` output could be irritating - comp_args=( ${comp_args#\(*\)} ) # Strip excluded options - comp_args=( ${comp_args#\*} ) # Strip repetition indicator - comp_args=( ${comp_args%%-[:[]*} ) # Strip everything after -optname- - comp_args=( ${comp_args%%[:+=[]*} ) # Strip everything after other optspecs - comp_args=( ${comp_args##[^-]*} ) # Remove non-options - comp_args=( ${(f)"$( print -rl - $comp_args | sort -u )"} ) - - (( $#help_args )) || { - print -r >&2 'Failed to get help_args' - return 1 - } - (( $#comp_args )) || { - print -r >&2 'Failed to get comp_args' - return 1 - } - - diff="$( - if diff --help 2>&1 | grep -qF -- '--label'; then - diff -U2 \ - --label '`rg --help`' \ - --label '`_rg`' \ - =( print -rl - $help_args ) =( print -rl - $comp_args ) - else - diff -U2 \ - -L '`rg --help`' \ - -L '`_rg`' \ - =( print -rl - $help_args ) =( print -rl - $comp_args ) - fi - )" - - (( $#diff )) && { - printf >&2 '%s\n' 'zsh completion options differ from `--help` options:' - printf >&2 '%s\n' $diff - return 1 - } - printf 'OK\n' - return 0 -} - -main "$@" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/ubuntu-install-packages b/collector/compile-benchmarks/ripgrep-13.0.0/ci/ubuntu-install-packages deleted file mode 100755 index b372e0e47..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/ubuntu-install-packages +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -sudo apt-get update -sudo apt-get install -y --no-install-recommends \ - asciidoctor \ - zsh xz-utils liblz4-tool musl-tools diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/ci/utils.sh b/collector/compile-benchmarks/ripgrep-13.0.0/ci/utils.sh deleted file mode 100644 index f3dc96d28..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/ci/utils.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash - -# Various utility functions used through CI. - -# Finds Cargo's `OUT_DIR` directory from the most recent build. -# -# This requires one parameter corresponding to the target directory -# to search for the build output. -cargo_out_dir() { - # This works by finding the most recent stamp file, which is produced by - # every ripgrep build. - target_dir="$1" - find "$target_dir" -name ripgrep-stamp -print0 \ - | xargs -0 ls -t \ - | head -n1 \ - | xargs dirname -} - -host() { - case "$TRAVIS_OS_NAME" in - linux) - echo x86_64-unknown-linux-gnu - ;; - osx) - echo x86_64-apple-darwin - ;; - esac -} - -architecture() { - case "$TARGET" in - x86_64-*) - echo amd64 - ;; - i686-*|i586-*|i386-*) - echo i386 - ;; - arm*-unknown-linux-gnueabihf) - echo armhf - ;; - *) - die "architecture: unexpected target $TARGET" - ;; - esac -} - -gcc_prefix() { - case "$(architecture)" in - armhf) - echo arm-linux-gnueabihf- - ;; - *) - return - ;; - esac -} - -is_musl() { - case "$TARGET" in - *-musl) return 0 ;; - *) return 1 ;; - esac -} - -is_x86() { - case "$(architecture)" in - amd64|i386) return 0 ;; - *) return 1 ;; - esac -} - -is_x86_64() { - case "$(architecture)" in - amd64) return 0 ;; - *) return 1 ;; - esac -} - -is_arm() { - case "$(architecture)" in - armhf) return 0 ;; - *) return 1 ;; - esac -} - -is_linux() { - case "$TRAVIS_OS_NAME" in - linux) return 0 ;; - *) return 1 ;; - esac -} - -is_osx() { - case "$TRAVIS_OS_NAME" in - osx) return 0 ;; - *) return 1 ;; - esac -} - -builder() { - if is_musl && is_x86_64; then - cargo install cross - echo "cross" - else - echo "cargo" - fi -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/complete/_rg b/collector/compile-benchmarks/ripgrep-13.0.0/complete/_rg deleted file mode 100644 index 31bc697c7..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/complete/_rg +++ /dev/null @@ -1,640 +0,0 @@ -#compdef rg - -## -# zsh completion function for ripgrep -# -# Run ci/test-complete after building to ensure that the options supported by -# this function stay in synch with the `rg` binary. -# -# For convenience, a completion reference guide is included at the bottom of -# this file. -# -# Originally based on code from the zsh-users project — see copyright notice -# below. - -_rg() { - local curcontext=$curcontext no='!' descr ret=1 - local -a context line state state_descr args tmp suf - local -A opt_args - - # ripgrep has many options which negate the effect of a more common one — for - # example, `--no-column` to negate `--column`, and `--messages` to negate - # `--no-messages`. There are so many of these, and they're so infrequently - # used, that some users will probably find it irritating if they're completed - # indiscriminately, so let's not do that unless either the current prefix - # matches one of those negation options or the user has the `complete-all` - # style set. Note that this prefix check has to be updated manually to account - # for all of the potential negation options listed below! - if - # We also want to list all of these options during testing - [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] || - # (--[imnp]* => --ignore*, --messages, --no-*, --pcre2-unicode) - [[ $PREFIX$SUFFIX == --[imnp]* ]] || - zstyle -t ":complete:$curcontext:*" complete-all - then - no= - fi - - # We make heavy use of argument groups here to prevent the option specs from - # growing unwieldy. These aren't supported in zsh <5.4, though, so we'll strip - # them out below if necessary. This makes the exclusions inaccurate on those - # older versions, but oh well — it's not that big a deal - args=( - + '(exclusive)' # Misc. fully exclusive options - '(: * -)'{-h,--help}'[display help information]' - '(: * -)'{-V,--version}'[display version information]' - '(: * -)'--pcre2-version'[print the version of PCRE2 used by ripgrep, if available]' - - + '(buffered)' # buffering options - '--line-buffered[force line buffering]' - $no"--no-line-buffered[don't force line buffering]" - '--block-buffered[force block buffering]' - $no"--no-block-buffered[don't force block buffering]" - - + '(case)' # Case-sensitivity options - {-i,--ignore-case}'[search case-insensitively]' - {-s,--case-sensitive}'[search case-sensitively]' - {-S,--smart-case}'[search case-insensitively if pattern is all lowercase]' - - + '(context-a)' # Context (after) options - '(context-c)'{-A+,--after-context=}'[specify lines to show after each match]:number of lines' - - + '(context-b)' # Context (before) options - '(context-c)'{-B+,--before-context=}'[specify lines to show before each match]:number of lines' - - + '(context-c)' # Context (combined) options - '(context-a context-b)'{-C+,--context=}'[specify lines to show before and after each match]:number of lines' - - + '(column)' # Column options - '--column[show column numbers for matches]' - $no"--no-column[don't show column numbers for matches]" - - + '(count)' # Counting options - {-c,--count}'[only show count of matching lines for each file]' - '--count-matches[only show count of individual matches for each file]' - '--include-zero[include files with zero matches in summary]' - - + '(encoding)' # Encoding options - {-E+,--encoding=}'[specify text encoding of files to search]: :_rg_encodings' - $no'--no-encoding[use default text encoding]' - - + '(engine)' # Engine choice options - '--engine=[select which regex engine to use]:when:(( - default\:"use default engine" - pcre2\:"identical to --pcre2" - auto\:"identical to --auto-hybrid-regex" - ))' - - + file # File-input options - '(1)*'{-f+,--file=}'[specify file containing patterns to search for]: :_files' - - + '(file-match)' # Files with/without match options - '(stats)'{-l,--files-with-matches}'[only show names of files with matches]' - '(stats)--files-without-match[only show names of files without matches]' - - + '(file-name)' # File-name options - {-H,--with-filename}'[show file name for matches]' - {-I,--no-filename}"[don't show file name for matches]" - - + '(file-system)' # File system options - "--one-file-system[don't descend into directories on other file systems]" - $no'--no-one-file-system[descend into directories on other file systems]' - - + '(fixed)' # Fixed-string options - {-F,--fixed-strings}'[treat pattern as literal string instead of regular expression]' - $no"--no-fixed-strings[don't treat pattern as literal string]" - - + '(follow)' # Symlink-following options - {-L,--follow}'[follow symlinks]' - $no"--no-follow[don't follow symlinks]" - - + glob # File-glob options - '*'{-g+,--glob=}'[include/exclude files matching specified glob]:glob' - '*--iglob=[include/exclude files matching specified case-insensitive glob]:glob' - - + '(glob-case-insensitive)' # File-glob case sensitivity options - '--glob-case-insensitive[treat -g/--glob patterns case insensitively]' - $no'--no-glob-case-insensitive[treat -g/--glob patterns case sensitively]' - - + '(heading)' # Heading options - '(pretty-vimgrep)--heading[show matches grouped by file name]' - "(pretty-vimgrep)--no-heading[don't show matches grouped by file name]" - - + '(hidden)' # Hidden-file options - {-.,--hidden}'[search hidden files and directories]' - $no"--no-hidden[don't search hidden files and directories]" - - + '(hybrid)' # hybrid regex options - '--auto-hybrid-regex[dynamically use PCRE2 if necessary]' - $no"--no-auto-hybrid-regex[don't dynamically use PCRE2 if necessary]" - - + '(ignore)' # Ignore-file options - "(--no-ignore-global --no-ignore-parent --no-ignore-vcs --no-ignore-dot)--no-ignore[don't respect ignore files]" - $no'(--ignore-global --ignore-parent --ignore-vcs --ignore-dot)--ignore[respect ignore files]' - - + '(ignore-file-case-insensitive)' # Ignore-file case sensitivity options - '--ignore-file-case-insensitive[process ignore files case insensitively]' - $no'--no-ignore-file-case-insensitive[process ignore files case sensitively]' - - + '(ignore-exclude)' # Local exclude (ignore)-file options - "--no-ignore-exclude[don't respect local exclude (ignore) files]" - $no'--ignore-exclude[respect local exclude (ignore) files]' - - + '(ignore-global)' # Global ignore-file options - "--no-ignore-global[don't respect global ignore files]" - $no'--ignore-global[respect global ignore files]' - - + '(ignore-parent)' # Parent ignore-file options - "--no-ignore-parent[don't respect ignore files in parent directories]" - $no'--ignore-parent[respect ignore files in parent directories]' - - + '(ignore-vcs)' # VCS ignore-file options - "--no-ignore-vcs[don't respect version control ignore files]" - $no'--ignore-vcs[respect version control ignore files]' - - + '(require-git)' # git specific settings - "--no-require-git[don't require git repository to respect gitignore rules]" - $no'--require-git[require git repository to respect gitignore rules]' - - + '(ignore-dot)' # .ignore options - "--no-ignore-dot[don't respect .ignore files]" - $no'--ignore-dot[respect .ignore files]' - - + '(ignore-files)' # custom global ignore file options - "--no-ignore-files[don't respect --ignore-file flags]" - $no'--ignore-files[respect --ignore-file files]' - - + '(json)' # JSON options - '--json[output results in JSON Lines format]' - $no"--no-json[don't output results in JSON Lines format]" - - + '(line-number)' # Line-number options - {-n,--line-number}'[show line numbers for matches]' - {-N,--no-line-number}"[don't show line numbers for matches]" - - + '(line-terminator)' # Line-terminator options - '--crlf[use CRLF as line terminator]' - $no"--no-crlf[don't use CRLF as line terminator]" - '(text)--null-data[use NUL as line terminator]' - - + '(max-columns-preview)' # max column preview options - '--max-columns-preview[show preview for long lines (with -M)]' - $no"--no-max-columns-preview[don't show preview for long lines (with -M)]" - - + '(max-depth)' # Directory-depth options - '--max-depth=[specify max number of directories to descend]:number of directories' - '!--maxdepth=:number of directories' - - + '(messages)' # Error-message options - '(--no-ignore-messages)--no-messages[suppress some error messages]' - $no"--messages[don't suppress error messages affected by --no-messages]" - - + '(messages-ignore)' # Ignore-error message options - "--no-ignore-messages[don't show ignore-file parse error messages]" - $no'--ignore-messages[show ignore-file parse error messages]' - - + '(mmap)' # mmap options - '--mmap[search using memory maps when possible]' - "--no-mmap[don't search using memory maps]" - - + '(multiline)' # Multiline options - {-U,--multiline}'[permit matching across multiple lines]' - $no'(multiline-dotall)--no-multiline[restrict matches to at most one line each]' - - + '(multiline-dotall)' # Multiline DOTALL options - '(--no-multiline)--multiline-dotall[allow "." to match newline (with -U)]' - $no"(--no-multiline)--no-multiline-dotall[don't allow \".\" to match newline (with -U)]" - - + '(only)' # Only-match options - {-o,--only-matching}'[show only matching part of each line]' - - + '(passthru)' # Pass-through options - '(--vimgrep)--passthru[show both matching and non-matching lines]' - '!(--vimgrep)--passthrough' - - + '(pcre2)' # PCRE2 options - {-P,--pcre2}'[enable matching with PCRE2]' - $no'(pcre2-unicode)--no-pcre2[disable matching with PCRE2]' - - + '(pcre2-unicode)' # PCRE2 Unicode options - $no'(--no-pcre2 --no-pcre2-unicode)--pcre2-unicode[enable PCRE2 Unicode mode (with -P)]' - '(--no-pcre2 --pcre2-unicode)--no-pcre2-unicode[disable PCRE2 Unicode mode (with -P)]' - - + '(pre)' # Preprocessing options - '(-z --search-zip)--pre=[specify preprocessor utility]:preprocessor utility:_command_names -e' - $no'--no-pre[disable preprocessor utility]' - - + pre-glob # Preprocessing glob options - '*--pre-glob[include/exclude files for preprocessing with --pre]' - - + '(pretty-vimgrep)' # Pretty/vimgrep display options - '(heading)'{-p,--pretty}'[alias for --color=always --heading -n]' - '(heading passthru)--vimgrep[show results in vim-compatible format]' - - + regexp # Explicit pattern options - '(1 file)*'{-e+,--regexp=}'[specify pattern]:pattern' - - + '(replace)' # Replacement options - {-r+,--replace=}'[specify string used to replace matches]:replace string' - - + '(sort)' # File-sorting options - '(threads)--sort=[sort results in ascending order (disables parallelism)]:sort method:(( - none\:"no sorting" - path\:"sort by file path" - modified\:"sort by last modified time" - accessed\:"sort by last accessed time" - created\:"sort by creation time" - ))' - '(threads)--sortr=[sort results in descending order (disables parallelism)]:sort method:(( - none\:"no sorting" - path\:"sort by file path" - modified\:"sort by last modified time" - accessed\:"sort by last accessed time" - created\:"sort by creation time" - ))' - '!(threads)--sort-files[sort results by file path (disables parallelism)]' - - + '(stats)' # Statistics options - '(--files file-match)--stats[show search statistics]' - $no"--no-stats[don't show search statistics]" - - + '(text)' # Binary-search options - {-a,--text}'[search binary files as if they were text]' - "--binary[search binary files, don't print binary data]" - $no"--no-binary[don't search binary files]" - $no"(--null-data)--no-text[don't search binary files as if they were text]" - - + '(threads)' # Thread-count options - '(sort)'{-j+,--threads=}'[specify approximate number of threads to use]:number of threads' - - + '(trim)' # Trim options - '--trim[trim any ASCII whitespace prefix from each line]' - $no"--no-trim[don't trim ASCII whitespace prefix from each line]" - - + type # Type options - '*'{-t+,--type=}'[only search files matching specified type]: :_rg_types' - '*--type-add=[add new glob for specified file type]: :->typespec' - '*--type-clear=[clear globs previously defined for specified file type]: :_rg_types' - # This should actually be exclusive with everything but other type options - '(: *)--type-list[show all supported file types and their associated globs]' - '*'{-T+,--type-not=}"[don't search files matching specified file type]: :_rg_types" - - + '(word-line)' # Whole-word/line match options - {-w,--word-regexp}'[only show matches surrounded by word boundaries]' - {-x,--line-regexp}'[only show matches surrounded by line boundaries]' - - + '(unicode)' # Unicode options - $no'--unicode[enable Unicode mode]' - '--no-unicode[disable Unicode mode]' - - + '(zip)' # Compression options - '(--pre)'{-z,--search-zip}'[search in compressed files]' - $no"--no-search-zip[don't search in compressed files]" - - + misc # Other options — no need to separate these at the moment - '(-b --byte-offset)'{-b,--byte-offset}'[show 0-based byte offset for each matching line]' - '--color=[specify when to use colors in output]:when:(( - never\:"never use colors" - auto\:"use colors or not based on stdout, TERM, etc." - always\:"always use colors" - ansi\:"always use ANSI colors (even on Windows)" - ))' - '*--colors=[specify color and style settings]: :->colorspec' - '--context-separator=[specify string used to separate non-continuous context lines in output]:separator' - $no"--no-context-separator[don't print context separators]" - '--debug[show debug messages]' - '--field-context-separator[set string to delimit fields in context lines]' - '--field-match-separator[set string to delimit fields in matching lines]' - '--trace[show more verbose debug messages]' - '--dfa-size-limit=[specify upper size limit of generated DFA]:DFA size (bytes)' - "(1 stats)--files[show each file that would be searched (but don't search)]" - '*--ignore-file=[specify additional ignore file]:ignore file:_files' - '(-v --invert-match)'{-v,--invert-match}'[invert matching]' - '(-M --max-columns)'{-M+,--max-columns=}'[specify max length of lines to print]:number of bytes' - '(-m --max-count)'{-m+,--max-count=}'[specify max number of matches per file]:number of matches' - '--max-filesize=[specify size above which files should be ignored]:file size (bytes)' - "--no-config[don't load configuration files]" - '(-0 --null)'{-0,--null}'[print NUL byte after file names]' - '--path-separator=[specify path separator to use when printing file names]:separator' - '(-q --quiet)'{-q,--quiet}'[suppress normal output]' - '--regex-size-limit=[specify upper size limit of compiled regex]:regex size (bytes)' - '*'{-u,--unrestricted}'[reduce level of "smart" searching]' - - + operand # Operands - '(--files --type-list file regexp)1: :_guard "^-*" pattern' - '(--type-list)*: :_files' - ) - - # This is used with test-complete to verify that there are no options - # listed in the help output that aren't also defined here - [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] && { - print -rl - $args - return 0 - } - - # Strip out argument groups where unsupported (see above) - [[ $ZSH_VERSION == (4|5.<0-3>)(.*)# ]] && - args=( ${(@)args:#(#i)(+|[a-z0-9][a-z0-9_-]#|\([a-z0-9][a-z0-9_-]#\))} ) - - _arguments -C -s -S : $args && ret=0 - - case $state in - colorspec) - if [[ ${IPREFIX#--*=}$PREFIX == [^:]# ]]; then - suf=( -qS: ) - tmp=( - 'column:specify coloring for column numbers' - 'line:specify coloring for line numbers' - 'match:specify coloring for match text' - 'path:specify coloring for file names' - ) - descr='color/style type' - elif [[ ${IPREFIX#--*=}$PREFIX == (column|line|match|path):[^:]# ]]; then - suf=( -qS: ) - tmp=( - 'none:clear color/style for type' - 'bg:specify background color' - 'fg:specify foreground color' - 'style:specify text style' - ) - descr='color/style attribute' - elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:(bg|fg):[^:]# ]]; then - tmp=( black blue green red cyan magenta yellow white ) - descr='color name or r,g,b' - elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:style:[^:]# ]]; then - tmp=( {,no}bold {,no}intense {,no}underline ) - descr='style name' - else - _message -e colorspec 'no more arguments' - fi - - (( $#tmp )) && { - compset -P '*:' - _describe -t colorspec $descr tmp $suf && ret=0 - } - ;; - - typespec) - if compset -P '[^:]##:include:'; then - _sequence -s , _rg_types && ret=0 - # @todo This bit in particular could be better, but it's a little - # complex, and attempting to solve it seems to run us up against a crash - # bug — zsh # 40362 - elif compset -P '[^:]##:'; then - _message 'glob or include directive' && ret=1 - elif [[ ! -prefix *:* ]]; then - _rg_types -qS : && ret=0 - fi - ;; - esac - - return ret -} - -# Complete encodings -_rg_encodings() { - local -a expl - local -aU _encodings - - # This is impossible to read, but these encodings rarely if ever change, so it - # probably doesn't matter. They are derived from the list given here: - # https://encoding.spec.whatwg.org/#concept-encoding-get - _encodings=( - {{,us-}ascii,arabic,chinese,cyrillic,greek{,8},hebrew,korean} - logical visual mac {,cs}macintosh x-mac-{cyrillic,roman,ukrainian} - 866 ibm{819,866} csibm866 - big5{,-hkscs} {cn-,cs}big5 x-x-big5 - cp{819,866,125{0..8}} x-cp125{0..8} - csiso2022{jp,kr} csiso8859{6,8}{e,i} - csisolatin{{1..6},9} csisolatin{arabic,cyrillic,greek,hebrew} - ecma-{114,118} asmo-708 elot_928 sun_eu_greek - euc-{jp,kr} x-euc-jp cseuckr cseucpkdfmtjapanese - {,x-}gbk csiso58gb231280 gb18030 {,cs}gb2312 gb_2312{,-80} hz-gb-2312 - iso-2022-{cn,cn-ext,jp,kr} - iso8859{,-}{{1..11},13,14,15} - iso-8859-{{1..11},{6,8}-{e,i},13,14,15,16} iso_8859-{{1..9},15} - iso_8859-{1,2,6,7}:1987 iso_8859-{3,4,5,8}:1988 iso_8859-9:1989 - iso-ir-{58,100,101,109,110,126,127,138,144,148,149,157} - koi{,8,8-r,8-ru,8-u,8_r} cskoi8r - ks_c_5601-{1987,1989} ksc{,_}5691 csksc56011987 - latin{1..6} l{{1..6},9} - shift{-,_}jis csshiftjis {,x-}sjis ms_kanji ms932 - utf{,-}8 utf-16{,be,le} unicode-1-1-utf-8 - windows-{31j,874,949,125{0..8}} dos-874 tis-620 ansi_x3.4-1968 - x-user-defined auto none - ) - - _wanted encodings expl encoding compadd -a "$@" - _encodings -} - -# Complete file types -_rg_types() { - local -a expl - local -aU _types - - _types=( ${(@)${(f)"$( _call_program types rg --type-list )"}%%:*} ) - - _wanted types expl 'file type' compadd -a "$@" - _types -} - -_rg "$@" - -################################################################################ -# ZSH COMPLETION REFERENCE -# -# For the convenience of developers who aren't especially familiar with zsh -# completion functions, a brief reference guide follows. This is in no way -# comprehensive; it covers just enough of the basic structure, syntax, and -# conventions to help someone make simple changes like adding new options. For -# more complete documentation regarding zsh completion functions, please see the -# following: -# -# * http://zsh.sourceforge.net/Doc/Release/Completion-System.html -# * https://github.com/zsh-users/zsh/blob/master/Etc/completion-style-guide -# -# OVERVIEW -# -# Most zsh completion functions are defined in terms of `_arguments`, which is a -# shell function that takes a series of argument specifications. The specs for -# `rg` are stored in an array, which is common for more complex functions; the -# elements of the array are passed to `_arguments` on invocation. -# -# ARGUMENT-SPECIFICATION SYNTAX -# -# The following is a contrived example of the argument specs for a simple tool: -# -# '(: * -)'{-h,--help}'[display help information]' -# '(-q -v --quiet --verbose)'{-q,--quiet}'[decrease output verbosity]' -# '!(-q -v --quiet --verbose)--silent' -# '(-q -v --quiet --verbose)'{-v,--verbose}'[increase output verbosity]' -# '--color=[specify when to use colors]:when:(always never auto)' -# '*:example file:_files' -# -# Although there may appear to be six specs here, there are actually nine; we -# use brace expansion to combine specs for options that go by multiple names, -# like `-q` and `--quiet`. This is customary, and ties in with the fact that zsh -# merges completion possibilities together when they have the same description. -# -# The first line defines the option `-h`/`--help`. With most tools, it isn't -# useful to complete anything after `--help` because it effectively overrides -# all others; the `(: * -)` at the beginning of the spec tells zsh not to -# complete any other operands (`:` and `*`) or options (`-`) after this one has -# been used. The `[...]` at the end associates a description with `-h`/`--help`; -# as mentioned, zsh will see the identical descriptions and merge these options -# together when offering completion possibilities. -# -# The next line defines `-q`/`--quiet`. Here we don't want to suppress further -# completions entirely, but we don't want to offer `-q` if `--quiet` has been -# given (since they do the same thing), nor do we want to offer `-v` (since it -# doesn't make sense to be quiet and verbose at the same time). We don't need to -# tell zsh not to offer `--quiet` a second time, since that's the default -# behaviour, but since this line expands to two specs describing `-q` *and* -# `--quiet` we do need to explicitly list all of them here. -# -# The next line defines a hidden option `--silent` — maybe it's a deprecated -# synonym for `--quiet`. The leading `!` indicates that zsh shouldn't offer this -# option during completion. The benefit of providing a spec for an option that -# shouldn't be completed is that, if someone *does* use it, we can correctly -# suppress completion of other options afterwards. -# -# The next line defines `-v`/`--verbose`; this works just like `-q`/`--quiet`. -# -# The next line defines `--color`. In this example, `--color` doesn't have a -# corresponding short option, so we don't need to use brace expansion. Further, -# there are no other options it's exclusive with (just itself), so we don't need -# to define those at the beginning. However, it does take a mandatory argument. -# The `=` at the end of `--color=` indicates that the argument may appear either -# like `--color always` or like `--color=always`; this is how most GNU-style -# command-line tools work. The corresponding short option would normally use `+` -# — for example, `-c+` would allow either `-c always` or `-calways`. For this -# option, the arguments are known ahead of time, so we can simply list them in -# parentheses at the end (`when` is used as the description for the argument). -# -# The last line defines an operand (a non-option argument). In this example, the -# operand can be used any number of times (the leading `*`), and it should be a -# file path, so we tell zsh to call the `_files` function to complete it. The -# `example file` in the middle is the description to use for this operand; we -# could use a space instead to accept the default provided by `_files`. -# -# GROUPING ARGUMENT SPECIFICATIONS -# -# Newer versions of zsh support grouping argument specs together. All specs -# following a `+` and then a group name are considered to be members of the -# named group. Grouping is useful mostly for organisational purposes; it makes -# the relationship between different options more obvious, and makes it easier -# to specify exclusions. -# -# We could rewrite our example above using grouping as follows: -# -# '(: * -)'{-h,--help}'[display help information]' -# '--color=[specify when to use colors]:when:(always never auto)' -# '*:example file:_files' -# + '(verbosity)' -# {-q,--quiet}'[decrease output verbosity]' -# '!--silent' -# {-v,--verbose}'[increase output verbosity]' -# -# Here we take advantage of a useful feature of spec grouping — when the group -# name is surrounded by parentheses, as in `(verbosity)`, it tells zsh that all -# of the options in that group are exclusive with each other. As a result, we -# don't need to manually list out the exclusions at the beginning of each -# option. -# -# Groups can also be referred to by name in other argument specs; for example: -# -# '(xyz)--aaa' '*: :_files' -# + xyz --xxx --yyy --zzz -# -# Here we use the group name `xyz` to tell zsh that `--xxx`, `--yyy`, and -# `--zzz` are not to be completed after `--aaa`. This makes the exclusion list -# much more compact and reusable. -# -# CONVENTIONS -# -# zsh completion functions generally adhere to the following conventions: -# -# * Use two spaces for indentation -# * Combine specs for options with different names using brace expansion -# * In combined specs, list the short option first (as in `{-a,--text}`) -# * Use `+` or `=` as described above for options that take arguments -# * Provide a description for all options, option-arguments, and operands -# * Capitalise/punctuate argument descriptions as phrases, not complete -# sentences — 'display help information', never 'Display help information.' -# (but still capitalise acronyms and proper names) -# * Write argument descriptions as verb phrases — 'display x', 'enable y', -# 'use z' -# * Word descriptions to make it clear when an option expects an argument; -# usually this is done with the word 'specify', as in 'specify x' or -# 'use specified x') -# * Write argument descriptions as tersely as possible — for example, articles -# like 'a' and 'the' should be omitted unless it would be confusing -# -# Other conventions currently used by this function: -# -# * Order argument specs alphabetically by group name, then option name -# * Group options that are directly related, mutually exclusive, or frequently -# referenced by other argument specs -# * Use only characters in the set [a-z0-9_-] in group names -# * Order exclusion lists as follows: short options, long options, groups -# * Use American English in descriptions -# * Use 'don't' in descriptions instead of 'do not' -# * Word descriptions for related options as similarly as possible. For example, -# `--foo[enable foo]` and `--no-foo[disable foo]`, or `--foo[use foo]` and -# `--no-foo[don't use foo]` -# * Word descriptions to make it clear when an option only makes sense with -# another option, usually by adding '(with -x)' to the end -# * Don't quote strings or variables unnecessarily. When quotes are required, -# prefer single-quotes to double-quotes -# * Prefix option specs with `$no` when the option serves only to negate the -# behaviour of another option that must be provided explicitly by the user. -# This prevents rarely used options from cluttering up the completion menu -################################################################################ - -# ------------------------------------------------------------------------------ -# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the zsh-users nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ------------------------------------------------------------------------------ -# Description -# ----------- -# -# Completion script for ripgrep -# -# ------------------------------------------------------------------------------ -# Authors -# ------- -# -# * arcizan -# * MaskRay -# -# ------------------------------------------------------------------------------ - -# Local Variables: -# mode: shell-script -# coding: utf-8-unix -# indent-tabs-mode: nil -# sh-indentation: 2 -# sh-basic-offset: 2 -# End: -# vim: ft=zsh sw=2 ts=2 et diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/README.md b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/README.md deleted file mode 100644 index 44920e438..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/README.md +++ /dev/null @@ -1,15 +0,0 @@ -ripgrep core ------------- -This is the core ripgrep crate. In particular, `main.rs` is where the `main` -function lives. - -Most of ripgrep core consists of two things: - -* The definition of the CLI interface, including docs for every flag. -* Glue code that brings the `grep-matcher`, `grep-regex`, `grep-searcher` and - `grep-printer` crates together to actually execute the search. - -Currently, there are no plans to make ripgrep core available as an independent -library. However, much of the heavy lifting of ripgrep is done via its -constituent crates, which can be reused independent of ripgrep. Unfortunately, -there is no guide or tutorial to teach folks how to do this yet. diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/app.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/app.rs deleted file mode 100644 index 968011942..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/app.rs +++ /dev/null @@ -1,3109 +0,0 @@ -// This module defines the set of command line arguments that ripgrep supports, -// including some light validation. -// -// This module is purposely written in a bare-bones way, since it is included -// in ripgrep's build.rs file as a way to generate a man page and completion -// files for common shells. -// -// The only other place that ripgrep deals with clap is in src/args.rs, which -// is where we read clap's configuration from the end user's arguments and turn -// it into a ripgrep-specific configuration type that is not coupled with clap. - -use clap::{self, crate_authors, crate_version, App, AppSettings}; -use lazy_static::lazy_static; - -const ABOUT: &str = " -ripgrep (rg) recursively searches the current directory for a regex pattern. -By default, ripgrep will respect gitignore rules and automatically skip hidden -files/directories and binary files. - -Use -h for short descriptions and --help for more details. - -Project home page: https://github.com/BurntSushi/ripgrep -"; - -const USAGE: &str = " - rg [OPTIONS] PATTERN [PATH ...] - rg [OPTIONS] -e PATTERN ... [PATH ...] - rg [OPTIONS] -f PATTERNFILE ... [PATH ...] - rg [OPTIONS] --files [PATH ...] - rg [OPTIONS] --type-list - command | rg [OPTIONS] PATTERN - rg [OPTIONS] --help - rg [OPTIONS] --version"; - -const TEMPLATE: &str = "\ -{bin} {version} -{author} -{about} - -USAGE:{usage} - -ARGS: -{positionals} - -OPTIONS: -{unified}"; - -/// Build a clap application parameterized by usage strings. -pub fn app() -> App<'static, 'static> { - // We need to specify our version in a static because we've painted clap - // into a corner. We've told it that every string we give it will be - // 'static, but we need to build the version string dynamically. We can - // fake the 'static lifetime with lazy_static. - lazy_static! { - static ref LONG_VERSION: String = long_version(None, true); - } - - let mut app = App::new("ripgrep") - .author(crate_authors!()) - .version(crate_version!()) - .long_version(LONG_VERSION.as_str()) - .about(ABOUT) - .max_term_width(100) - .setting(AppSettings::UnifiedHelpMessage) - .setting(AppSettings::AllArgsOverrideSelf) - .usage(USAGE) - .template(TEMPLATE) - .help_message("Prints help information. Use --help for more details."); - for arg in all_args_and_flags() { - app = app.arg(arg.claparg); - } - app -} - -/// Return the "long" format of ripgrep's version string. -/// -/// If a revision hash is given, then it is used. If one isn't given, then -/// the RIPGREP_BUILD_GIT_HASH env var is inspected for it. If that isn't set, -/// then a revision hash is not included in the version string returned. -/// -/// If `cpu` is true, then the version string will include the compiled and -/// runtime CPU features. -pub fn long_version(revision_hash: Option<&str>, cpu: bool) -> String { - // Do we have a git hash? - // (Yes, if ripgrep was built on a machine with `git` installed.) - let hash = match revision_hash.or(option_env!("RIPGREP_BUILD_GIT_HASH")) { - None => String::new(), - Some(githash) => format!(" (rev {})", githash), - }; - if !cpu { - format!("{}{}", crate_version!(), hash,) - } else { - let runtime = runtime_cpu_features(); - if runtime.is_empty() { - format!( - "{}{}\n{} (compiled)", - crate_version!(), - hash, - compile_cpu_features().join(" ") - ) - } else { - format!( - "{}{}\n{} (compiled)\n{} (runtime)", - crate_version!(), - hash, - compile_cpu_features().join(" "), - runtime.join(" ") - ) - } - } -} - -/// Returns the relevant CPU features enabled at compile time. -fn compile_cpu_features() -> Vec<&'static str> { - let mut features = vec![]; - if cfg!(feature = "simd-accel") { - features.push("+SIMD"); - } else { - features.push("-SIMD"); - } - if cfg!(feature = "avx-accel") { - features.push("+AVX"); - } else { - features.push("-AVX"); - } - features -} - -/// Returns the relevant CPU features enabled at runtime. -#[cfg(target_arch = "x86_64")] -fn runtime_cpu_features() -> Vec<&'static str> { - // This is kind of a dirty violation of abstraction, since it assumes - // knowledge about what specific SIMD features are being used. - - let mut features = vec![]; - if is_x86_feature_detected!("ssse3") { - features.push("+SIMD"); - } else { - features.push("-SIMD"); - } - if is_x86_feature_detected!("avx2") { - features.push("+AVX"); - } else { - features.push("-AVX"); - } - features -} - -/// Returns the relevant CPU features enabled at runtime. -#[cfg(not(target_arch = "x86_64"))] -fn runtime_cpu_features() -> Vec<&'static str> { - vec![] -} - -/// Arg is a light alias for a clap::Arg that is specialized to compile time -/// string literals. -type Arg = clap::Arg<'static, 'static>; - -/// RGArg is a light wrapper around a clap::Arg and also contains some metadata -/// about the underlying Arg so that it can be inspected for other purposes -/// (e.g., hopefully generating a man page). -/// -/// Note that this type is purposely overly constrained to ripgrep's particular -/// use of clap. -#[allow(dead_code)] -#[derive(Clone)] -pub struct RGArg { - /// The underlying clap argument. - claparg: Arg, - /// The name of this argument. This is always present and is the name - /// used in the code to find the value of an argument at runtime. - pub name: &'static str, - /// A short documentation string describing this argument. This string - /// should fit on a single line and be a complete sentence. - /// - /// This is shown in the `-h` output. - pub doc_short: &'static str, - /// A longer documentation string describing this argument. This usually - /// starts with the contents of `doc_short`. This is also usually many - /// lines, potentially paragraphs, and may contain examples and additional - /// prose. - /// - /// This is shown in the `--help` output. - pub doc_long: &'static str, - /// Whether this flag is hidden or not. - /// - /// This is typically used for uncommon flags that only serve to override - /// other flags. For example, --no-ignore is a prominent flag that disables - /// ripgrep's gitignore functionality, but --ignore re-enables it. Since - /// gitignore support is enabled by default, use of the --ignore flag is - /// somewhat niche and relegated to special cases when users make use of - /// configuration files to set defaults. - /// - /// Generally, these flags should be documented in the documentation for - /// the flag they override. - pub hidden: bool, - /// The type of this argument. - pub kind: RGArgKind, -} - -/// The kind of a ripgrep argument. -/// -/// This can be one of three possibilities: a positional argument, a boolean -/// switch flag or a flag that accepts exactly one argument. Each variant -/// stores argument type specific data. -/// -/// Note that clap supports more types of arguments than this, but we don't -/// (and probably shouldn't) use them in ripgrep. -/// -/// Finally, note that we don't capture *all* state about an argument in this -/// type. Some state is only known to clap. There isn't any particular reason -/// why; the state we do capture is motivated by use cases (like generating -/// documentation). -#[derive(Clone)] -pub enum RGArgKind { - /// A positional argument. - Positional { - /// The name of the value used in the `-h/--help` output. By - /// convention, this is an all-uppercase string. e.g., `PATH` or - /// `PATTERN`. - value_name: &'static str, - /// Whether an argument can be repeated multiple times or not. - /// - /// The only argument this applies to is PATH, where an end user can - /// specify multiple paths for ripgrep to search. - /// - /// If this is disabled, then an argument can only be provided once. - /// For example, PATTERN is one such argument. (Note that the - /// -e/--regexp flag is distinct from the positional PATTERN argument, - /// and it can be provided multiple times.) - multiple: bool, - }, - /// A boolean switch. - Switch { - /// The long name of a flag. This is always non-empty. - long: &'static str, - /// The short name of a flag. This is empty if a flag only has a long - /// name. - short: Option<&'static str>, - /// Whether this switch can be provided multiple times where meaning - /// is attached to the number of times this flag is given. - /// - /// Note that every switch can be provided multiple times. This - /// particular state indicates whether all instances of a switch are - /// relevant or not. - /// - /// For example, the -u/--unrestricted flag can be provided multiple - /// times where each repeated use of it indicates more relaxing of - /// ripgrep's filtering. Conversely, the -i/--ignore-case flag can - /// also be provided multiple times, but it is simply considered either - /// present or not. In these cases, -u/--unrestricted has `multiple` - /// set to `true` while -i/--ignore-case has `multiple` set to `false`. - multiple: bool, - }, - /// A flag the accepts a single value. - Flag { - /// The long name of a flag. This is always non-empty. - long: &'static str, - /// The short name of a flag. This is empty if a flag only has a long - /// name. - short: Option<&'static str>, - /// The name of the value used in the `-h/--help` output. By - /// convention, this is an all-uppercase string. e.g., `PATH` or - /// `PATTERN`. - value_name: &'static str, - /// Whether this flag can be provided multiple times with multiple - /// distinct values. - /// - /// Note that every flag can be provided multiple times. This - /// particular state indicates whether all instances of a flag are - /// relevant or not. - /// - /// For example, the -g/--glob flag can be provided multiple times and - /// all of its values should be interpreted by ripgrep. Conversely, - /// while the -C/--context flag can also be provided multiple times, - /// only its last instance is used while all previous instances are - /// ignored. In these cases, -g/--glob has `multiple` set to `true` - /// while -C/--context has `multiple` set to `false`. - multiple: bool, - /// A set of possible values for this flag. If an end user provides - /// any value other than what's in this set, then clap will report an - /// error. - possible_values: Vec<&'static str>, - }, -} - -impl RGArg { - /// Create a positional argument. - /// - /// The `long_name` parameter is the name of the argument, e.g., `pattern`. - /// The `value_name` parameter is a name that describes the type of - /// argument this flag accepts. It should be in uppercase, e.g., PATH or - /// PATTERN. - fn positional(name: &'static str, value_name: &'static str) -> RGArg { - RGArg { - claparg: Arg::with_name(name).value_name(value_name), - name, - doc_short: "", - doc_long: "", - hidden: false, - kind: RGArgKind::Positional { value_name, multiple: false }, - } - } - - /// Create a boolean switch. - /// - /// The `long_name` parameter is the name of the flag, e.g., `--long-name`. - /// - /// All switches may be repeated an arbitrary number of times. If a switch - /// is truly boolean, that consumers of clap's configuration should only - /// check whether the flag is present or not. Otherwise, consumers may - /// inspect the number of times the switch is used. - fn switch(long_name: &'static str) -> RGArg { - let claparg = Arg::with_name(long_name).long(long_name); - RGArg { - claparg, - name: long_name, - doc_short: "", - doc_long: "", - hidden: false, - kind: RGArgKind::Switch { - long: long_name, - short: None, - multiple: false, - }, - } - } - - /// Create a flag. A flag always accepts exactly one argument. - /// - /// The `long_name` parameter is the name of the flag, e.g., `--long-name`. - /// The `value_name` parameter is a name that describes the type of - /// argument this flag accepts. It should be in uppercase, e.g., PATH or - /// PATTERN. - /// - /// All flags may be repeated an arbitrary number of times. If a flag has - /// only one logical value, that consumers of clap's configuration should - /// only use the last value. - fn flag(long_name: &'static str, value_name: &'static str) -> RGArg { - let claparg = Arg::with_name(long_name) - .long(long_name) - .value_name(value_name) - .takes_value(true) - .number_of_values(1); - RGArg { - claparg, - name: long_name, - doc_short: "", - doc_long: "", - hidden: false, - kind: RGArgKind::Flag { - long: long_name, - short: None, - value_name, - multiple: false, - possible_values: vec![], - }, - } - } - - /// Set the short flag name. - /// - /// This panics if this arg isn't a switch or a flag. - fn short(mut self, name: &'static str) -> RGArg { - match self.kind { - RGArgKind::Positional { .. } => panic!("expected switch or flag"), - RGArgKind::Switch { ref mut short, .. } => { - *short = Some(name); - } - RGArgKind::Flag { ref mut short, .. } => { - *short = Some(name); - } - } - self.claparg = self.claparg.short(name); - self - } - - /// Set the "short" help text. - /// - /// This should be a single line. It is shown in the `-h` output. - fn help(mut self, text: &'static str) -> RGArg { - self.doc_short = text; - self.claparg = self.claparg.help(text); - self - } - - /// Set the "long" help text. - /// - /// This should be at least a single line, usually longer. It is shown in - /// the `--help` output. - fn long_help(mut self, text: &'static str) -> RGArg { - self.doc_long = text; - self.claparg = self.claparg.long_help(text); - self - } - - /// Enable this argument to accept multiple values. - /// - /// Note that while switches and flags can always be repeated an arbitrary - /// number of times, this particular method enables the flag to be - /// logically repeated where each occurrence of the flag may have - /// significance. That is, when this is disabled, then a switch is either - /// present or not and a flag has exactly one value (the last one given). - /// When this is enabled, then a switch has a count corresponding to the - /// number of times it is used and a flag's value is a list of all values - /// given. - /// - /// For the most part, this distinction is resolved by consumers of clap's - /// configuration. - fn multiple(mut self) -> RGArg { - // Why not put `multiple` on RGArg proper? Because it's useful to - // document it distinct for each different kind. See RGArgKind docs. - match self.kind { - RGArgKind::Positional { ref mut multiple, .. } => { - *multiple = true; - } - RGArgKind::Switch { ref mut multiple, .. } => { - *multiple = true; - } - RGArgKind::Flag { ref mut multiple, .. } => { - *multiple = true; - } - } - self.claparg = self.claparg.multiple(true); - self - } - - /// Hide this flag from all documentation. - fn hidden(mut self) -> RGArg { - self.hidden = true; - self.claparg = self.claparg.hidden(true); - self - } - - /// Set the possible values for this argument. If this argument is not - /// a flag, then this panics. - /// - /// If the end user provides any value other than what is given here, then - /// clap will report an error to the user. - /// - /// Note that this will suppress clap's automatic output of possible values - /// when using -h/--help, so users of this method should provide - /// appropriate documentation for the choices in the "long" help text. - fn possible_values(mut self, values: &[&'static str]) -> RGArg { - match self.kind { - RGArgKind::Positional { .. } => panic!("expected flag"), - RGArgKind::Switch { .. } => panic!("expected flag"), - RGArgKind::Flag { ref mut possible_values, .. } => { - *possible_values = values.to_vec(); - self.claparg = self - .claparg - .possible_values(values) - .hide_possible_values(true); - } - } - self - } - - /// Add an alias to this argument. - /// - /// Aliases are not show in the output of -h/--help. - fn alias(mut self, name: &'static str) -> RGArg { - self.claparg = self.claparg.alias(name); - self - } - - /// Permit this flag to have values that begin with a hyphen. - /// - /// This panics if this arg is not a flag. - fn allow_leading_hyphen(mut self) -> RGArg { - match self.kind { - RGArgKind::Positional { .. } => panic!("expected flag"), - RGArgKind::Switch { .. } => panic!("expected flag"), - RGArgKind::Flag { .. } => { - self.claparg = self.claparg.allow_hyphen_values(true); - } - } - self - } - - /// Sets this argument to a required argument, unless one of the given - /// arguments is provided. - fn required_unless(mut self, names: &[&'static str]) -> RGArg { - self.claparg = self.claparg.required_unless_one(names); - self - } - - /// Sets conflicting arguments. That is, if this argument is used whenever - /// any of the other arguments given here are used, then clap will report - /// an error. - fn conflicts(mut self, names: &[&'static str]) -> RGArg { - self.claparg = self.claparg.conflicts_with_all(names); - self - } - - /// Sets an overriding argument. That is, if this argument and the given - /// argument are both provided by an end user, then the "last" one will - /// win. ripgrep will behave as if any previous instantiations did not - /// happen. - fn overrides(mut self, name: &'static str) -> RGArg { - self.claparg = self.claparg.overrides_with(name); - self - } - - /// Sets the default value of this argument when not specified at - /// runtime. - fn default_value(mut self, value: &'static str) -> RGArg { - self.claparg = self.claparg.default_value(value); - self - } - - /// Sets the default value of this argument if and only if the argument - /// given is present. - fn default_value_if( - mut self, - value: &'static str, - arg_name: &'static str, - ) -> RGArg { - self.claparg = self.claparg.default_value_if(arg_name, None, value); - self - } - - /// Indicate that any value given to this argument should be a number. If - /// it's not a number, then clap will report an error to the end user. - fn number(mut self) -> RGArg { - self.claparg = self.claparg.validator(|val| { - val.parse::().map(|_| ()).map_err(|err| err.to_string()) - }); - self - } -} - -// We add an extra space to long descriptions so that a blank line is inserted -// between flag descriptions in --help output. -macro_rules! long { - ($lit:expr) => { - concat!($lit, " ") - }; -} - -/// Generate a sequence of all positional and flag arguments. -pub fn all_args_and_flags() -> Vec { - let mut args = vec![]; - // The positional arguments must be defined first and in order. - arg_pattern(&mut args); - arg_path(&mut args); - // Flags can be defined in any order, but we do it alphabetically. Note - // that each function may define multiple flags. For example, - // `flag_encoding` defines `--encoding` and `--no-encoding`. Most `--no` - // flags are hidden and merely mentioned in the docs of the corresponding - // "positive" flag. - flag_after_context(&mut args); - flag_auto_hybrid_regex(&mut args); - flag_before_context(&mut args); - flag_binary(&mut args); - flag_block_buffered(&mut args); - flag_byte_offset(&mut args); - flag_case_sensitive(&mut args); - flag_color(&mut args); - flag_colors(&mut args); - flag_column(&mut args); - flag_context(&mut args); - flag_context_separator(&mut args); - flag_count(&mut args); - flag_count_matches(&mut args); - flag_crlf(&mut args); - flag_debug(&mut args); - flag_dfa_size_limit(&mut args); - flag_encoding(&mut args); - flag_engine(&mut args); - flag_field_context_separator(&mut args); - flag_field_match_separator(&mut args); - flag_file(&mut args); - flag_files(&mut args); - flag_files_with_matches(&mut args); - flag_files_without_match(&mut args); - flag_fixed_strings(&mut args); - flag_follow(&mut args); - flag_glob(&mut args); - flag_glob_case_insensitive(&mut args); - flag_heading(&mut args); - flag_hidden(&mut args); - flag_iglob(&mut args); - flag_ignore_case(&mut args); - flag_ignore_file(&mut args); - flag_ignore_file_case_insensitive(&mut args); - flag_include_zero(&mut args); - flag_invert_match(&mut args); - flag_json(&mut args); - flag_line_buffered(&mut args); - flag_line_number(&mut args); - flag_line_regexp(&mut args); - flag_max_columns(&mut args); - flag_max_columns_preview(&mut args); - flag_max_count(&mut args); - flag_max_depth(&mut args); - flag_max_filesize(&mut args); - flag_mmap(&mut args); - flag_multiline(&mut args); - flag_multiline_dotall(&mut args); - flag_no_config(&mut args); - flag_no_ignore(&mut args); - flag_no_ignore_dot(&mut args); - flag_no_ignore_exclude(&mut args); - flag_no_ignore_files(&mut args); - flag_no_ignore_global(&mut args); - flag_no_ignore_messages(&mut args); - flag_no_ignore_parent(&mut args); - flag_no_ignore_vcs(&mut args); - flag_no_messages(&mut args); - flag_no_pcre2_unicode(&mut args); - flag_no_require_git(&mut args); - flag_no_unicode(&mut args); - flag_null(&mut args); - flag_null_data(&mut args); - flag_one_file_system(&mut args); - flag_only_matching(&mut args); - flag_path_separator(&mut args); - flag_passthru(&mut args); - flag_pcre2(&mut args); - flag_pcre2_version(&mut args); - flag_pre(&mut args); - flag_pre_glob(&mut args); - flag_pretty(&mut args); - flag_quiet(&mut args); - flag_regex_size_limit(&mut args); - flag_regexp(&mut args); - flag_replace(&mut args); - flag_search_zip(&mut args); - flag_smart_case(&mut args); - flag_sort_files(&mut args); - flag_sort(&mut args); - flag_sortr(&mut args); - flag_stats(&mut args); - flag_text(&mut args); - flag_threads(&mut args); - flag_trim(&mut args); - flag_type(&mut args); - flag_type_add(&mut args); - flag_type_clear(&mut args); - flag_type_list(&mut args); - flag_type_not(&mut args); - flag_unrestricted(&mut args); - flag_vimgrep(&mut args); - flag_with_filename(&mut args); - flag_word_regexp(&mut args); - args -} - -fn arg_pattern(args: &mut Vec) { - const SHORT: &str = "A regular expression used for searching."; - const LONG: &str = long!( - "\ -A regular expression used for searching. To match a pattern beginning with a -dash, use the -e/--regexp flag. - -For example, to search for the literal '-foo', you can use this flag: - - rg -e -foo - -You can also use the special '--' delimiter to indicate that no more flags -will be provided. Namely, the following is equivalent to the above: - - rg -- -foo -" - ); - let arg = RGArg::positional("pattern", "PATTERN") - .help(SHORT) - .long_help(LONG) - .required_unless(&[ - "file", - "files", - "regexp", - "type-list", - "pcre2-version", - ]); - args.push(arg); -} - -fn arg_path(args: &mut Vec) { - const SHORT: &str = "A file or directory to search."; - const LONG: &str = long!( - "\ -A file or directory to search. Directories are searched recursively. File \ -paths specified on the command line override glob and ignore rules. \ -" - ); - let arg = RGArg::positional("path", "PATH") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_after_context(args: &mut Vec) { - const SHORT: &str = "Show NUM lines after each match."; - const LONG: &str = long!( - "\ -Show NUM lines after each match. - -This overrides the --context and --passthru flags. -" - ); - let arg = RGArg::flag("after-context", "NUM") - .short("A") - .help(SHORT) - .long_help(LONG) - .number() - .overrides("passthru") - .overrides("context"); - args.push(arg); -} - -fn flag_auto_hybrid_regex(args: &mut Vec) { - const SHORT: &str = "Dynamically use PCRE2 if necessary."; - const LONG: &str = long!( - "\ -DEPRECATED. Use --engine instead. - -When this flag is used, ripgrep will dynamically choose between supported regex -engines depending on the features used in a pattern. When ripgrep chooses a -regex engine, it applies that choice for every regex provided to ripgrep (e.g., -via multiple -e/--regexp or -f/--file flags). - -As an example of how this flag might behave, ripgrep will attempt to use -its default finite automata based regex engine whenever the pattern can be -successfully compiled with that regex engine. If PCRE2 is enabled and if the -pattern given could not be compiled with the default regex engine, then PCRE2 -will be automatically used for searching. If PCRE2 isn't available, then this -flag has no effect because there is only one regex engine to choose from. - -In the future, ripgrep may adjust its heuristics for how it decides which -regex engine to use. In general, the heuristics will be limited to a static -analysis of the patterns, and not to any specific runtime behavior observed -while searching files. - -The primary downside of using this flag is that it may not always be obvious -which regex engine ripgrep uses, and thus, the match semantics or performance -profile of ripgrep may subtly and unexpectedly change. However, in many cases, -all regex engines will agree on what constitutes a match and it can be nice -to transparently support more advanced regex features like look-around and -backreferences without explicitly needing to enable them. - -This flag can be disabled with --no-auto-hybrid-regex. -" - ); - let arg = RGArg::switch("auto-hybrid-regex") - .help(SHORT) - .long_help(LONG) - .overrides("no-auto-hybrid-regex") - .overrides("pcre2") - .overrides("no-pcre2") - .overrides("engine"); - args.push(arg); - - let arg = RGArg::switch("no-auto-hybrid-regex") - .hidden() - .overrides("auto-hybrid-regex") - .overrides("pcre2") - .overrides("no-pcre2") - .overrides("engine"); - args.push(arg); -} - -fn flag_before_context(args: &mut Vec) { - const SHORT: &str = "Show NUM lines before each match."; - const LONG: &str = long!( - "\ -Show NUM lines before each match. - -This overrides the --context and --passthru flags. -" - ); - let arg = RGArg::flag("before-context", "NUM") - .short("B") - .help(SHORT) - .long_help(LONG) - .number() - .overrides("passthru") - .overrides("context"); - args.push(arg); -} - -fn flag_binary(args: &mut Vec) { - const SHORT: &str = "Search binary files."; - const LONG: &str = long!( - "\ -Enabling this flag will cause ripgrep to search binary files. By default, -ripgrep attempts to automatically skip binary files in order to improve the -relevance of results and make the search faster. - -Binary files are heuristically detected based on whether they contain a NUL -byte or not. By default (without this flag set), once a NUL byte is seen, -ripgrep will stop searching the file. Usually, NUL bytes occur in the beginning -of most binary files. If a NUL byte occurs after a match, then ripgrep will -still stop searching the rest of the file, but a warning will be printed. - -In contrast, when this flag is provided, ripgrep will continue searching a file -even if a NUL byte is found. In particular, if a NUL byte is found then ripgrep -will continue searching until either a match is found or the end of the file is -reached, whichever comes sooner. If a match is found, then ripgrep will stop -and print a warning saying that the search stopped prematurely. - -If you want ripgrep to search a file without any special NUL byte handling at -all (and potentially print binary data to stdout), then you should use the -'-a/--text' flag. - -The '--binary' flag is a flag for controlling ripgrep's automatic filtering -mechanism. As such, it does not need to be used when searching a file -explicitly or when searching stdin. That is, it is only applicable when -recursively searching a directory. - -Note that when the '-u/--unrestricted' flag is provided for a third time, then -this flag is automatically enabled. - -This flag can be disabled with '--no-binary'. It overrides the '-a/--text' -flag. -" - ); - let arg = RGArg::switch("binary") - .help(SHORT) - .long_help(LONG) - .overrides("no-binary") - .overrides("text") - .overrides("no-text"); - args.push(arg); - - let arg = RGArg::switch("no-binary") - .hidden() - .overrides("binary") - .overrides("text") - .overrides("no-text"); - args.push(arg); -} - -fn flag_block_buffered(args: &mut Vec) { - const SHORT: &str = "Force block buffering."; - const LONG: &str = long!( - "\ -When enabled, ripgrep will use block buffering. That is, whenever a matching -line is found, it will be written to an in-memory buffer and will not be -written to stdout until the buffer reaches a certain size. This is the default -when ripgrep's stdout is redirected to a pipeline or a file. When ripgrep's -stdout is connected to a terminal, line buffering will be used. Forcing block -buffering can be useful when dumping a large amount of contents to a terminal. - -Forceful block buffering can be disabled with --no-block-buffered. Note that -using --no-block-buffered causes ripgrep to revert to its default behavior of -automatically detecting the buffering strategy. To force line buffering, use -the --line-buffered flag. -" - ); - let arg = RGArg::switch("block-buffered") - .help(SHORT) - .long_help(LONG) - .overrides("no-block-buffered") - .overrides("line-buffered") - .overrides("no-line-buffered"); - args.push(arg); - - let arg = RGArg::switch("no-block-buffered") - .hidden() - .overrides("block-buffered") - .overrides("line-buffered") - .overrides("no-line-buffered"); - args.push(arg); -} - -fn flag_byte_offset(args: &mut Vec) { - const SHORT: &str = - "Print the 0-based byte offset for each matching line."; - const LONG: &str = long!( - "\ -Print the 0-based byte offset within the input file before each line of output. -If -o (--only-matching) is specified, print the offset of the matching part -itself. - -If ripgrep does transcoding, then the byte offset is in terms of the the result -of transcoding and not the original data. This applies similarly to another -transformation on the source, such as decompression or a --pre filter. Note -that when the PCRE2 regex engine is used, then UTF-8 transcoding is done by -default. -" - ); - let arg = - RGArg::switch("byte-offset").short("b").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_case_sensitive(args: &mut Vec) { - const SHORT: &str = "Search case sensitively (default)."; - const LONG: &str = long!( - "\ -Search case sensitively. - -This overrides the -i/--ignore-case and -S/--smart-case flags. -" - ); - let arg = RGArg::switch("case-sensitive") - .short("s") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-case") - .overrides("smart-case"); - args.push(arg); -} - -fn flag_color(args: &mut Vec) { - const SHORT: &str = "Controls when to use color."; - const LONG: &str = long!( - "\ -This flag controls when to use colors. The default setting is 'auto', which -means ripgrep will try to guess when to use colors. For example, if ripgrep is -printing to a terminal, then it will use colors, but if it is redirected to a -file or a pipe, then it will suppress color output. ripgrep will suppress color -output in some other circumstances as well. For example, if the TERM -environment variable is not set or set to 'dumb', then ripgrep will not use -colors. - -The possible values for this flag are: - - never Colors will never be used. - auto The default. ripgrep tries to be smart. - always Colors will always be used regardless of where output is sent. - ansi Like 'always', but emits ANSI escapes (even in a Windows console). - -When the --vimgrep flag is given to ripgrep, then the default value for the ---color flag changes to 'never'. -" - ); - let arg = RGArg::flag("color", "WHEN") - .help(SHORT) - .long_help(LONG) - .possible_values(&["never", "auto", "always", "ansi"]) - .default_value_if("never", "vimgrep"); - args.push(arg); -} - -fn flag_colors(args: &mut Vec) { - const SHORT: &str = "Configure color settings and styles."; - const LONG: &str = long!( - "\ -This flag specifies color settings for use in the output. This flag may be -provided multiple times. Settings are applied iteratively. Colors are limited -to one of eight choices: red, blue, green, cyan, magenta, yellow, white and -black. Styles are limited to nobold, bold, nointense, intense, nounderline -or underline. - -The format of the flag is '{type}:{attribute}:{value}'. '{type}' should be -one of path, line, column or match. '{attribute}' can be fg, bg or style. -'{value}' is either a color (for fg and bg) or a text style. A special format, -'{type}:none', will clear all color settings for '{type}'. - -For example, the following command will change the match color to magenta and -the background color for line numbers to yellow: - - rg --colors 'match:fg:magenta' --colors 'line:bg:yellow' foo. - -Extended colors can be used for '{value}' when the terminal supports ANSI color -sequences. These are specified as either 'x' (256-color) or 'x,x,x' (24-bit -truecolor) where x is a number between 0 and 255 inclusive. x may be given as -a normal decimal number or a hexadecimal number, which is prefixed by `0x`. - -For example, the following command will change the match background color to -that represented by the rgb value (0,128,255): - - rg --colors 'match:bg:0,128,255' - -or, equivalently, - - rg --colors 'match:bg:0x0,0x80,0xFF' - -Note that the the intense and nointense style flags will have no effect when -used alongside these extended color codes. -" - ); - let arg = RGArg::flag("colors", "COLOR_SPEC") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_column(args: &mut Vec) { - const SHORT: &str = "Show column numbers."; - const LONG: &str = long!( - "\ -Show column numbers (1-based). This only shows the column numbers for the first -match on each line. This does not try to account for Unicode. One byte is equal -to one column. This implies --line-number. - -This flag can be disabled with --no-column. -" - ); - let arg = RGArg::switch("column") - .help(SHORT) - .long_help(LONG) - .overrides("no-column"); - args.push(arg); - - let arg = RGArg::switch("no-column").hidden().overrides("column"); - args.push(arg); -} - -fn flag_context(args: &mut Vec) { - const SHORT: &str = "Show NUM lines before and after each match."; - const LONG: &str = long!( - "\ -Show NUM lines before and after each match. This is equivalent to providing -both the -B/--before-context and -A/--after-context flags with the same value. - -This overrides both the -B/--before-context and -A/--after-context flags, -in addition to the --passthru flag. -" - ); - let arg = RGArg::flag("context", "NUM") - .short("C") - .help(SHORT) - .long_help(LONG) - .number() - .overrides("passthru") - .overrides("before-context") - .overrides("after-context"); - args.push(arg); -} - -fn flag_context_separator(args: &mut Vec) { - const SHORT: &str = "Set the context separator string."; - const LONG: &str = long!( - "\ -The string used to separate non-contiguous context lines in the output. This -is only used when one of the context flags is used (-A, -B or -C). Escape -sequences like \\x7F or \\t may be used. The default value is --. - -When the context separator is set to an empty string, then a line break -is still inserted. To completely disable context separators, use the ---no-context-separator flag. -" - ); - - let arg = RGArg::flag("context-separator", "SEPARATOR") - .help(SHORT) - .long_help(LONG) - .overrides("no-context-separator"); - args.push(arg); - - let arg = RGArg::switch("no-context-separator") - .hidden() - .overrides("context-separator"); - args.push(arg); -} - -fn flag_count(args: &mut Vec) { - const SHORT: &str = "Only show the count of matching lines for each file."; - const LONG: &str = long!( - "\ -This flag suppresses normal output and shows the number of lines that match -the given patterns for each file searched. Each file containing a match has its -path and count printed on each line. Note that this reports the number of lines -that match and not the total number of matches, unless -U/--multiline is -enabled. In multiline mode, --count is equivalent to --count-matches. - -If only one file is given to ripgrep, then only the count is printed if there -is a match. The --with-filename flag can be used to force printing the file -path in this case. If you need a count to be printed regardless of whether -there is a match, then use --include-zero. - -This overrides the --count-matches flag. Note that when --count is combined -with --only-matching, then ripgrep behaves as if --count-matches was given. -" - ); - let arg = RGArg::switch("count") - .short("c") - .help(SHORT) - .long_help(LONG) - .overrides("count-matches"); - args.push(arg); -} - -fn flag_count_matches(args: &mut Vec) { - const SHORT: &str = - "Only show the count of individual matches for each file."; - const LONG: &str = long!( - "\ -This flag suppresses normal output and shows the number of individual -matches of the given patterns for each file searched. Each file -containing matches has its path and match count printed on each line. -Note that this reports the total number of individual matches and not -the number of lines that match. - -If only one file is given to ripgrep, then only the count is printed if there -is a match. The --with-filename flag can be used to force printing the file -path in this case. - -This overrides the --count flag. Note that when --count is combined with ---only-matching, then ripgrep behaves as if --count-matches was given. -" - ); - let arg = RGArg::switch("count-matches") - .help(SHORT) - .long_help(LONG) - .overrides("count"); - args.push(arg); -} - -fn flag_crlf(args: &mut Vec) { - const SHORT: &str = "Support CRLF line terminators (useful on Windows)."; - const LONG: &str = long!( - "\ -When enabled, ripgrep will treat CRLF ('\\r\\n') as a line terminator instead -of just '\\n'. - -Principally, this permits '$' in regex patterns to match just before CRLF -instead of just before LF. The underlying regex engine may not support this -natively, so ripgrep will translate all instances of '$' to '(?:\\r??$)'. This -may produce slightly different than desired match offsets. It is intended as a -work-around until the regex engine supports this natively. - -CRLF support can be disabled with --no-crlf. -" - ); - let arg = RGArg::switch("crlf") - .help(SHORT) - .long_help(LONG) - .overrides("no-crlf") - .overrides("null-data"); - args.push(arg); - - let arg = RGArg::switch("no-crlf").hidden().overrides("crlf"); - args.push(arg); -} - -fn flag_debug(args: &mut Vec) { - const SHORT: &str = "Show debug messages."; - const LONG: &str = long!( - "\ -Show debug messages. Please use this when filing a bug report. - -The --debug flag is generally useful for figuring out why ripgrep skipped -searching a particular file. The debug messages should mention all files -skipped and why they were skipped. - -To get even more debug output, use the --trace flag, which implies --debug -along with additional trace data. With --trace, the output could be quite -large and is generally more useful for development. -" - ); - let arg = RGArg::switch("debug").help(SHORT).long_help(LONG); - args.push(arg); - - let arg = RGArg::switch("trace").hidden().overrides("debug"); - args.push(arg); -} - -fn flag_dfa_size_limit(args: &mut Vec) { - const SHORT: &str = "The upper size limit of the regex DFA."; - const LONG: &str = long!( - "\ -The upper size limit of the regex DFA. The default limit is 10M. This should -only be changed on very large regex inputs where the (slower) fallback regex -engine may otherwise be used if the limit is reached. - -The argument accepts the same size suffixes as allowed in with the ---max-filesize flag. -" - ); - let arg = RGArg::flag("dfa-size-limit", "NUM+SUFFIX?") - .help(SHORT) - .long_help(LONG); - args.push(arg); -} - -fn flag_encoding(args: &mut Vec) { - const SHORT: &str = "Specify the text encoding of files to search."; - const LONG: &str = long!( - "\ -Specify the text encoding that ripgrep will use on all files searched. The -default value is 'auto', which will cause ripgrep to do a best effort automatic -detection of encoding on a per-file basis. Automatic detection in this case -only applies to files that begin with a UTF-8 or UTF-16 byte-order mark (BOM). -No other automatic detection is performed. One can also specify 'none' which -will then completely disable BOM sniffing and always result in searching the -raw bytes, including a BOM if it's present, regardless of its encoding. - -Other supported values can be found in the list of labels here: -https://encoding.spec.whatwg.org/#concept-encoding-get - -For more details on encoding and how ripgrep deals with it, see GUIDE.md. - -This flag can be disabled with --no-encoding. -" - ); - let arg = RGArg::flag("encoding", "ENCODING") - .short("E") - .help(SHORT) - .long_help(LONG); - args.push(arg); - - let arg = RGArg::switch("no-encoding").hidden().overrides("encoding"); - args.push(arg); -} - -fn flag_engine(args: &mut Vec) { - const SHORT: &str = "Specify which regexp engine to use."; - const LONG: &str = long!( - "\ -Specify which regular expression engine to use. When you choose a regex engine, -it applies that choice for every regex provided to ripgrep (e.g., via multiple --e/--regexp or -f/--file flags). - -Accepted values are 'default', 'pcre2', or 'auto'. - -The default value is 'default', which is the fastest and should be good for -most use cases. The 'pcre2' engine is generally useful when you want to use -features such as look-around or backreferences. 'auto' will dynamically choose -between supported regex engines depending on the features used in a pattern on -a best effort basis. - -Note that the 'pcre2' engine is an optional ripgrep feature. If PCRE2 wasn't -included in your build of ripgrep, then using this flag will result in ripgrep -printing an error message and exiting. - -This overrides previous uses of --pcre2 and --auto-hybrid-regex flags. -" - ); - let arg = RGArg::flag("engine", "ENGINE") - .help(SHORT) - .long_help(LONG) - .possible_values(&["default", "pcre2", "auto"]) - .default_value("default") - .overrides("pcre2") - .overrides("no-pcre2") - .overrides("auto-hybrid-regex") - .overrides("no-auto-hybrid-regex"); - args.push(arg); -} - -fn flag_field_context_separator(args: &mut Vec) { - const SHORT: &str = "Set the field context separator."; - const LONG: &str = long!( - "\ -Set the field context separator, which is used to delimit file paths, line -numbers, columns and the context itself, when printing contextual lines. The -separator may be any number of bytes, including zero. Escape sequences like -\\x7F or \\t may be used. The default value is -. -" - ); - let arg = RGArg::flag("field-context-separator", "SEPARATOR") - .help(SHORT) - .long_help(LONG); - args.push(arg); -} - -fn flag_field_match_separator(args: &mut Vec) { - const SHORT: &str = "Set the match separator."; - const LONG: &str = long!( - "\ -Set the field match separator, which is used to delimit file paths, line -numbers, columns and the match itself. The separator may be any number of -bytes, including zero. Escape sequences like \\x7F or \\t may be used. The -default value is -. -" - ); - let arg = RGArg::flag("field-match-separator", "SEPARATOR") - .help(SHORT) - .long_help(LONG); - args.push(arg); -} - -fn flag_file(args: &mut Vec) { - const SHORT: &str = "Search for patterns from the given file."; - const LONG: &str = long!( - "\ -Search for patterns from the given file, with one pattern per line. When this -flag is used multiple times or in combination with the -e/--regexp flag, -then all patterns provided are searched. Empty pattern lines will match all -input lines, and the newline is not counted as part of the pattern. - -A line is printed if and only if it matches at least one of the patterns. -" - ); - let arg = RGArg::flag("file", "PATTERNFILE") - .short("f") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_files(args: &mut Vec) { - const SHORT: &str = "Print each file that would be searched."; - const LONG: &str = long!( - "\ -Print each file that would be searched without actually performing the search. -This is useful to determine whether a particular file is being searched or not. -" - ); - let arg = RGArg::switch("files") - .help(SHORT) - .long_help(LONG) - // This also technically conflicts with pattern, but the first file - // path will actually be in pattern. - .conflicts(&["file", "regexp", "type-list"]); - args.push(arg); -} - -fn flag_files_with_matches(args: &mut Vec) { - const SHORT: &str = "Print the paths with at least one match."; - const LONG: &str = long!( - "\ -Print the paths with at least one match and suppress match contents. - -This overrides --files-without-match. -" - ); - let arg = RGArg::switch("files-with-matches") - .short("l") - .help(SHORT) - .long_help(LONG) - .overrides("files-without-match"); - args.push(arg); -} - -fn flag_files_without_match(args: &mut Vec) { - const SHORT: &str = "Print the paths that contain zero matches."; - const LONG: &str = long!( - "\ -Print the paths that contain zero matches and suppress match contents. This -inverts/negates the --files-with-matches flag. - -This overrides --files-with-matches. -" - ); - let arg = RGArg::switch("files-without-match") - .help(SHORT) - .long_help(LONG) - .overrides("files-with-matches"); - args.push(arg); -} - -fn flag_fixed_strings(args: &mut Vec) { - const SHORT: &str = "Treat the pattern as a literal string."; - const LONG: &str = long!( - "\ -Treat the pattern as a literal string instead of a regular expression. When -this flag is used, special regular expression meta characters such as .(){}*+ -do not need to be escaped. - -This flag can be disabled with --no-fixed-strings. -" - ); - let arg = RGArg::switch("fixed-strings") - .short("F") - .help(SHORT) - .long_help(LONG) - .overrides("no-fixed-strings"); - args.push(arg); - - let arg = - RGArg::switch("no-fixed-strings").hidden().overrides("fixed-strings"); - args.push(arg); -} - -fn flag_follow(args: &mut Vec) { - const SHORT: &str = "Follow symbolic links."; - const LONG: &str = long!( - "\ -When this flag is enabled, ripgrep will follow symbolic links while traversing -directories. This is disabled by default. Note that ripgrep will check for -symbolic link loops and report errors if it finds one. - -This flag can be disabled with --no-follow. -" - ); - let arg = RGArg::switch("follow") - .short("L") - .help(SHORT) - .long_help(LONG) - .overrides("no-follow"); - args.push(arg); - - let arg = RGArg::switch("no-follow").hidden().overrides("follow"); - args.push(arg); -} - -fn flag_glob(args: &mut Vec) { - const SHORT: &str = "Include or exclude files."; - const LONG: &str = long!( - "\ -Include or exclude files and directories for searching that match the given -glob. This always overrides any other ignore logic. Multiple glob flags may be -used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude -it. If multiple globs match a file or directory, the glob given later in the -command line takes precedence. - -As an extension, globs support specifying alternatives: *-g ab{c,d}* is -equivalet to *-g abc -g abd*. Empty alternatives like *-g ab{,c}* are not -currently supported. Note that this syntax extension is also currently enabled -in gitignore files, even though this syntax isn't supported by git itself. -ripgrep may disable this syntax extension in gitignore files, but it will -always remain available via the -g/--glob flag. - -When this flag is set, every file and directory is applied to it to test for -a match. So for example, if you only want to search in a particular directory -'foo', then *-g foo* is incorrect because 'foo/bar' does not match the glob -'foo'. Instead, you should use *-g 'foo/**'*. -" - ); - let arg = RGArg::flag("glob", "GLOB") - .short("g") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_glob_case_insensitive(args: &mut Vec) { - const SHORT: &str = "Process all glob patterns case insensitively."; - const LONG: &str = long!( - "\ -Process glob patterns given with the -g/--glob flag case insensitively. This -effectively treats --glob as --iglob. - -This flag can be disabled with the --no-glob-case-insensitive flag. -" - ); - let arg = RGArg::switch("glob-case-insensitive") - .help(SHORT) - .long_help(LONG) - .overrides("no-glob-case-insensitive"); - args.push(arg); - - let arg = RGArg::switch("no-glob-case-insensitive") - .hidden() - .overrides("glob-case-insensitive"); - args.push(arg); -} - -fn flag_heading(args: &mut Vec) { - const SHORT: &str = "Print matches grouped by each file."; - const LONG: &str = long!( - "\ -This flag prints the file path above clusters of matches from each file instead -of printing the file path as a prefix for each matched line. This is the -default mode when printing to a terminal. - -This overrides the --no-heading flag. -" - ); - let arg = RGArg::switch("heading") - .help(SHORT) - .long_help(LONG) - .overrides("no-heading"); - args.push(arg); - - const NO_SHORT: &str = "Don't group matches by each file."; - const NO_LONG: &str = long!( - "\ -Don't group matches by each file. If --no-heading is provided in addition to -the -H/--with-filename flag, then file paths will be printed as a prefix for -every matched line. This is the default mode when not printing to a terminal. - -This overrides the --heading flag. -" - ); - let arg = RGArg::switch("no-heading") - .help(NO_SHORT) - .long_help(NO_LONG) - .overrides("heading"); - args.push(arg); -} - -fn flag_hidden(args: &mut Vec) { - const SHORT: &str = "Search hidden files and directories."; - const LONG: &str = long!( - "\ -Search hidden files and directories. By default, hidden files and directories -are skipped. Note that if a hidden file or a directory is whitelisted in an -ignore file, then it will be searched even if this flag isn't provided. - -A file or directory is considered hidden if its base name starts with a dot -character ('.'). On operating systems which support a `hidden` file attribute, -like Windows, files with this attribute are also considered hidden. - -This flag can be disabled with --no-hidden. -" - ); - let arg = RGArg::switch("hidden") - .short(".") - .help(SHORT) - .long_help(LONG) - .overrides("no-hidden"); - args.push(arg); - - let arg = RGArg::switch("no-hidden").hidden().overrides("hidden"); - args.push(arg); -} - -fn flag_iglob(args: &mut Vec) { - const SHORT: &str = "Include or exclude files case insensitively."; - const LONG: &str = long!( - "\ -Include or exclude files and directories for searching that match the given -glob. This always overrides any other ignore logic. Multiple glob flags may be -used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude -it. Globs are matched case insensitively. -" - ); - let arg = RGArg::flag("iglob", "GLOB") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_ignore_case(args: &mut Vec) { - const SHORT: &str = "Case insensitive search."; - const LONG: &str = long!( - "\ -When this flag is provided, the given patterns will be searched case -insensitively. The case insensitivity rules used by ripgrep conform to -Unicode's \"simple\" case folding rules. - -This flag overrides -s/--case-sensitive and -S/--smart-case. -" - ); - let arg = RGArg::switch("ignore-case") - .short("i") - .help(SHORT) - .long_help(LONG) - .overrides("case-sensitive") - .overrides("smart-case"); - args.push(arg); -} - -fn flag_ignore_file(args: &mut Vec) { - const SHORT: &str = "Specify additional ignore files."; - const LONG: &str = long!( - "\ -Specifies a path to one or more .gitignore format rules files. These patterns -are applied after the patterns found in .gitignore and .ignore are applied -and are matched relative to the current working directory. Multiple additional -ignore files can be specified by using the --ignore-file flag several times. -When specifying multiple ignore files, earlier files have lower precedence -than later files. - -If you are looking for a way to include or exclude files and directories -directly on the command line, then used -g instead. -" - ); - let arg = RGArg::flag("ignore-file", "PATH") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_ignore_file_case_insensitive(args: &mut Vec) { - const SHORT: &str = "Process ignore files case insensitively."; - const LONG: &str = long!( - "\ -Process ignore files (.gitignore, .ignore, etc.) case insensitively. Note that -this comes with a performance penalty and is most useful on case insensitive -file systems (such as Windows). - -This flag can be disabled with the --no-ignore-file-case-insensitive flag. -" - ); - let arg = RGArg::switch("ignore-file-case-insensitive") - .help(SHORT) - .long_help(LONG) - .overrides("no-ignore-file-case-insensitive"); - args.push(arg); - - let arg = RGArg::switch("no-ignore-file-case-insensitive") - .hidden() - .overrides("ignore-file-case-insensitive"); - args.push(arg); -} - -fn flag_include_zero(args: &mut Vec) { - const SHORT: &str = "Include files with zero matches in summary"; - const LONG: &str = long!( - "\ -When used with --count or --count-matches, print the number of matches for -each file even if there were zero matches. This is disabled by default but can -be enabled to make ripgrep behave more like grep. -" - ); - let arg = RGArg::switch("include-zero").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_invert_match(args: &mut Vec) { - const SHORT: &str = "Invert matching."; - const LONG: &str = long!( - "\ -Invert matching. Show lines that do not match the given patterns. -" - ); - let arg = - RGArg::switch("invert-match").short("v").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_json(args: &mut Vec) { - const SHORT: &str = "Show search results in a JSON Lines format."; - const LONG: &str = long!( - "\ -Enable printing results in a JSON Lines format. - -When this flag is provided, ripgrep will emit a sequence of messages, each -encoded as a JSON object, where there are five different message types: - -**begin** - A message that indicates a file is being searched and contains at -least one match. - -**end** - A message the indicates a file is done being searched. This message -also include summary statistics about the search for a particular file. - -**match** - A message that indicates a match was found. This includes the text -and offsets of the match. - -**context** - A message that indicates a contextual line was found. This -includes the text of the line, along with any match information if the search -was inverted. - -**summary** - The final message emitted by ripgrep that contains summary -statistics about the search across all files. - -Since file paths or the contents of files are not guaranteed to be valid UTF-8 -and JSON itself must be representable by a Unicode encoding, ripgrep will emit -all data elements as objects with one of two keys: 'text' or 'bytes'. 'text' is -a normal JSON string when the data is valid UTF-8 while 'bytes' is the base64 -encoded contents of the data. - -The JSON Lines format is only supported for showing search results. It cannot -be used with other flags that emit other types of output, such as --files, ---files-with-matches, --files-without-match, --count or --count-matches. -ripgrep will report an error if any of the aforementioned flags are used in -concert with --json. - -Other flags that control aspects of the standard output such as ---only-matching, --heading, --replace, --max-columns, etc., have no effect -when --json is set. - -A more complete description of the JSON format used can be found here: -https://docs.rs/grep-printer/*/grep_printer/struct.JSON.html - -The JSON Lines format can be disabled with --no-json. -" - ); - let arg = RGArg::switch("json") - .help(SHORT) - .long_help(LONG) - .overrides("no-json") - .conflicts(&[ - "count", - "count-matches", - "files", - "files-with-matches", - "files-without-match", - ]); - args.push(arg); - - let arg = RGArg::switch("no-json").hidden().overrides("json"); - args.push(arg); -} - -fn flag_line_buffered(args: &mut Vec) { - const SHORT: &str = "Force line buffering."; - const LONG: &str = long!( - "\ -When enabled, ripgrep will use line buffering. That is, whenever a matching -line is found, it will be flushed to stdout immediately. This is the default -when ripgrep's stdout is connected to a terminal, but otherwise, ripgrep will -use block buffering, which is typically faster. This flag forces ripgrep to -use line buffering even if it would otherwise use block buffering. This is -typically useful in shell pipelines, e.g., -'tail -f something.log | rg foo --line-buffered | rg bar'. - -Forceful line buffering can be disabled with --no-line-buffered. Note that -using --no-line-buffered causes ripgrep to revert to its default behavior of -automatically detecting the buffering strategy. To force block buffering, use -the --block-buffered flag. -" - ); - let arg = RGArg::switch("line-buffered") - .help(SHORT) - .long_help(LONG) - .overrides("no-line-buffered") - .overrides("block-buffered") - .overrides("no-block-buffered"); - args.push(arg); - - let arg = RGArg::switch("no-line-buffered") - .hidden() - .overrides("line-buffered") - .overrides("block-buffered") - .overrides("no-block-buffered"); - args.push(arg); -} - -fn flag_line_number(args: &mut Vec) { - const SHORT: &str = "Show line numbers."; - const LONG: &str = long!( - "\ -Show line numbers (1-based). This is enabled by default when searching in a -terminal. -" - ); - let arg = RGArg::switch("line-number") - .short("n") - .help(SHORT) - .long_help(LONG) - .overrides("no-line-number"); - args.push(arg); - - const NO_SHORT: &str = "Suppress line numbers."; - const NO_LONG: &str = long!( - "\ -Suppress line numbers. This is enabled by default when not searching in a -terminal. -" - ); - let arg = RGArg::switch("no-line-number") - .short("N") - .help(NO_SHORT) - .long_help(NO_LONG) - .overrides("line-number"); - args.push(arg); -} - -fn flag_line_regexp(args: &mut Vec) { - const SHORT: &str = "Only show matches surrounded by line boundaries."; - const LONG: &str = long!( - "\ -Only show matches surrounded by line boundaries. This is equivalent to putting -^...$ around all of the search patterns. In other words, this only prints lines -where the entire line participates in a match. - -This overrides the --word-regexp flag. -" - ); - let arg = RGArg::switch("line-regexp") - .short("x") - .help(SHORT) - .long_help(LONG) - .overrides("word-regexp"); - args.push(arg); -} - -fn flag_max_columns(args: &mut Vec) { - const SHORT: &str = "Don't print lines longer than this limit."; - const LONG: &str = long!( - "\ -Don't print lines longer than this limit in bytes. Longer lines are omitted, -and only the number of matches in that line is printed. - -When this flag is omitted or is set to 0, then it has no effect. -" - ); - let arg = RGArg::flag("max-columns", "NUM") - .short("M") - .help(SHORT) - .long_help(LONG) - .number(); - args.push(arg); -} - -fn flag_max_columns_preview(args: &mut Vec) { - const SHORT: &str = "Print a preview for lines exceeding the limit."; - const LONG: &str = long!( - "\ -When the '--max-columns' flag is used, ripgrep will by default completely -replace any line that is too long with a message indicating that a matching -line was removed. When this flag is combined with '--max-columns', a preview -of the line (corresponding to the limit size) is shown instead, where the part -of the line exceeding the limit is not shown. - -If the '--max-columns' flag is not set, then this has no effect. - -This flag can be disabled with '--no-max-columns-preview'. -" - ); - let arg = RGArg::switch("max-columns-preview") - .help(SHORT) - .long_help(LONG) - .overrides("no-max-columns-preview"); - args.push(arg); - - let arg = RGArg::switch("no-max-columns-preview") - .hidden() - .overrides("max-columns-preview"); - args.push(arg); -} - -fn flag_max_count(args: &mut Vec) { - const SHORT: &str = "Limit the number of matches."; - const LONG: &str = long!( - "\ -Limit the number of matching lines per file searched to NUM. -" - ); - let arg = RGArg::flag("max-count", "NUM") - .short("m") - .help(SHORT) - .long_help(LONG) - .number(); - args.push(arg); -} - -fn flag_max_depth(args: &mut Vec) { - const SHORT: &str = "Descend at most NUM directories."; - const LONG: &str = long!( - "\ -Limit the depth of directory traversal to NUM levels beyond the paths given. A -value of zero only searches the explicitly given paths themselves. - -For example, 'rg --max-depth 0 dir/' is a no-op because dir/ will not be -descended into. 'rg --max-depth 1 dir/' will search only the direct children of -'dir'. -" - ); - let arg = RGArg::flag("max-depth", "NUM") - .help(SHORT) - .long_help(LONG) - .alias("maxdepth") - .number(); - args.push(arg); -} - -fn flag_max_filesize(args: &mut Vec) { - const SHORT: &str = "Ignore files larger than NUM in size."; - const LONG: &str = long!( - "\ -Ignore files larger than NUM in size. This does not apply to directories. - -The input format accepts suffixes of K, M or G which correspond to kilobytes, -megabytes and gigabytes, respectively. If no suffix is provided the input is -treated as bytes. - -Examples: --max-filesize 50K or --max-filesize 80M -" - ); - let arg = - RGArg::flag("max-filesize", "NUM+SUFFIX?").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_mmap(args: &mut Vec) { - const SHORT: &str = "Search using memory maps when possible."; - const LONG: &str = long!( - "\ -Search using memory maps when possible. This is enabled by default when ripgrep -thinks it will be faster. - -Memory map searching doesn't currently support all options, so if an -incompatible option (e.g., --context) is given with --mmap, then memory maps -will not be used. - -Note that ripgrep may abort unexpectedly when --mmap if it searches a file that -is simultaneously truncated. - -This flag overrides --no-mmap. -" - ); - let arg = - RGArg::switch("mmap").help(SHORT).long_help(LONG).overrides("no-mmap"); - args.push(arg); - - const NO_SHORT: &str = "Never use memory maps."; - const NO_LONG: &str = long!( - "\ -Never use memory maps, even when they might be faster. - -This flag overrides --mmap. -" - ); - let arg = RGArg::switch("no-mmap") - .help(NO_SHORT) - .long_help(NO_LONG) - .overrides("mmap"); - args.push(arg); -} - -fn flag_multiline(args: &mut Vec) { - const SHORT: &str = "Enable matching across multiple lines."; - const LONG: &str = long!( - "\ -Enable matching across multiple lines. - -When multiline mode is enabled, ripgrep will lift the restriction that a match -cannot include a line terminator. For example, when multiline mode is not -enabled (the default), then the regex '\\p{any}' will match any Unicode -codepoint other than '\\n'. Similarly, the regex '\\n' is explicitly forbidden, -and if you try to use it, ripgrep will return an error. However, when multiline -mode is enabled, '\\p{any}' will match any Unicode codepoint, including '\\n', -and regexes like '\\n' are permitted. - -An important caveat is that multiline mode does not change the match semantics -of '.'. Namely, in most regex matchers, a '.' will by default match any -character other than '\\n', and this is true in ripgrep as well. In order to -make '.' match '\\n', you must enable the \"dot all\" flag inside the regex. -For example, both '(?s).' and '(?s:.)' have the same semantics, where '.' will -match any character, including '\\n'. Alternatively, the '--multiline-dotall' -flag may be passed to make the \"dot all\" behavior the default. This flag only -applies when multiline search is enabled. - -There is no limit on the number of the lines that a single match can span. - -**WARNING**: Because of how the underlying regex engine works, multiline -searches may be slower than normal line-oriented searches, and they may also -use more memory. In particular, when multiline mode is enabled, ripgrep -requires that each file it searches is laid out contiguously in memory -(either by reading it onto the heap or by memory-mapping it). Things that -cannot be memory-mapped (such as stdin) will be consumed until EOF before -searching can begin. In general, ripgrep will only do these things when -necessary. Specifically, if the --multiline flag is provided but the regex -does not contain patterns that would match '\\n' characters, then ripgrep -will automatically avoid reading each file into memory before searching it. -Nevertheless, if you only care about matches spanning at most one line, then it -is always better to disable multiline mode. - -This flag can be disabled with --no-multiline. -" - ); - let arg = RGArg::switch("multiline") - .short("U") - .help(SHORT) - .long_help(LONG) - .overrides("no-multiline"); - args.push(arg); - - let arg = RGArg::switch("no-multiline").hidden().overrides("multiline"); - args.push(arg); -} - -fn flag_multiline_dotall(args: &mut Vec) { - const SHORT: &str = "Make '.' match new lines when multiline is enabled."; - const LONG: &str = long!( - "\ -This flag enables \"dot all\" in your regex pattern, which causes '.' to match -newlines when multiline searching is enabled. This flag has no effect if -multiline searching isn't enabled with the --multiline flag. - -Normally, a '.' will match any character except newlines. While this behavior -typically isn't relevant for line-oriented matching (since matches can span at -most one line), this can be useful when searching with the -U/--multiline flag. -By default, the multiline mode runs without this flag. - -This flag is generally intended to be used in an alias or your ripgrep config -file if you prefer \"dot all\" semantics by default. Note that regardless of -whether this flag is used, \"dot all\" semantics can still be controlled via -inline flags in the regex pattern itself, e.g., '(?s:.)' always enables \"dot -all\" whereas '(?-s:.)' always disables \"dot all\". - -This flag can be disabled with --no-multiline-dotall. -" - ); - let arg = RGArg::switch("multiline-dotall") - .help(SHORT) - .long_help(LONG) - .overrides("no-multiline-dotall"); - args.push(arg); - - let arg = RGArg::switch("no-multiline-dotall") - .hidden() - .overrides("multiline-dotall"); - args.push(arg); -} - -fn flag_no_config(args: &mut Vec) { - const SHORT: &str = "Never read configuration files."; - const LONG: &str = long!( - "\ -Never read configuration files. When this flag is present, ripgrep will not -respect the RIPGREP_CONFIG_PATH environment variable. - -If ripgrep ever grows a feature to automatically read configuration files in -pre-defined locations, then this flag will also disable that behavior as well. -" - ); - let arg = RGArg::switch("no-config").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_no_ignore(args: &mut Vec) { - const SHORT: &str = "Don't respect ignore files."; - const LONG: &str = long!( - "\ -Don't respect ignore files (.gitignore, .ignore, etc.). This implies ---no-ignore-dot, --no-ignore-exclude, --no-ignore-global, no-ignore-parent and ---no-ignore-vcs. - -This does *not* imply --no-ignore-files, since --ignore-file is specified -explicitly as a command line argument. - -When given only once, the -u flag is identical in behavior to --no-ignore and -can be considered an alias. However, subsequent -u flags have additional -effects; see --unrestricted. - -This flag can be disabled with the --ignore flag. -" - ); - let arg = RGArg::switch("no-ignore") - .help(SHORT) - .long_help(LONG) - .overrides("ignore"); - args.push(arg); - - let arg = RGArg::switch("ignore").hidden().overrides("no-ignore"); - args.push(arg); -} - -fn flag_no_ignore_dot(args: &mut Vec) { - const SHORT: &str = "Don't respect .ignore files."; - const LONG: &str = long!( - "\ -Don't respect .ignore files. - -This does *not* affect whether ripgrep will ignore files and directories -whose names begin with a dot. For that, see the -./--hidden flag. - -This flag can be disabled with the --ignore-dot flag. -" - ); - let arg = RGArg::switch("no-ignore-dot") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-dot"); - args.push(arg); - - let arg = RGArg::switch("ignore-dot").hidden().overrides("no-ignore-dot"); - args.push(arg); -} - -fn flag_no_ignore_exclude(args: &mut Vec) { - const SHORT: &str = "Don't respect local exclusion files."; - const LONG: &str = long!( - "\ -Don't respect ignore files that are manually configured for the repository -such as git's '.git/info/exclude'. - -This flag can be disabled with the --ignore-exclude flag. -" - ); - let arg = RGArg::switch("no-ignore-exclude") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-exclude"); - args.push(arg); - - let arg = RGArg::switch("ignore-exclude") - .hidden() - .overrides("no-ignore-exclude"); - args.push(arg); -} - -fn flag_no_ignore_files(args: &mut Vec) { - const SHORT: &str = "Don't respect --ignore-file arguments."; - const LONG: &str = long!( - "\ -When set, any --ignore-file flags, even ones that come after this flag, are -ignored. - -This flag can be disabled with the --ignore-files flag. -" - ); - let arg = RGArg::switch("no-ignore-files") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-files"); - args.push(arg); - - let arg = - RGArg::switch("ignore-files").hidden().overrides("no-ignore-files"); - args.push(arg); -} - -fn flag_no_ignore_global(args: &mut Vec) { - const SHORT: &str = "Don't respect global ignore files."; - const LONG: &str = long!( - "\ -Don't respect ignore files that come from \"global\" sources such as git's -`core.excludesFile` configuration option (which defaults to -`$HOME/.config/git/ignore`). - -This flag can be disabled with the --ignore-global flag. -" - ); - let arg = RGArg::switch("no-ignore-global") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-global"); - args.push(arg); - - let arg = - RGArg::switch("ignore-global").hidden().overrides("no-ignore-global"); - args.push(arg); -} - -fn flag_no_ignore_messages(args: &mut Vec) { - const SHORT: &str = "Suppress gitignore parse error messages."; - const LONG: &str = long!( - "\ -Suppresses all error messages related to parsing ignore files such as .ignore -or .gitignore. - -This flag can be disabled with the --ignore-messages flag. -" - ); - let arg = RGArg::switch("no-ignore-messages") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-messages"); - args.push(arg); - - let arg = RGArg::switch("ignore-messages") - .hidden() - .overrides("no-ignore-messages"); - args.push(arg); -} - -fn flag_no_ignore_parent(args: &mut Vec) { - const SHORT: &str = "Don't respect ignore files in parent directories."; - const LONG: &str = long!( - "\ -Don't respect ignore files (.gitignore, .ignore, etc.) in parent directories. - -This flag can be disabled with the --ignore-parent flag. -" - ); - let arg = RGArg::switch("no-ignore-parent") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-parent"); - args.push(arg); - - let arg = - RGArg::switch("ignore-parent").hidden().overrides("no-ignore-parent"); - args.push(arg); -} - -fn flag_no_ignore_vcs(args: &mut Vec) { - const SHORT: &str = "Don't respect VCS ignore files."; - const LONG: &str = long!( - "\ -Don't respect version control ignore files (.gitignore, etc.). This implies ---no-ignore-parent for VCS files. Note that .ignore files will continue to be -respected. - -This flag can be disabled with the --ignore-vcs flag. -" - ); - let arg = RGArg::switch("no-ignore-vcs") - .help(SHORT) - .long_help(LONG) - .overrides("ignore-vcs"); - args.push(arg); - - let arg = RGArg::switch("ignore-vcs").hidden().overrides("no-ignore-vcs"); - args.push(arg); -} - -fn flag_no_messages(args: &mut Vec) { - const SHORT: &str = "Suppress some error messages."; - const LONG: &str = long!( - "\ -Suppress all error messages related to opening and reading files. Error -messages related to the syntax of the pattern given are still shown. - -This flag can be disabled with the --messages flag. -" - ); - let arg = RGArg::switch("no-messages") - .help(SHORT) - .long_help(LONG) - .overrides("messages"); - args.push(arg); - - let arg = RGArg::switch("messages").hidden().overrides("no-messages"); - args.push(arg); -} - -fn flag_no_pcre2_unicode(args: &mut Vec) { - const SHORT: &str = "Disable Unicode mode for PCRE2 matching."; - const LONG: &str = long!( - "\ -DEPRECATED. Use --no-unicode instead. - -This flag is now an alias for --no-unicode. And --pcre2-unicode is an alias -for --unicode. -" - ); - let arg = RGArg::switch("no-pcre2-unicode") - .help(SHORT) - .long_help(LONG) - .overrides("pcre2-unicode") - .overrides("unicode"); - args.push(arg); - - let arg = RGArg::switch("pcre2-unicode") - .hidden() - .overrides("no-pcre2-unicode") - .overrides("no-unicode"); - args.push(arg); -} - -fn flag_no_require_git(args: &mut Vec) { - const SHORT: &str = "Do not require a git repository to use gitignores."; - const LONG: &str = long!( - "\ -By default, ripgrep will only respect global gitignore rules, .gitignore rules -and local exclude rules if ripgrep detects that you are searching inside a -git repository. This flag allows you to relax this restriction such that -ripgrep will respect all git related ignore rules regardless of whether you're -searching in a git repository or not. - -This flag can be disabled with --require-git. -" - ); - let arg = RGArg::switch("no-require-git") - .help(SHORT) - .long_help(LONG) - .overrides("require-git"); - args.push(arg); - - let arg = - RGArg::switch("require-git").hidden().overrides("no-require-git"); - args.push(arg); -} - -fn flag_no_unicode(args: &mut Vec) { - const SHORT: &str = "Disable Unicode mode."; - const LONG: &str = long!( - "\ -By default, ripgrep will enable \"Unicode mode\" in all of its regexes. This -has a number of consequences: - -* '.' will only match valid UTF-8 encoded scalar values. -* Classes like '\\w', '\\s', '\\d' are all Unicode aware and much bigger - than their ASCII only versions. -* Case insensitive matching will use Unicode case folding. -* A large array of classes like '\\p{Emoji}' are available. -* Word boundaries ('\\b' and '\\B') use the Unicode definition of a word - character. - -In some cases it can be desirable to turn these things off. The --no-unicode -flag will do exactly that. - -For PCRE2 specifically, Unicode mode represents a critical trade off in the -user experience of ripgrep. In particular, unlike the default regex engine, -PCRE2 does not support the ability to search possibly invalid UTF-8 with -Unicode features enabled. Instead, PCRE2 *requires* that everything it searches -when Unicode mode is enabled is valid UTF-8. (Or valid UTF-16/UTF-32, but for -the purposes of ripgrep, we only discuss UTF-8.) This means that if you have -PCRE2's Unicode mode enabled and you attempt to search invalid UTF-8, then -the search for that file will halt and print an error. For this reason, when -PCRE2's Unicode mode is enabled, ripgrep will automatically \"fix\" invalid -UTF-8 sequences by replacing them with the Unicode replacement codepoint. This -penalty does not occur when using the default regex engine. - -If you would rather see the encoding errors surfaced by PCRE2 when Unicode mode -is enabled, then pass the --no-encoding flag to disable all transcoding. - -The --no-unicode flag can be disabled with --unicode. Note that ---no-pcre2-unicode and --pcre2-unicode are aliases for --no-unicode and ---unicode, respectively. -" - ); - let arg = RGArg::switch("no-unicode") - .help(SHORT) - .long_help(LONG) - .overrides("unicode") - .overrides("pcre2-unicode"); - args.push(arg); - - let arg = RGArg::switch("unicode") - .hidden() - .overrides("no-unicode") - .overrides("no-pcre2-unicode"); - args.push(arg); -} - -fn flag_null(args: &mut Vec) { - const SHORT: &str = "Print a NUL byte after file paths."; - const LONG: &str = long!( - "\ -Whenever a file path is printed, follow it with a NUL byte. This includes -printing file paths before matches, and when printing a list of matching files -such as with --count, --files-with-matches and --files. This option is useful -for use with xargs. -" - ); - let arg = RGArg::switch("null").short("0").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_null_data(args: &mut Vec) { - const SHORT: &str = "Use NUL as a line terminator instead of \\n."; - const LONG: &str = long!( - "\ -Enabling this option causes ripgrep to use NUL as a line terminator instead of -the default of '\\n'. - -This is useful when searching large binary files that would otherwise have very -long lines if '\\n' were used as the line terminator. In particular, ripgrep -requires that, at a minimum, each line must fit into memory. Using NUL instead -can be a useful stopgap to keep memory requirements low and avoid OOM (out of -memory) conditions. - -This is also useful for processing NUL delimited data, such as that emitted -when using ripgrep's -0/--null flag or find's --print0 flag. - -Using this flag implies -a/--text. -" - ); - let arg = RGArg::switch("null-data") - .help(SHORT) - .long_help(LONG) - .overrides("crlf"); - args.push(arg); -} - -fn flag_one_file_system(args: &mut Vec) { - const SHORT: &str = - "Do not descend into directories on other file systems."; - const LONG: &str = long!( - "\ -When enabled, ripgrep will not cross file system boundaries relative to where -the search started from. - -Note that this applies to each path argument given to ripgrep. For example, in -the command 'rg --one-file-system /foo/bar /quux/baz', ripgrep will search both -'/foo/bar' and '/quux/baz' even if they are on different file systems, but will -not cross a file system boundary when traversing each path's directory tree. - -This is similar to find's '-xdev' or '-mount' flag. - -This flag can be disabled with --no-one-file-system. -" - ); - let arg = RGArg::switch("one-file-system") - .help(SHORT) - .long_help(LONG) - .overrides("no-one-file-system"); - args.push(arg); - - let arg = RGArg::switch("no-one-file-system") - .hidden() - .overrides("one-file-system"); - args.push(arg); -} - -fn flag_only_matching(args: &mut Vec) { - const SHORT: &str = "Print only matched parts of a line."; - const LONG: &str = long!( - "\ -Print only the matched (non-empty) parts of a matching line, with each such -part on a separate output line. -" - ); - let arg = - RGArg::switch("only-matching").short("o").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_path_separator(args: &mut Vec) { - const SHORT: &str = "Set the path separator."; - const LONG: &str = long!( - "\ -Set the path separator to use when printing file paths. This defaults to your -platform's path separator, which is / on Unix and \\ on Windows. This flag is -intended for overriding the default when the environment demands it (e.g., -cygwin). A path separator is limited to a single byte. -" - ); - let arg = - RGArg::flag("path-separator", "SEPARATOR").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_passthru(args: &mut Vec) { - const SHORT: &str = "Print both matching and non-matching lines."; - const LONG: &str = long!( - "\ -Print both matching and non-matching lines. - -Another way to achieve a similar effect is by modifying your pattern to match -the empty string. For example, if you are searching using 'rg foo' then using -'rg \"^|foo\"' instead will emit every line in every file searched, but only -occurrences of 'foo' will be highlighted. This flag enables the same behavior -without needing to modify the pattern. - -This overrides the --context, --after-context and --before-context flags. -" - ); - let arg = RGArg::switch("passthru") - .help(SHORT) - .long_help(LONG) - .alias("passthrough") - .overrides("after-context") - .overrides("before-context") - .overrides("context"); - args.push(arg); -} - -fn flag_pcre2(args: &mut Vec) { - const SHORT: &str = "Enable PCRE2 matching."; - const LONG: &str = long!( - "\ -When this flag is present, ripgrep will use the PCRE2 regex engine instead of -its default regex engine. - -This is generally useful when you want to use features such as look-around -or backreferences. - -Note that PCRE2 is an optional ripgrep feature. If PCRE2 wasn't included in -your build of ripgrep, then using this flag will result in ripgrep printing -an error message and exiting. PCRE2 may also have worse user experience in -some cases, since it has fewer introspection APIs than ripgrep's default regex -engine. For example, if you use a '\\n' in a PCRE2 regex without the -'-U/--multiline' flag, then ripgrep will silently fail to match anything -instead of reporting an error immediately (like it does with the default -regex engine). - -Related flags: --no-pcre2-unicode - -This flag can be disabled with --no-pcre2. -" - ); - let arg = RGArg::switch("pcre2") - .short("P") - .help(SHORT) - .long_help(LONG) - .overrides("no-pcre2") - .overrides("auto-hybrid-regex") - .overrides("no-auto-hybrid-regex") - .overrides("engine"); - args.push(arg); - - let arg = RGArg::switch("no-pcre2") - .hidden() - .overrides("pcre2") - .overrides("auto-hybrid-regex") - .overrides("no-auto-hybrid-regex") - .overrides("engine"); - args.push(arg); -} - -fn flag_pcre2_version(args: &mut Vec) { - const SHORT: &str = "Print the version of PCRE2 that ripgrep uses."; - const LONG: &str = long!( - "\ -When this flag is present, ripgrep will print the version of PCRE2 in use, -along with other information, and then exit. If PCRE2 is not available, then -ripgrep will print an error message and exit with an error code. -" - ); - let arg = RGArg::switch("pcre2-version").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_pre(args: &mut Vec) { - const SHORT: &str = "search outputs of COMMAND FILE for each FILE"; - const LONG: &str = long!( - "\ -For each input FILE, search the standard output of COMMAND FILE rather than the -contents of FILE. This option expects the COMMAND program to either be an -absolute path or to be available in your PATH. Either an empty string COMMAND -or the '--no-pre' flag will disable this behavior. - - WARNING: When this flag is set, ripgrep will unconditionally spawn a - process for every file that is searched. Therefore, this can incur an - unnecessarily large performance penalty if you don't otherwise need the - flexibility offered by this flag. One possible mitigation to this is to use - the '--pre-glob' flag to limit which files a preprocessor is run with. - -A preprocessor is not run when ripgrep is searching stdin. - -When searching over sets of files that may require one of several decoders -as preprocessors, COMMAND should be a wrapper program or script which first -classifies FILE based on magic numbers/content or based on the FILE name and -then dispatches to an appropriate preprocessor. Each COMMAND also has its -standard input connected to FILE for convenience. - -For example, a shell script for COMMAND might look like: - - case \"$1\" in - *.pdf) - exec pdftotext \"$1\" - - ;; - *) - case $(file \"$1\") in - *Zstandard*) - exec pzstd -cdq - ;; - *) - exec cat - ;; - esac - ;; - esac - -The above script uses `pdftotext` to convert a PDF file to plain text. For -all other files, the script uses the `file` utility to sniff the type of the -file based on its contents. If it is a compressed file in the Zstandard format, -then `pzstd` is used to decompress the contents to stdout. - -This overrides the -z/--search-zip flag. -" - ); - let arg = RGArg::flag("pre", "COMMAND") - .help(SHORT) - .long_help(LONG) - .overrides("no-pre") - .overrides("search-zip"); - args.push(arg); - - let arg = RGArg::switch("no-pre").hidden().overrides("pre"); - args.push(arg); -} - -fn flag_pre_glob(args: &mut Vec) { - const SHORT: &str = - "Include or exclude files from a preprocessing command."; - const LONG: &str = long!( - "\ -This flag works in conjunction with the --pre flag. Namely, when one or more ---pre-glob flags are given, then only files that match the given set of globs -will be handed to the command specified by the --pre flag. Any non-matching -files will be searched without using the preprocessor command. - -This flag is useful when searching many files with the --pre flag. Namely, -it permits the ability to avoid process overhead for files that don't need -preprocessing. For example, given the following shell script, 'pre-pdftotext': - - #!/bin/sh - - pdftotext \"$1\" - - -then it is possible to use '--pre pre-pdftotext --pre-glob \'*.pdf\'' to make -it so ripgrep only executes the 'pre-pdftotext' command on files with a '.pdf' -extension. - -Multiple --pre-glob flags may be used. Globbing rules match .gitignore globs. -Precede a glob with a ! to exclude it. - -This flag has no effect if the --pre flag is not used. -" - ); - let arg = RGArg::flag("pre-glob", "GLOB") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_pretty(args: &mut Vec) { - const SHORT: &str = "Alias for --color always --heading --line-number."; - const LONG: &str = long!( - "\ -This is a convenience alias for '--color always --heading --line-number'. This -flag is useful when you still want pretty output even if you're piping ripgrep -to another program or file. For example: 'rg -p foo | less -R'. -" - ); - let arg = RGArg::switch("pretty").short("p").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_quiet(args: &mut Vec) { - const SHORT: &str = "Do not print anything to stdout."; - const LONG: &str = long!( - "\ -Do not print anything to stdout. If a match is found in a file, then ripgrep -will stop searching. This is useful when ripgrep is used only for its exit -code (which will be an error if no matches are found). - -When --files is used, then ripgrep will stop finding files after finding the -first file that matches all ignore rules. -" - ); - let arg = RGArg::switch("quiet").short("q").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_regex_size_limit(args: &mut Vec) { - const SHORT: &str = "The upper size limit of the compiled regex."; - const LONG: &str = long!( - "\ -The upper size limit of the compiled regex. The default limit is 10M. - -The argument accepts the same size suffixes as allowed in the --max-filesize -flag. -" - ); - let arg = RGArg::flag("regex-size-limit", "NUM+SUFFIX?") - .help(SHORT) - .long_help(LONG); - args.push(arg); -} - -fn flag_regexp(args: &mut Vec) { - const SHORT: &str = "A pattern to search for."; - const LONG: &str = long!( - "\ -A pattern to search for. This option can be provided multiple times, where -all patterns given are searched. Lines matching at least one of the provided -patterns are printed. This flag can also be used when searching for patterns -that start with a dash. - -For example, to search for the literal '-foo', you can use this flag: - - rg -e -foo - -You can also use the special '--' delimiter to indicate that no more flags -will be provided. Namely, the following is equivalent to the above: - - rg -- -foo -" - ); - let arg = RGArg::flag("regexp", "PATTERN") - .short("e") - .help(SHORT) - .long_help(LONG) - .multiple() - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_replace(args: &mut Vec) { - const SHORT: &str = "Replace matches with the given text."; - const LONG: &str = long!( - "\ -Replace every match with the text given when printing results. Neither this -flag nor any other ripgrep flag will modify your files. - -Capture group indices (e.g., $5) and names (e.g., $foo) are supported in the -replacement string. Capture group indices are numbered based on the position of -the opening parenthesis of the group, where the leftmost such group is $1. The -special $0 group corresponds to the entire match. - -In shells such as Bash and zsh, you should wrap the pattern in single quotes -instead of double quotes. Otherwise, capture group indices will be replaced by -expanded shell variables which will most likely be empty. - -To write a literal '$', use '$$'. - -Note that the replacement by default replaces each match, and NOT the entire -line. To replace the entire line, you should match the entire line. - -This flag can be used with the -o/--only-matching flag. -" - ); - let arg = RGArg::flag("replace", "REPLACEMENT_TEXT") - .short("r") - .help(SHORT) - .long_help(LONG) - .allow_leading_hyphen(); - args.push(arg); -} - -fn flag_search_zip(args: &mut Vec) { - const SHORT: &str = "Search in compressed files."; - const LONG: &str = long!( - "\ -Search in compressed files. Currently gzip, bzip2, xz, LZ4, LZMA, Brotli and -Zstd files are supported. This option expects the decompression binaries to be -available in your PATH. - -This flag can be disabled with --no-search-zip. -" - ); - let arg = RGArg::switch("search-zip") - .short("z") - .help(SHORT) - .long_help(LONG) - .overrides("no-search-zip") - .overrides("pre"); - args.push(arg); - - let arg = RGArg::switch("no-search-zip").hidden().overrides("search-zip"); - args.push(arg); -} - -fn flag_smart_case(args: &mut Vec) { - const SHORT: &str = "Smart case search."; - const LONG: &str = long!( - "\ -Searches case insensitively if the pattern is all lowercase. Search case -sensitively otherwise. - -A pattern is considered all lowercase if both of the following rules hold: - -First, the pattern contains at least one literal character. For example, 'a\\w' -contains a literal ('a') but just '\\w' does not. - -Second, of the literals in the pattern, none of them are considered to be -uppercase according to Unicode. For example, 'foo\\pL' has no uppercase -literals but 'Foo\\pL' does. - -This overrides the -s/--case-sensitive and -i/--ignore-case flags. -" - ); - let arg = RGArg::switch("smart-case") - .short("S") - .help(SHORT) - .long_help(LONG) - .overrides("case-sensitive") - .overrides("ignore-case"); - args.push(arg); -} - -fn flag_sort_files(args: &mut Vec) { - const SHORT: &str = "DEPRECATED"; - const LONG: &str = long!( - "\ -DEPRECATED: Use --sort or --sortr instead. - -Sort results by file path. Note that this currently disables all parallelism -and runs search in a single thread. - -This flag can be disabled with --no-sort-files. -" - ); - let arg = RGArg::switch("sort-files") - .help(SHORT) - .long_help(LONG) - .hidden() - .overrides("no-sort-files") - .overrides("sort") - .overrides("sortr"); - args.push(arg); - - let arg = RGArg::switch("no-sort-files") - .hidden() - .overrides("sort-files") - .overrides("sort") - .overrides("sortr"); - args.push(arg); -} - -fn flag_sort(args: &mut Vec) { - const SHORT: &str = - "Sort results in ascending order. Implies --threads=1."; - const LONG: &str = long!( - "\ -This flag enables sorting of results in ascending order. The possible values -for this flag are: - - none (Default) Do not sort results. Fastest. Can be multi-threaded. - path Sort by file path. Always single-threaded. - modified Sort by the last modified time on a file. Always single-threaded. - accessed Sort by the last accessed time on a file. Always single-threaded. - created Sort by the creation time on a file. Always single-threaded. - -If the chosen (manually or by-default) sorting criteria isn't available on your -system (for example, creation time is not available on ext4 file systems), then -ripgrep will attempt to detect this, print an error and exit without searching. - -To sort results in reverse or descending order, use the --sortr flag. Also, -this flag overrides --sortr. - -Note that sorting results currently always forces ripgrep to abandon -parallelism and run in a single thread. -" - ); - let arg = RGArg::flag("sort", "SORTBY") - .help(SHORT) - .long_help(LONG) - .possible_values(&["path", "modified", "accessed", "created", "none"]) - .overrides("sortr") - .overrides("sort-files") - .overrides("no-sort-files"); - args.push(arg); -} - -fn flag_sortr(args: &mut Vec) { - const SHORT: &str = - "Sort results in descending order. Implies --threads=1."; - const LONG: &str = long!( - "\ -This flag enables sorting of results in descending order. The possible values -for this flag are: - - none (Default) Do not sort results. Fastest. Can be multi-threaded. - path Sort by file path. Always single-threaded. - modified Sort by the last modified time on a file. Always single-threaded. - accessed Sort by the last accessed time on a file. Always single-threaded. - created Sort by the creation time on a file. Always single-threaded. - -If the chosen (manually or by-default) sorting criteria isn't available on your -system (for example, creation time is not available on ext4 file systems), then -ripgrep will attempt to detect this, print an error and exit without searching. - -To sort results in ascending order, use the --sort flag. Also, this flag -overrides --sort. - -Note that sorting results currently always forces ripgrep to abandon -parallelism and run in a single thread. -" - ); - let arg = RGArg::flag("sortr", "SORTBY") - .help(SHORT) - .long_help(LONG) - .possible_values(&["path", "modified", "accessed", "created", "none"]) - .overrides("sort") - .overrides("sort-files") - .overrides("no-sort-files"); - args.push(arg); -} - -fn flag_stats(args: &mut Vec) { - const SHORT: &str = "Print statistics about this ripgrep search."; - const LONG: &str = long!( - "\ -Print aggregate statistics about this ripgrep search. When this flag is -present, ripgrep will print the following stats to stdout at the end of the -search: number of matched lines, number of files with matches, number of files -searched, and the time taken for the entire search to complete. - -This set of aggregate statistics may expand over time. - -Note that this flag has no effect if --files, --files-with-matches or ---files-without-match is passed. - -This flag can be disabled with --no-stats. -" - ); - let arg = RGArg::switch("stats") - .help(SHORT) - .long_help(LONG) - .overrides("no-stats"); - args.push(arg); - - let arg = RGArg::switch("no-stats").hidden().overrides("stats"); - args.push(arg); -} - -fn flag_text(args: &mut Vec) { - const SHORT: &str = "Search binary files as if they were text."; - const LONG: &str = long!( - "\ -Search binary files as if they were text. When this flag is present, ripgrep's -binary file detection is disabled. This means that when a binary file is -searched, its contents may be printed if there is a match. This may cause -escape codes to be printed that alter the behavior of your terminal. - -When binary file detection is enabled it is imperfect. In general, it uses -a simple heuristic. If a NUL byte is seen during search, then the file is -considered binary and search stops (unless this flag is present). -Alternatively, if the '--binary' flag is used, then ripgrep will only quit -when it sees a NUL byte after it sees a match (or searches the entire file). - -This flag can be disabled with '--no-text'. It overrides the '--binary' flag. -" - ); - let arg = RGArg::switch("text") - .short("a") - .help(SHORT) - .long_help(LONG) - .overrides("no-text") - .overrides("binary") - .overrides("no-binary"); - args.push(arg); - - let arg = RGArg::switch("no-text") - .hidden() - .overrides("text") - .overrides("binary") - .overrides("no-binary"); - args.push(arg); -} - -fn flag_threads(args: &mut Vec) { - const SHORT: &str = "The approximate number of threads to use."; - const LONG: &str = long!( - "\ -The approximate number of threads to use. A value of 0 (which is the default) -causes ripgrep to choose the thread count using heuristics. -" - ); - let arg = - RGArg::flag("threads", "NUM").short("j").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_trim(args: &mut Vec) { - const SHORT: &str = "Trim prefixed whitespace from matches."; - const LONG: &str = long!( - "\ -When set, all ASCII whitespace at the beginning of each line printed will be -trimmed. - -This flag can be disabled with --no-trim. -" - ); - let arg = - RGArg::switch("trim").help(SHORT).long_help(LONG).overrides("no-trim"); - args.push(arg); - - let arg = RGArg::switch("no-trim").hidden().overrides("trim"); - args.push(arg); -} - -fn flag_type(args: &mut Vec) { - const SHORT: &str = "Only search files matching TYPE."; - const LONG: &str = long!( - "\ -Only search files matching TYPE. Multiple type flags may be provided. Use the ---type-list flag to list all available types. - -This flag supports the special value 'all', which will behave as if --type -was provided for every file type supported by ripgrep (including any custom -file types). The end result is that '--type all' causes ripgrep to search in -\"whitelist\" mode, where it will only search files it recognizes via its type -definitions. -" - ); - let arg = RGArg::flag("type", "TYPE") - .short("t") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_type_add(args: &mut Vec) { - const SHORT: &str = "Add a new glob for a file type."; - const LONG: &str = long!( - "\ -Add a new glob for a particular file type. Only one glob can be added at a -time. Multiple --type-add flags can be provided. Unless --type-clear is used, -globs are added to any existing globs defined inside of ripgrep. - -Note that this MUST be passed to every invocation of ripgrep. Type settings are -NOT persisted. See CONFIGURATION FILES for a workaround. - -Example: - - rg --type-add 'foo:*.foo' -tfoo PATTERN. - ---type-add can also be used to include rules from other types with the special -include directive. The include directive permits specifying one or more other -type names (separated by a comma) that have been defined and its rules will -automatically be imported into the type specified. For example, to create a -type called src that matches C++, Python and Markdown files, one can use: - - --type-add 'src:include:cpp,py,md' - -Additional glob rules can still be added to the src type by using the ---type-add flag again: - - --type-add 'src:include:cpp,py,md' --type-add 'src:*.foo' - -Note that type names must consist only of Unicode letters or numbers. -Punctuation characters are not allowed. -" - ); - let arg = RGArg::flag("type-add", "TYPE_SPEC") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_type_clear(args: &mut Vec) { - const SHORT: &str = "Clear globs for a file type."; - const LONG: &str = long!( - "\ -Clear the file type globs previously defined for TYPE. This only clears the -default type definitions that are found inside of ripgrep. - -Note that this MUST be passed to every invocation of ripgrep. Type settings are -NOT persisted. See CONFIGURATION FILES for a workaround. -" - ); - let arg = RGArg::flag("type-clear", "TYPE") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_type_not(args: &mut Vec) { - const SHORT: &str = "Do not search files matching TYPE."; - const LONG: &str = long!( - "\ -Do not search files matching TYPE. Multiple type-not flags may be provided. Use -the --type-list flag to list all available types. -" - ); - let arg = RGArg::flag("type-not", "TYPE") - .short("T") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_type_list(args: &mut Vec) { - const SHORT: &str = "Show all supported file types."; - const LONG: &str = long!( - "\ -Show all supported file types and their corresponding globs. -" - ); - let arg = RGArg::switch("type-list") - .help(SHORT) - .long_help(LONG) - // This also technically conflicts with PATTERN, but the first file - // path will actually be in PATTERN. - .conflicts(&["file", "files", "pattern", "regexp"]); - args.push(arg); -} - -fn flag_unrestricted(args: &mut Vec) { - const SHORT: &str = "Reduce the level of \"smart\" searching."; - const LONG: &str = long!( - "\ -Reduce the level of \"smart\" searching. A single -u won't respect .gitignore -(etc.) files (--no-ignore). Two -u flags will additionally search hidden files -and directories (-./--hidden). Three -u flags will additionally search binary -files (--binary). - -'rg -uuu' is roughly equivalent to 'grep -r'. -" - ); - let arg = RGArg::switch("unrestricted") - .short("u") - .help(SHORT) - .long_help(LONG) - .multiple(); - args.push(arg); -} - -fn flag_vimgrep(args: &mut Vec) { - const SHORT: &str = "Show results in vim compatible format."; - const LONG: &str = long!( - "\ -Show results with every match on its own line, including line numbers and -column numbers. With this option, a line with more than one match will be -printed more than once. -" - ); - let arg = RGArg::switch("vimgrep").help(SHORT).long_help(LONG); - args.push(arg); -} - -fn flag_with_filename(args: &mut Vec) { - const SHORT: &str = "Print the file path with the matched lines."; - const LONG: &str = long!( - "\ -Display the file path for matches. This is the default when more than one -file is searched. If --heading is enabled (the default when printing to a -terminal), the file path will be shown above clusters of matches from each -file; otherwise, the file name will be shown as a prefix for each matched line. - -This flag overrides --no-filename. -" - ); - let arg = RGArg::switch("with-filename") - .short("H") - .help(SHORT) - .long_help(LONG) - .overrides("no-filename"); - args.push(arg); - - const NO_SHORT: &str = "Never print the file path with the matched lines."; - const NO_LONG: &str = long!( - "\ -Never print the file path with the matched lines. This is the default when -ripgrep is explicitly instructed to search one file or stdin. - -This flag overrides --with-filename. -" - ); - let arg = RGArg::switch("no-filename") - .short("I") - .help(NO_SHORT) - .long_help(NO_LONG) - .overrides("with-filename"); - args.push(arg); -} - -fn flag_word_regexp(args: &mut Vec) { - const SHORT: &str = "Only show matches surrounded by word boundaries."; - const LONG: &str = long!( - "\ -Only show matches surrounded by word boundaries. This is roughly equivalent to -putting \\b before and after all of the search patterns. - -This overrides the --line-regexp flag. -" - ); - let arg = RGArg::switch("word-regexp") - .short("w") - .help(SHORT) - .long_help(LONG) - .overrides("line-regexp"); - args.push(arg); -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/args.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/args.rs deleted file mode 100644 index 6623cbd54..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/args.rs +++ /dev/null @@ -1,1873 +0,0 @@ -use std::cmp; -use std::env; -use std::ffi::{OsStr, OsString}; -use std::fs; -use std::io::{self, Write}; -use std::path::{Path, PathBuf}; -use std::process; -use std::sync::Arc; -use std::time::SystemTime; - -use clap; -use grep::cli; -use grep::matcher::LineTerminator; -#[cfg(feature = "pcre2")] -use grep::pcre2::{ - RegexMatcher as PCRE2RegexMatcher, - RegexMatcherBuilder as PCRE2RegexMatcherBuilder, -}; -use grep::printer::{ - default_color_specs, ColorSpecs, JSONBuilder, Standard, StandardBuilder, - Stats, Summary, SummaryBuilder, SummaryKind, JSON, -}; -use grep::regex::{ - RegexMatcher as RustRegexMatcher, - RegexMatcherBuilder as RustRegexMatcherBuilder, -}; -use grep::searcher::{ - BinaryDetection, Encoding, MmapChoice, Searcher, SearcherBuilder, -}; -use ignore::overrides::{Override, OverrideBuilder}; -use ignore::types::{FileTypeDef, Types, TypesBuilder}; -use ignore::{Walk, WalkBuilder, WalkParallel}; -use log; -use num_cpus; -use regex; -use termcolor::{BufferWriter, ColorChoice, WriteColor}; - -use crate::app; -use crate::config; -use crate::logger::Logger; -use crate::messages::{set_ignore_messages, set_messages}; -use crate::path_printer::{PathPrinter, PathPrinterBuilder}; -use crate::search::{ - PatternMatcher, Printer, SearchWorker, SearchWorkerBuilder, -}; -use crate::subject::SubjectBuilder; -use crate::Result; - -/// The command that ripgrep should execute based on the command line -/// configuration. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub enum Command { - /// Search using exactly one thread. - Search, - /// Search using possibly many threads. - SearchParallel, - /// The command line parameters suggest that a search should occur, but - /// ripgrep knows that a match can never be found (e.g., no given patterns - /// or --max-count=0). - SearchNever, - /// Show the files that would be searched, but don't actually search them, - /// and use exactly one thread. - Files, - /// Show the files that would be searched, but don't actually search them, - /// and perform directory traversal using possibly many threads. - FilesParallel, - /// List all file type definitions configured, including the default file - /// types and any additional file types added to the command line. - Types, - /// Print the version of PCRE2 in use. - PCRE2Version, -} - -impl Command { - /// Returns true if and only if this command requires executing a search. - fn is_search(&self) -> bool { - use self::Command::*; - - match *self { - Search | SearchParallel => true, - SearchNever | Files | FilesParallel | Types | PCRE2Version => { - false - } - } - } -} - -/// The primary configuration object used throughout ripgrep. It provides a -/// high-level convenient interface to the provided command line arguments. -/// -/// An `Args` object is cheap to clone and can be used from multiple threads -/// simultaneously. -#[derive(Clone, Debug)] -pub struct Args(Arc); - -#[derive(Clone, Debug)] -struct ArgsImp { - /// Mid-to-low level routines for extracting CLI arguments. - matches: ArgMatches, - /// The patterns provided at the command line and/or via the -f/--file - /// flag. This may be empty. - patterns: Vec, - /// A matcher built from the patterns. - /// - /// It's important that this is only built once, since building this goes - /// through regex compilation and various types of analyses. That is, if - /// you need many of theses (one per thread, for example), it is better to - /// build it once and then clone it. - matcher: PatternMatcher, - /// The paths provided at the command line. This is guaranteed to be - /// non-empty. (If no paths are provided, then a default path is created.) - paths: Vec, - /// Returns true if and only if `paths` had to be populated with a single - /// default path. - using_default_path: bool, -} - -impl Args { - /// Parse the command line arguments for this process. - /// - /// If a CLI usage error occurred, then exit the process and print a usage - /// or error message. Similarly, if the user requested the version of - /// ripgrep, then print the version and exit. - /// - /// Also, initialize a global logger. - pub fn parse() -> Result { - // We parse the args given on CLI. This does not include args from - // the config. We use the CLI args as an initial configuration while - // trying to parse config files. If a config file exists and has - // arguments, then we re-parse argv, otherwise we just use the matches - // we have here. - let early_matches = ArgMatches::new(clap_matches(env::args_os())?); - set_messages(!early_matches.is_present("no-messages")); - set_ignore_messages(!early_matches.is_present("no-ignore-messages")); - - if let Err(err) = Logger::init() { - return Err(format!("failed to initialize logger: {}", err).into()); - } - if early_matches.is_present("trace") { - log::set_max_level(log::LevelFilter::Trace); - } else if early_matches.is_present("debug") { - log::set_max_level(log::LevelFilter::Debug); - } else { - log::set_max_level(log::LevelFilter::Warn); - } - - let matches = early_matches.reconfigure()?; - // The logging level may have changed if we brought in additional - // arguments from a configuration file, so recheck it and set the log - // level as appropriate. - if matches.is_present("trace") { - log::set_max_level(log::LevelFilter::Trace); - } else if matches.is_present("debug") { - log::set_max_level(log::LevelFilter::Debug); - } else { - log::set_max_level(log::LevelFilter::Warn); - } - set_messages(!matches.is_present("no-messages")); - set_ignore_messages(!matches.is_present("no-ignore-messages")); - matches.to_args() - } - - /// Return direct access to command line arguments. - fn matches(&self) -> &ArgMatches { - &self.0.matches - } - - /// Return the patterns found in the command line arguments. This includes - /// patterns read via the -f/--file flags. - fn patterns(&self) -> &[String] { - &self.0.patterns - } - - /// Return the matcher builder from the patterns. - fn matcher(&self) -> &PatternMatcher { - &self.0.matcher - } - - /// Return the paths found in the command line arguments. This is - /// guaranteed to be non-empty. In the case where no explicit arguments are - /// provided, a single default path is provided automatically. - fn paths(&self) -> &[PathBuf] { - &self.0.paths - } - - /// Returns true if and only if `paths` had to be populated with a default - /// path, which occurs only when no paths were given as command line - /// arguments. - pub fn using_default_path(&self) -> bool { - self.0.using_default_path - } - - /// Return the printer that should be used for formatting the output of - /// search results. - /// - /// The returned printer will write results to the given writer. - fn printer(&self, wtr: W) -> Result> { - match self.matches().output_kind() { - OutputKind::Standard => { - let separator_search = self.command()? == Command::Search; - self.matches() - .printer_standard(self.paths(), wtr, separator_search) - .map(Printer::Standard) - } - OutputKind::Summary => self - .matches() - .printer_summary(self.paths(), wtr) - .map(Printer::Summary), - OutputKind::JSON => { - self.matches().printer_json(wtr).map(Printer::JSON) - } - } - } -} - -/// High level public routines for building data structures used by ripgrep -/// from command line arguments. -impl Args { - /// Create a new buffer writer for multi-threaded printing with color - /// support. - pub fn buffer_writer(&self) -> Result { - let mut wtr = BufferWriter::stdout(self.matches().color_choice()); - wtr.separator(self.matches().file_separator()?); - Ok(wtr) - } - - /// Return the high-level command that ripgrep should run. - pub fn command(&self) -> Result { - let is_one_search = self.matches().is_one_search(self.paths()); - let threads = self.matches().threads()?; - let one_thread = is_one_search || threads == 1; - - Ok(if self.matches().is_present("pcre2-version") { - Command::PCRE2Version - } else if self.matches().is_present("type-list") { - Command::Types - } else if self.matches().is_present("files") { - if one_thread { - Command::Files - } else { - Command::FilesParallel - } - } else if self.matches().can_never_match(self.patterns()) { - Command::SearchNever - } else if one_thread { - Command::Search - } else { - Command::SearchParallel - }) - } - - /// Builder a path printer that can be used for printing just file paths, - /// with optional color support. - /// - /// The printer will print paths to the given writer. - pub fn path_printer( - &self, - wtr: W, - ) -> Result> { - let mut builder = PathPrinterBuilder::new(); - builder - .color_specs(self.matches().color_specs()?) - .separator(self.matches().path_separator()?) - .terminator(self.matches().path_terminator().unwrap_or(b'\n')); - Ok(builder.build(wtr)) - } - - /// Returns true if and only if ripgrep should be "quiet." - pub fn quiet(&self) -> bool { - self.matches().is_present("quiet") - } - - /// Returns true if and only if the search should quit after finding the - /// first match. - pub fn quit_after_match(&self) -> Result { - Ok(self.matches().is_present("quiet") && self.stats()?.is_none()) - } - - /// Build a worker for executing searches. - /// - /// Search results are written to the given writer. - pub fn search_worker( - &self, - wtr: W, - ) -> Result> { - let matches = self.matches(); - let matcher = self.matcher().clone(); - let printer = self.printer(wtr)?; - let searcher = matches.searcher(self.paths())?; - let mut builder = SearchWorkerBuilder::new(); - builder - .json_stats(matches.is_present("json")) - .preprocessor(matches.preprocessor())? - .preprocessor_globs(matches.preprocessor_globs()?) - .search_zip(matches.is_present("search-zip")) - .binary_detection_implicit(matches.binary_detection_implicit()) - .binary_detection_explicit(matches.binary_detection_explicit()); - Ok(builder.build(matcher, searcher, printer)) - } - - /// Returns a zero value for tracking statistics if and only if it has been - /// requested. - /// - /// When this returns a `Stats` value, then it is guaranteed that the - /// search worker will be configured to track statistics as well. - pub fn stats(&self) -> Result> { - Ok(if self.command()?.is_search() && self.matches().stats() { - Some(Stats::new()) - } else { - None - }) - } - - /// Return a builder for constructing subjects. A subject represents a - /// single unit of something to search. Typically, this corresponds to a - /// file or a stream such as stdin. - pub fn subject_builder(&self) -> SubjectBuilder { - let mut builder = SubjectBuilder::new(); - builder.strip_dot_prefix(self.using_default_path()); - builder - } - - /// Execute the given function with a writer to stdout that enables color - /// support based on the command line configuration. - pub fn stdout(&self) -> cli::StandardStream { - let color = self.matches().color_choice(); - if self.matches().is_present("line-buffered") { - cli::stdout_buffered_line(color) - } else if self.matches().is_present("block-buffered") { - cli::stdout_buffered_block(color) - } else { - cli::stdout(color) - } - } - - /// Return the type definitions compiled into ripgrep. - /// - /// If there was a problem reading and parsing the type definitions, then - /// this returns an error. - pub fn type_defs(&self) -> Result> { - Ok(self.matches().types()?.definitions().to_vec()) - } - - /// Return a walker that never uses additional threads. - pub fn walker(&self) -> Result { - Ok(self.matches().walker_builder(self.paths())?.build()) - } - - /// Return a parallel walker that may use additional threads. - pub fn walker_parallel(&self) -> Result { - Ok(self.matches().walker_builder(self.paths())?.build_parallel()) - } -} - -/// `ArgMatches` wraps `clap::ArgMatches` and provides semantic meaning to -/// the parsed arguments. -#[derive(Clone, Debug)] -struct ArgMatches(clap::ArgMatches<'static>); - -/// The output format. Generally, this corresponds to the printer that ripgrep -/// uses to show search results. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -enum OutputKind { - /// Classic grep-like or ack-like format. - Standard, - /// Show matching files and possibly the number of matches in each file. - Summary, - /// Emit match information in the JSON Lines format. - JSON, -} - -/// The sort criteria, if present. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -struct SortBy { - /// Whether to reverse the sort criteria (i.e., descending order). - reverse: bool, - /// The actual sorting criteria. - kind: SortByKind, -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -enum SortByKind { - /// No sorting at all. - None, - /// Sort by path. - Path, - /// Sort by last modified time. - LastModified, - /// Sort by last accessed time. - LastAccessed, - /// Sort by creation time. - Created, -} - -impl SortBy { - fn asc(kind: SortByKind) -> SortBy { - SortBy { reverse: false, kind } - } - - fn desc(kind: SortByKind) -> SortBy { - SortBy { reverse: true, kind } - } - - fn none() -> SortBy { - SortBy::asc(SortByKind::None) - } - - /// Try to check that the sorting criteria selected is actually supported. - /// If it isn't, then an error is returned. - fn check(&self) -> Result<()> { - match self.kind { - SortByKind::None | SortByKind::Path => {} - SortByKind::LastModified => { - env::current_exe()?.metadata()?.modified()?; - } - SortByKind::LastAccessed => { - env::current_exe()?.metadata()?.accessed()?; - } - SortByKind::Created => { - env::current_exe()?.metadata()?.created()?; - } - } - Ok(()) - } - - fn configure_walk_builder(self, builder: &mut WalkBuilder) { - // This isn't entirely optimal. In particular, we will wind up issuing - // a stat for many files redundantly. Aside from having potentially - // inconsistent results with respect to sorting, this is also slow. - // We could fix this here at the expense of memory by caching stat - // calls. A better fix would be to find a way to push this down into - // directory traversal itself, but that's a somewhat nasty change. - match self.kind { - SortByKind::None => {} - SortByKind::Path => { - if self.reverse { - builder.sort_by_file_name(|a, b| a.cmp(b).reverse()); - } else { - builder.sort_by_file_name(|a, b| a.cmp(b)); - } - } - SortByKind::LastModified => { - builder.sort_by_file_path(move |a, b| { - sort_by_metadata_time(a, b, self.reverse, |md| { - md.modified() - }) - }); - } - SortByKind::LastAccessed => { - builder.sort_by_file_path(move |a, b| { - sort_by_metadata_time(a, b, self.reverse, |md| { - md.accessed() - }) - }); - } - SortByKind::Created => { - builder.sort_by_file_path(move |a, b| { - sort_by_metadata_time(a, b, self.reverse, |md| { - md.created() - }) - }); - } - } - } -} - -impl SortByKind { - fn new(kind: &str) -> SortByKind { - match kind { - "none" => SortByKind::None, - "path" => SortByKind::Path, - "modified" => SortByKind::LastModified, - "accessed" => SortByKind::LastAccessed, - "created" => SortByKind::Created, - _ => SortByKind::None, - } - } -} - -/// Encoding mode the searcher will use. -#[derive(Clone, Debug)] -enum EncodingMode { - /// Use an explicit encoding forcefully, but let BOM sniffing override it. - Some(Encoding), - /// Use only BOM sniffing to auto-detect an encoding. - Auto, - /// Use no explicit encoding and disable all BOM sniffing. This will - /// always result in searching the raw bytes, regardless of their - /// true encoding. - Disabled, -} - -impl EncodingMode { - /// Checks if an explicit encoding has been set. Returns false for - /// automatic BOM sniffing and no sniffing. - /// - /// This is only used to determine whether PCRE2 needs to have its own - /// UTF-8 checking enabled. If we have an explicit encoding set, then - /// we're always guaranteed to get UTF-8, so we can disable PCRE2's check. - /// Otherwise, we have no such guarantee, and must enable PCRE2' UTF-8 - /// check. - #[cfg(feature = "pcre2")] - fn has_explicit_encoding(&self) -> bool { - match self { - EncodingMode::Some(_) => true, - _ => false, - } - } -} - -impl ArgMatches { - /// Create an ArgMatches from clap's parse result. - fn new(clap_matches: clap::ArgMatches<'static>) -> ArgMatches { - ArgMatches(clap_matches) - } - - /// Run clap and return the matches using a config file if present. If clap - /// determines a problem with the user provided arguments (or if --help or - /// --version are given), then an error/usage/version will be printed and - /// the process will exit. - /// - /// If there are no additional arguments from the environment (e.g., a - /// config file), then the given matches are returned as is. - fn reconfigure(self) -> Result { - // If the end user says no config, then respect it. - if self.is_present("no-config") { - log::debug!( - "not reading config files because --no-config is present" - ); - return Ok(self); - } - // If the user wants ripgrep to use a config file, then parse args - // from that first. - let mut args = config::args(); - if args.is_empty() { - return Ok(self); - } - let mut cliargs = env::args_os(); - if let Some(bin) = cliargs.next() { - args.insert(0, bin); - } - args.extend(cliargs); - log::debug!("final argv: {:?}", args); - Ok(ArgMatches(clap_matches(args)?)) - } - - /// Convert the result of parsing CLI arguments into ripgrep's higher level - /// configuration structure. - fn to_args(self) -> Result { - // We compute these once since they could be large. - let patterns = self.patterns()?; - let matcher = self.matcher(&patterns)?; - let mut paths = self.paths(); - let using_default_path = if paths.is_empty() { - paths.push(self.path_default()); - true - } else { - false - }; - Ok(Args(Arc::new(ArgsImp { - matches: self, - patterns, - matcher, - paths, - using_default_path, - }))) - } -} - -/// High level routines for converting command line arguments into various -/// data structures used by ripgrep. -/// -/// Methods are sorted alphabetically. -impl ArgMatches { - /// Return the matcher that should be used for searching. - /// - /// If there was a problem building the matcher (e.g., a syntax error), - /// then this returns an error. - fn matcher(&self, patterns: &[String]) -> Result { - if self.is_present("pcre2") { - self.matcher_engine("pcre2", patterns) - } else if self.is_present("auto-hybrid-regex") { - self.matcher_engine("auto", patterns) - } else { - let engine = self.value_of_lossy("engine").unwrap(); - self.matcher_engine(&engine, patterns) - } - } - - /// Return the matcher that should be used for searching using engine - /// as the engine for the patterns. - /// - /// If there was a problem building the matcher (e.g., a syntax error), - /// then this returns an error. - fn matcher_engine( - &self, - engine: &str, - patterns: &[String], - ) -> Result { - match engine { - "default" => { - let matcher = match self.matcher_rust(patterns) { - Ok(matcher) => matcher, - Err(err) => { - return Err(From::from(suggest(err.to_string()))); - } - }; - Ok(PatternMatcher::RustRegex(matcher)) - } - #[cfg(feature = "pcre2")] - "pcre2" => { - let matcher = self.matcher_pcre2(patterns)?; - Ok(PatternMatcher::PCRE2(matcher)) - } - #[cfg(not(feature = "pcre2"))] - "pcre2" => Err(From::from( - "PCRE2 is not available in this build of ripgrep", - )), - "auto" => { - let rust_err = match self.matcher_rust(patterns) { - Ok(matcher) => { - return Ok(PatternMatcher::RustRegex(matcher)); - } - Err(err) => err, - }; - log::debug!( - "error building Rust regex in hybrid mode:\n{}", - rust_err, - ); - - let pcre_err = match self.matcher_engine("pcre2", patterns) { - Ok(matcher) => return Ok(matcher), - Err(err) => err, - }; - Err(From::from(format!( - "regex could not be compiled with either the default \ - regex engine or with PCRE2.\n\n\ - default regex engine error:\n{}\n{}\n{}\n\n\ - PCRE2 regex engine error:\n{}", - "~".repeat(79), - rust_err, - "~".repeat(79), - pcre_err, - ))) - } - _ => Err(From::from(format!( - "unrecognized regex engine '{}'", - engine - ))), - } - } - - /// Build a matcher using Rust's regex engine. - /// - /// If there was a problem building the matcher (such as a regex syntax - /// error), then an error is returned. - fn matcher_rust(&self, patterns: &[String]) -> Result { - let mut builder = RustRegexMatcherBuilder::new(); - builder - .case_smart(self.case_smart()) - .case_insensitive(self.case_insensitive()) - .multi_line(true) - .unicode(self.unicode()) - .octal(false) - .word(self.is_present("word-regexp")); - if self.is_present("multiline") { - builder.dot_matches_new_line(self.is_present("multiline-dotall")); - if self.is_present("crlf") { - builder.crlf(true).line_terminator(None); - } - } else { - builder.line_terminator(Some(b'\n')).dot_matches_new_line(false); - if self.is_present("crlf") { - builder.crlf(true); - } - // We don't need to set this in multiline mode since mulitline - // matchers don't use optimizations related to line terminators. - // Moreover, a mulitline regex used with --null-data should - // be allowed to match NUL bytes explicitly, which this would - // otherwise forbid. - if self.is_present("null-data") { - builder.line_terminator(Some(b'\x00')); - } - } - if let Some(limit) = self.regex_size_limit()? { - builder.size_limit(limit); - } - if let Some(limit) = self.dfa_size_limit()? { - builder.dfa_size_limit(limit); - } - let res = if self.is_present("fixed-strings") { - builder.build_literals(patterns) - } else { - builder.build(&patterns.join("|")) - }; - match res { - Ok(m) => Ok(m), - Err(err) => Err(From::from(suggest_multiline(err.to_string()))), - } - } - - /// Build a matcher using PCRE2. - /// - /// If there was a problem building the matcher (such as a regex syntax - /// error), then an error is returned. - #[cfg(feature = "pcre2")] - fn matcher_pcre2(&self, patterns: &[String]) -> Result { - let mut builder = PCRE2RegexMatcherBuilder::new(); - builder - .case_smart(self.case_smart()) - .caseless(self.case_insensitive()) - .multi_line(true) - .word(self.is_present("word-regexp")); - // For whatever reason, the JIT craps out during regex compilation with - // a "no more memory" error on 32 bit systems. So don't use it there. - if cfg!(target_pointer_width = "64") { - builder - .jit_if_available(true) - // The PCRE2 docs say that 32KB is the default, and that 1MB - // should be big enough for anything. But let's crank it to - // 10MB. - .max_jit_stack_size(Some(10 * (1 << 20))); - } - if self.unicode() { - builder.utf(true).ucp(true); - if self.encoding()?.has_explicit_encoding() { - // SAFETY: If an encoding was specified, then we're guaranteed - // to get valid UTF-8, so we can disable PCRE2's UTF checking. - // (Feeding invalid UTF-8 to PCRE2 is undefined behavior.) - unsafe { - builder.disable_utf_check(); - } - } - } - if self.is_present("multiline") { - builder.dotall(self.is_present("multiline-dotall")); - } - if self.is_present("crlf") { - builder.crlf(true); - } - Ok(builder.build(&patterns.join("|"))?) - } - - /// Build a JSON printer that writes results to the given writer. - fn printer_json(&self, wtr: W) -> Result> { - let mut builder = JSONBuilder::new(); - builder - .pretty(false) - .max_matches(self.max_count()?) - .always_begin_end(false); - Ok(builder.build(wtr)) - } - - /// Build a Standard printer that writes results to the given writer. - /// - /// The given paths are used to configure aspects of the printer. - /// - /// If `separator_search` is true, then the returned printer will assume - /// the responsibility of printing a separator between each set of - /// search results, when appropriate (e.g., when contexts are enabled). - /// When it's set to false, the caller is responsible for handling - /// separators. - /// - /// In practice, we want the printer to handle it in the single threaded - /// case but not in the multi-threaded case. - fn printer_standard( - &self, - paths: &[PathBuf], - wtr: W, - separator_search: bool, - ) -> Result> { - let mut builder = StandardBuilder::new(); - builder - .color_specs(self.color_specs()?) - .stats(self.stats()) - .heading(self.heading()) - .path(self.with_filename(paths)) - .only_matching(self.is_present("only-matching")) - .per_match(self.is_present("vimgrep")) - .per_match_one_line(true) - .replacement(self.replacement()) - .max_columns(self.max_columns()?) - .max_columns_preview(self.max_columns_preview()) - .max_matches(self.max_count()?) - .column(self.column()) - .byte_offset(self.is_present("byte-offset")) - .trim_ascii(self.is_present("trim")) - .separator_search(None) - .separator_context(self.context_separator()) - .separator_field_match(self.field_match_separator()) - .separator_field_context(self.field_context_separator()) - .separator_path(self.path_separator()?) - .path_terminator(self.path_terminator()); - if separator_search { - builder.separator_search(self.file_separator()?); - } - Ok(builder.build(wtr)) - } - - /// Build a Summary printer that writes results to the given writer. - /// - /// The given paths are used to configure aspects of the printer. - /// - /// This panics if the output format is not `OutputKind::Summary`. - fn printer_summary( - &self, - paths: &[PathBuf], - wtr: W, - ) -> Result> { - let mut builder = SummaryBuilder::new(); - builder - .kind(self.summary_kind().expect("summary format")) - .color_specs(self.color_specs()?) - .stats(self.stats()) - .path(self.with_filename(paths)) - .max_matches(self.max_count()?) - .exclude_zero(!self.is_present("include-zero")) - .separator_field(b":".to_vec()) - .separator_path(self.path_separator()?) - .path_terminator(self.path_terminator()); - Ok(builder.build(wtr)) - } - - /// Build a searcher from the command line parameters. - fn searcher(&self, paths: &[PathBuf]) -> Result { - let (ctx_before, ctx_after) = self.contexts()?; - let line_term = if self.is_present("crlf") { - LineTerminator::crlf() - } else if self.is_present("null-data") { - LineTerminator::byte(b'\x00') - } else { - LineTerminator::byte(b'\n') - }; - let mut builder = SearcherBuilder::new(); - builder - .line_terminator(line_term) - .invert_match(self.is_present("invert-match")) - .line_number(self.line_number(paths)) - .multi_line(self.is_present("multiline")) - .before_context(ctx_before) - .after_context(ctx_after) - .passthru(self.is_present("passthru")) - .memory_map(self.mmap_choice(paths)); - match self.encoding()? { - EncodingMode::Some(enc) => { - builder.encoding(Some(enc)); - } - EncodingMode::Auto => {} // default for the searcher - EncodingMode::Disabled => { - builder.bom_sniffing(false); - } - } - Ok(builder.build()) - } - - /// Return a builder for recursively traversing a directory while - /// respecting ignore rules. - /// - /// If there was a problem parsing the CLI arguments necessary for - /// constructing the builder, then this returns an error. - fn walker_builder(&self, paths: &[PathBuf]) -> Result { - let mut builder = WalkBuilder::new(&paths[0]); - for path in &paths[1..] { - builder.add(path); - } - if !self.no_ignore_files() { - for path in self.ignore_paths() { - if let Some(err) = builder.add_ignore(path) { - ignore_message!("{}", err); - } - } - } - builder - .max_depth(self.usize_of("max-depth")?) - .follow_links(self.is_present("follow")) - .max_filesize(self.max_file_size()?) - .threads(self.threads()?) - .same_file_system(self.is_present("one-file-system")) - .skip_stdout(!self.is_present("files")) - .overrides(self.overrides()?) - .types(self.types()?) - .hidden(!self.hidden()) - .parents(!self.no_ignore_parent()) - .ignore(!self.no_ignore_dot()) - .git_global(!self.no_ignore_vcs() && !self.no_ignore_global()) - .git_ignore(!self.no_ignore_vcs()) - .git_exclude(!self.no_ignore_vcs() && !self.no_ignore_exclude()) - .require_git(!self.is_present("no-require-git")) - .ignore_case_insensitive(self.ignore_file_case_insensitive()); - if !self.no_ignore() { - builder.add_custom_ignore_filename(".rgignore"); - } - let sortby = self.sort_by()?; - sortby.check()?; - sortby.configure_walk_builder(&mut builder); - Ok(builder) - } -} - -/// Mid level routines for converting command line arguments into various types -/// of data structures. -/// -/// Methods are sorted alphabetically. -impl ArgMatches { - /// Returns the form of binary detection to perform on files that are - /// implicitly searched via recursive directory traversal. - fn binary_detection_implicit(&self) -> BinaryDetection { - let none = self.is_present("text") || self.is_present("null-data"); - let convert = - self.is_present("binary") || self.unrestricted_count() >= 3; - if none { - BinaryDetection::none() - } else if convert { - BinaryDetection::convert(b'\x00') - } else { - BinaryDetection::quit(b'\x00') - } - } - - /// Returns the form of binary detection to perform on files that are - /// explicitly searched via the user invoking ripgrep on a particular - /// file or files or stdin. - /// - /// In general, this should never be BinaryDetection::quit, since that acts - /// as a filter (but quitting immediately once a NUL byte is seen), and we - /// should never filter out files that the user wants to explicitly search. - fn binary_detection_explicit(&self) -> BinaryDetection { - let none = self.is_present("text") || self.is_present("null-data"); - if none { - BinaryDetection::none() - } else { - BinaryDetection::convert(b'\x00') - } - } - - /// Returns true if the command line configuration implies that a match - /// can never be shown. - fn can_never_match(&self, patterns: &[String]) -> bool { - patterns.is_empty() || self.max_count().ok() == Some(Some(0)) - } - - /// Returns true if and only if case should be ignore. - /// - /// If --case-sensitive is present, then case is never ignored, even if - /// --ignore-case is present. - fn case_insensitive(&self) -> bool { - self.is_present("ignore-case") && !self.is_present("case-sensitive") - } - - /// Returns true if and only if smart case has been enabled. - /// - /// If either --ignore-case of --case-sensitive are present, then smart - /// case is disabled. - fn case_smart(&self) -> bool { - self.is_present("smart-case") - && !self.is_present("ignore-case") - && !self.is_present("case-sensitive") - } - - /// Returns the user's color choice based on command line parameters and - /// environment. - fn color_choice(&self) -> ColorChoice { - let preference = match self.value_of_lossy("color") { - None => "auto".to_string(), - Some(v) => v, - }; - if preference == "always" { - ColorChoice::Always - } else if preference == "ansi" { - ColorChoice::AlwaysAnsi - } else if preference == "auto" { - if cli::is_tty_stdout() || self.is_present("pretty") { - ColorChoice::Auto - } else { - ColorChoice::Never - } - } else { - ColorChoice::Never - } - } - - /// Returns the color specifications given by the user on the CLI. - /// - /// If the was a problem parsing any of the provided specs, then an error - /// is returned. - fn color_specs(&self) -> Result { - // Start with a default set of color specs. - let mut specs = default_color_specs(); - for spec_str in self.values_of_lossy_vec("colors") { - specs.push(spec_str.parse()?); - } - Ok(ColorSpecs::new(&specs)) - } - - /// Returns true if and only if column numbers should be shown. - fn column(&self) -> bool { - if self.is_present("no-column") { - return false; - } - self.is_present("column") || self.is_present("vimgrep") - } - - /// Returns the before and after contexts from the command line. - /// - /// If a context setting was absent, then `0` is returned. - /// - /// If there was a problem parsing the values from the user as an integer, - /// then an error is returned. - fn contexts(&self) -> Result<(usize, usize)> { - let after = self.usize_of("after-context")?.unwrap_or(0); - let before = self.usize_of("before-context")?.unwrap_or(0); - let both = self.usize_of("context")?.unwrap_or(0); - Ok(if both > 0 { (both, both) } else { (before, after) }) - } - - /// Returns the unescaped context separator in UTF-8 bytes. - /// - /// If one was not provided, the default `--` is returned. - /// If --no-context-separator is passed, None is returned. - fn context_separator(&self) -> Option> { - let nosep = self.is_present("no-context-separator"); - let sep = self.value_of_os("context-separator"); - match (nosep, sep) { - (true, _) => None, - (false, None) => Some(b"--".to_vec()), - (false, Some(sep)) => Some(cli::unescape_os(&sep)), - } - } - - /// Returns whether the -c/--count or the --count-matches flags were - /// passed from the command line. - /// - /// If --count-matches and --invert-match were passed in, behave - /// as if --count and --invert-match were passed in (i.e. rg will - /// count inverted matches as per existing behavior). - fn counts(&self) -> (bool, bool) { - let count = self.is_present("count"); - let count_matches = self.is_present("count-matches"); - let invert_matches = self.is_present("invert-match"); - let only_matching = self.is_present("only-matching"); - if count_matches && invert_matches { - // Treat `-v --count-matches` as `-v -c`. - (true, false) - } else if count && only_matching { - // Treat `-c --only-matching` as `--count-matches`. - (false, true) - } else { - (count, count_matches) - } - } - - /// Parse the dfa-size-limit argument option into a byte count. - fn dfa_size_limit(&self) -> Result> { - let r = self.parse_human_readable_size("dfa-size-limit")?; - u64_to_usize("dfa-size-limit", r) - } - - /// Returns the encoding mode to use. - /// - /// This only returns an encoding if one is explicitly specified. Otherwise - /// if set to automatic, the Searcher will do BOM sniffing for UTF-16 - /// and transcode seamlessly. If disabled, no BOM sniffing nor transcoding - /// will occur. - fn encoding(&self) -> Result { - if self.is_present("no-encoding") { - return Ok(EncodingMode::Auto); - } - - let label = match self.value_of_lossy("encoding") { - None if self.pcre2_unicode() => "utf-8".to_string(), - None => return Ok(EncodingMode::Auto), - Some(label) => label, - }; - - if label == "auto" { - return Ok(EncodingMode::Auto); - } else if label == "none" { - return Ok(EncodingMode::Disabled); - } - - Ok(EncodingMode::Some(Encoding::new(&label)?)) - } - - /// Return the file separator to use based on the CLI configuration. - fn file_separator(&self) -> Result>> { - // File separators are only used for the standard grep-line format. - if self.output_kind() != OutputKind::Standard { - return Ok(None); - } - - let (ctx_before, ctx_after) = self.contexts()?; - Ok(if self.heading() { - Some(b"".to_vec()) - } else if ctx_before > 0 || ctx_after > 0 { - self.context_separator() - } else { - None - }) - } - - /// Returns true if and only if matches should be grouped with file name - /// headings. - fn heading(&self) -> bool { - if self.is_present("no-heading") || self.is_present("vimgrep") { - false - } else { - cli::is_tty_stdout() - || self.is_present("heading") - || self.is_present("pretty") - } - } - - /// Returns true if and only if hidden files/directories should be - /// searched. - fn hidden(&self) -> bool { - self.is_present("hidden") || self.unrestricted_count() >= 2 - } - - /// Returns true if ignore files should be processed case insensitively. - fn ignore_file_case_insensitive(&self) -> bool { - self.is_present("ignore-file-case-insensitive") - } - - /// Return all of the ignore file paths given on the command line. - fn ignore_paths(&self) -> Vec { - let paths = match self.values_of_os("ignore-file") { - None => return vec![], - Some(paths) => paths, - }; - paths.map(|p| Path::new(p).to_path_buf()).collect() - } - - /// Returns true if and only if ripgrep is invoked in a way where it knows - /// it search exactly one thing. - fn is_one_search(&self, paths: &[PathBuf]) -> bool { - if paths.len() != 1 { - return false; - } - self.is_only_stdin(paths) || paths[0].is_file() - } - - /// Returns true if and only if we're only searching a single thing and - /// that thing is stdin. - fn is_only_stdin(&self, paths: &[PathBuf]) -> bool { - paths == [Path::new("-")] - } - - /// Returns true if and only if we should show line numbers. - fn line_number(&self, paths: &[PathBuf]) -> bool { - if self.output_kind() == OutputKind::Summary { - return false; - } - if self.is_present("no-line-number") { - return false; - } - if self.output_kind() == OutputKind::JSON { - return true; - } - - // A few things can imply counting line numbers. In particular, we - // generally want to show line numbers by default when printing to a - // tty for human consumption, except for one interesting case: when - // we're only searching stdin. This makes pipelines work as expected. - (cli::is_tty_stdout() && !self.is_only_stdin(paths)) - || self.is_present("line-number") - || self.is_present("column") - || self.is_present("pretty") - || self.is_present("vimgrep") - } - - /// The maximum number of columns allowed on each line. - /// - /// If `0` is provided, then this returns `None`. - fn max_columns(&self) -> Result> { - Ok(self.usize_of_nonzero("max-columns")?.map(|n| n as u64)) - } - - /// Returns true if and only if a preview should be shown for lines that - /// exceed the maximum column limit. - fn max_columns_preview(&self) -> bool { - self.is_present("max-columns-preview") - } - - /// The maximum number of matches permitted. - fn max_count(&self) -> Result> { - Ok(self.usize_of("max-count")?.map(|n| n as u64)) - } - - /// Parses the max-filesize argument option into a byte count. - fn max_file_size(&self) -> Result> { - self.parse_human_readable_size("max-filesize") - } - - /// Returns whether we should attempt to use memory maps or not. - fn mmap_choice(&self, paths: &[PathBuf]) -> MmapChoice { - // SAFETY: Memory maps are difficult to impossible to encapsulate - // safely in a portable way that doesn't simultaneously negate some of - // the benfits of using memory maps. For ripgrep's use, we never mutate - // a memory map and generally never store the contents of memory map - // in a data structure that depends on immutability. Generally - // speaking, the worst thing that can happen is a SIGBUS (if the - // underlying file is truncated while reading it), which will cause - // ripgrep to abort. This reasoning should be treated as suspect. - let maybe = unsafe { MmapChoice::auto() }; - let never = MmapChoice::never(); - if self.is_present("no-mmap") { - never - } else if self.is_present("mmap") { - maybe - } else if paths.len() <= 10 && paths.iter().all(|p| p.is_file()) { - // If we're only searching a few paths and all of them are - // files, then memory maps are probably faster. - maybe - } else { - never - } - } - - /// Returns true if ignore files should be ignored. - fn no_ignore(&self) -> bool { - self.is_present("no-ignore") || self.unrestricted_count() >= 1 - } - - /// Returns true if .ignore files should be ignored. - fn no_ignore_dot(&self) -> bool { - self.is_present("no-ignore-dot") || self.no_ignore() - } - - /// Returns true if local exclude (ignore) files should be ignored. - fn no_ignore_exclude(&self) -> bool { - self.is_present("no-ignore-exclude") || self.no_ignore() - } - - /// Returns true if explicitly given ignore files should be ignored. - fn no_ignore_files(&self) -> bool { - // We don't look at no-ignore here because --no-ignore is explicitly - // documented to not override --ignore-file. We could change this, but - // it would be a fairly severe breaking change. - self.is_present("no-ignore-files") - } - - /// Returns true if global ignore files should be ignored. - fn no_ignore_global(&self) -> bool { - self.is_present("no-ignore-global") || self.no_ignore() - } - - /// Returns true if parent ignore files should be ignored. - fn no_ignore_parent(&self) -> bool { - self.is_present("no-ignore-parent") || self.no_ignore() - } - - /// Returns true if VCS ignore files should be ignored. - fn no_ignore_vcs(&self) -> bool { - self.is_present("no-ignore-vcs") || self.no_ignore() - } - - /// Determine the type of output we should produce. - fn output_kind(&self) -> OutputKind { - if self.is_present("quiet") { - // While we don't technically print results (or aggregate results) - // in quiet mode, we still support the --stats flag, and those - // stats are computed by the Summary printer for now. - return OutputKind::Summary; - } else if self.is_present("json") { - return OutputKind::JSON; - } - - let (count, count_matches) = self.counts(); - let summary = count - || count_matches - || self.is_present("files-with-matches") - || self.is_present("files-without-match"); - if summary { - OutputKind::Summary - } else { - OutputKind::Standard - } - } - - /// Builds the set of glob overrides from the command line flags. - fn overrides(&self) -> Result { - let globs = self.values_of_lossy_vec("glob"); - let iglobs = self.values_of_lossy_vec("iglob"); - if globs.is_empty() && iglobs.is_empty() { - return Ok(Override::empty()); - } - - let mut builder = OverrideBuilder::new(current_dir()?); - // Make all globs case insensitive with --glob-case-insensitive. - if self.is_present("glob-case-insensitive") { - builder.case_insensitive(true).unwrap(); - } - for glob in globs { - builder.add(&glob)?; - } - // This only enables case insensitivity for subsequent globs. - builder.case_insensitive(true).unwrap(); - for glob in iglobs { - builder.add(&glob)?; - } - Ok(builder.build()?) - } - - /// Return all file paths that ripgrep should search. - /// - /// If no paths were given, then this returns an empty list. - fn paths(&self) -> Vec { - let mut paths: Vec = match self.values_of_os("path") { - None => vec![], - Some(paths) => paths.map(|p| Path::new(p).to_path_buf()).collect(), - }; - // If --file, --files or --regexp is given, then the first path is - // always in `pattern`. - if self.is_present("file") - || self.is_present("files") - || self.is_present("regexp") - { - if let Some(path) = self.value_of_os("pattern") { - paths.insert(0, Path::new(path).to_path_buf()); - } - } - paths - } - - /// Return the default path that ripgrep should search. This should only - /// be used when ripgrep is not otherwise given at least one file path - /// as a positional argument. - fn path_default(&self) -> PathBuf { - let file_is_stdin = self - .values_of_os("file") - .map_or(false, |mut files| files.any(|f| f == "-")); - let search_cwd = !cli::is_readable_stdin() - || (self.is_present("file") && file_is_stdin) - || self.is_present("files") - || self.is_present("type-list") - || self.is_present("pcre2-version"); - if search_cwd { - Path::new("./").to_path_buf() - } else { - Path::new("-").to_path_buf() - } - } - - /// Returns the unescaped path separator as a single byte, if one exists. - /// - /// If the provided path separator is more than a single byte, then an - /// error is returned. - fn path_separator(&self) -> Result> { - let sep = match self.value_of_os("path-separator") { - None => return Ok(None), - Some(sep) => cli::unescape_os(&sep), - }; - if sep.is_empty() { - Ok(None) - } else if sep.len() > 1 { - Err(From::from(format!( - "A path separator must be exactly one byte, but \ - the given separator is {} bytes: {}\n\ - In some shells on Windows '/' is automatically \ - expanded. Use '//' instead.", - sep.len(), - cli::escape(&sep), - ))) - } else { - Ok(Some(sep[0])) - } - } - - /// Returns the byte that should be used to terminate paths. - /// - /// Typically, this is only set to `\x00` when the --null flag is provided, - /// and `None` otherwise. - fn path_terminator(&self) -> Option { - if self.is_present("null") { - Some(b'\x00') - } else { - None - } - } - - /// Returns the unescaped field context separator. If one wasn't specified, - /// then '-' is used as the default. - fn field_context_separator(&self) -> Vec { - match self.value_of_os("field-context-separator") { - None => b"-".to_vec(), - Some(sep) => cli::unescape_os(&sep), - } - } - - /// Returns the unescaped field match separator. If one wasn't specified, - /// then ':' is used as the default. - fn field_match_separator(&self) -> Vec { - match self.value_of_os("field-match-separator") { - None => b":".to_vec(), - Some(sep) => cli::unescape_os(&sep), - } - } - - /// Get a sequence of all available patterns from the command line. - /// This includes reading the -e/--regexp and -f/--file flags. - /// - /// Note that if -F/--fixed-strings is set, then all patterns will be - /// escaped. If -x/--line-regexp is set, then all patterns are surrounded - /// by `^...$`. Other things, such as --word-regexp, are handled by the - /// regex matcher itself. - /// - /// If any pattern is invalid UTF-8, then an error is returned. - fn patterns(&self) -> Result> { - if self.is_present("files") || self.is_present("type-list") { - return Ok(vec![]); - } - let mut pats = vec![]; - match self.values_of_os("regexp") { - None => { - if self.values_of_os("file").is_none() { - if let Some(os_pat) = self.value_of_os("pattern") { - pats.push(self.pattern_from_os_str(os_pat)?); - } - } - } - Some(os_pats) => { - for os_pat in os_pats { - pats.push(self.pattern_from_os_str(os_pat)?); - } - } - } - if let Some(paths) = self.values_of_os("file") { - for path in paths { - if path == "-" { - pats.extend( - cli::patterns_from_stdin()? - .into_iter() - .map(|p| self.pattern_from_string(p)), - ); - } else { - pats.extend( - cli::patterns_from_path(path)? - .into_iter() - .map(|p| self.pattern_from_string(p)), - ); - } - } - } - Ok(pats) - } - - /// Returns a pattern that is guaranteed to produce an empty regular - /// expression that is valid in any position. - fn pattern_empty(&self) -> String { - // This would normally just be an empty string, which works on its - // own, but if the patterns are joined in a set of alternations, then - // you wind up with `foo|`, which is currently invalid in Rust's regex - // engine. - "(?:z{0})*".to_string() - } - - /// Converts an OsStr pattern to a String pattern. The pattern is escaped - /// if -F/--fixed-strings is set. - /// - /// If the pattern is not valid UTF-8, then an error is returned. - fn pattern_from_os_str(&self, pat: &OsStr) -> Result { - let s = cli::pattern_from_os(pat)?; - Ok(self.pattern_from_str(s)) - } - - /// Converts a &str pattern to a String pattern. The pattern is escaped - /// if -F/--fixed-strings is set. - fn pattern_from_str(&self, pat: &str) -> String { - self.pattern_from_string(pat.to_string()) - } - - /// Applies additional processing on the given pattern if necessary - /// (such as escaping meta characters or turning it into a line regex). - fn pattern_from_string(&self, pat: String) -> String { - let pat = self.pattern_line(self.pattern_literal(pat)); - if pat.is_empty() { - self.pattern_empty() - } else { - pat - } - } - - /// Returns the given pattern as a line pattern if the -x/--line-regexp - /// flag is set. Otherwise, the pattern is returned unchanged. - fn pattern_line(&self, pat: String) -> String { - if self.is_present("line-regexp") { - format!(r"^(?:{})$", pat) - } else { - pat - } - } - - /// Returns the given pattern as a literal pattern if the - /// -F/--fixed-strings flag is set. Otherwise, the pattern is returned - /// unchanged. - fn pattern_literal(&self, pat: String) -> String { - if self.is_present("fixed-strings") { - regex::escape(&pat) - } else { - pat - } - } - - /// Returns the preprocessor command if one was specified. - fn preprocessor(&self) -> Option { - let path = match self.value_of_os("pre") { - None => return None, - Some(path) => path, - }; - if path.is_empty() { - return None; - } - Some(Path::new(path).to_path_buf()) - } - - /// Builds the set of globs for filtering files to apply to the --pre - /// flag. If no --pre-globs are available, then this always returns an - /// empty set of globs. - fn preprocessor_globs(&self) -> Result { - let globs = self.values_of_lossy_vec("pre-glob"); - if globs.is_empty() { - return Ok(Override::empty()); - } - let mut builder = OverrideBuilder::new(current_dir()?); - for glob in globs { - builder.add(&glob)?; - } - Ok(builder.build()?) - } - - /// Parse the regex-size-limit argument option into a byte count. - fn regex_size_limit(&self) -> Result> { - let r = self.parse_human_readable_size("regex-size-limit")?; - u64_to_usize("regex-size-limit", r) - } - - /// Returns the replacement string as UTF-8 bytes if it exists. - fn replacement(&self) -> Option> { - self.value_of_lossy("replace").map(|s| s.into_bytes()) - } - - /// Returns the sorting criteria based on command line parameters. - fn sort_by(&self) -> Result { - // For backcompat, continue supporting deprecated --sort-files flag. - if self.is_present("sort-files") { - return Ok(SortBy::asc(SortByKind::Path)); - } - let sortby = match self.value_of_lossy("sort") { - None => match self.value_of_lossy("sortr") { - None => return Ok(SortBy::none()), - Some(choice) => SortBy::desc(SortByKind::new(&choice)), - }, - Some(choice) => SortBy::asc(SortByKind::new(&choice)), - }; - Ok(sortby) - } - - /// Returns true if and only if aggregate statistics for a search should - /// be tracked. - /// - /// Generally, this is only enabled when explicitly requested by in the - /// command line arguments via the --stats flag, but this can also be - /// enabled implicitly via the output format, e.g., for JSON Lines. - fn stats(&self) -> bool { - self.output_kind() == OutputKind::JSON || self.is_present("stats") - } - - /// When the output format is `Summary`, this returns the type of summary - /// output to show. - /// - /// This returns `None` if the output format is not `Summary`. - fn summary_kind(&self) -> Option { - let (count, count_matches) = self.counts(); - if self.is_present("quiet") { - Some(SummaryKind::Quiet) - } else if count_matches { - Some(SummaryKind::CountMatches) - } else if count { - Some(SummaryKind::Count) - } else if self.is_present("files-with-matches") { - Some(SummaryKind::PathWithMatch) - } else if self.is_present("files-without-match") { - Some(SummaryKind::PathWithoutMatch) - } else { - None - } - } - - /// Return the number of threads that should be used for parallelism. - fn threads(&self) -> Result { - if self.sort_by()?.kind != SortByKind::None { - return Ok(1); - } - let threads = self.usize_of("threads")?.unwrap_or(0); - Ok(if threads == 0 { cmp::min(12, num_cpus::get()) } else { threads }) - } - - /// Builds a file type matcher from the command line flags. - fn types(&self) -> Result { - let mut builder = TypesBuilder::new(); - builder.add_defaults(); - for ty in self.values_of_lossy_vec("type-clear") { - builder.clear(&ty); - } - for def in self.values_of_lossy_vec("type-add") { - builder.add_def(&def)?; - } - for ty in self.values_of_lossy_vec("type") { - builder.select(&ty); - } - for ty in self.values_of_lossy_vec("type-not") { - builder.negate(&ty); - } - builder.build().map_err(From::from) - } - - /// Returns the number of times the `unrestricted` flag is provided. - fn unrestricted_count(&self) -> u64 { - self.occurrences_of("unrestricted") - } - - /// Returns true if and only if Unicode mode should be enabled. - fn unicode(&self) -> bool { - // Unicode mode is enabled by default, so only disable it when - // --no-unicode is given explicitly. - !(self.is_present("no-unicode") || self.is_present("no-pcre2-unicode")) - } - - /// Returns true if and only if PCRE2 is enabled and its Unicode mode is - /// enabled. - fn pcre2_unicode(&self) -> bool { - self.is_present("pcre2") && self.unicode() - } - - /// Returns true if and only if file names containing each match should - /// be emitted. - fn with_filename(&self, paths: &[PathBuf]) -> bool { - if self.is_present("no-filename") { - false - } else { - let path_stdin = Path::new("-"); - self.is_present("with-filename") - || self.is_present("vimgrep") - || paths.len() > 1 - || paths - .get(0) - .map_or(false, |p| p != path_stdin && p.is_dir()) - } - } -} - -/// Lower level generic helper methods for teasing values out of clap. -impl ArgMatches { - /// Like values_of_lossy, but returns an empty vec if the flag is not - /// present. - fn values_of_lossy_vec(&self, name: &str) -> Vec { - self.values_of_lossy(name).unwrap_or_else(Vec::new) - } - - /// Safely reads an arg value with the given name, and if it's present, - /// tries to parse it as a usize value. - /// - /// If the number is zero, then it is considered absent and `None` is - /// returned. - fn usize_of_nonzero(&self, name: &str) -> Result> { - let n = match self.usize_of(name)? { - None => return Ok(None), - Some(n) => n, - }; - Ok(if n == 0 { None } else { Some(n) }) - } - - /// Safely reads an arg value with the given name, and if it's present, - /// tries to parse it as a usize value. - fn usize_of(&self, name: &str) -> Result> { - match self.value_of_lossy(name) { - None => Ok(None), - Some(v) => v.parse().map(Some).map_err(From::from), - } - } - - /// Parses an argument of the form `[0-9]+(KMG)?`. - /// - /// If the aforementioned format is not recognized, then this returns an - /// error. - fn parse_human_readable_size( - &self, - arg_name: &str, - ) -> Result> { - let size = match self.value_of_lossy(arg_name) { - None => return Ok(None), - Some(size) => size, - }; - Ok(Some(cli::parse_human_readable_size(&size)?)) - } -} - -/// The following methods mostly dispatch to the underlying clap methods -/// directly. Methods that would otherwise get a single value will fetch all -/// values and return the last one. (Clap returns the first one.) We only -/// define the ones we need. -impl ArgMatches { - fn is_present(&self, name: &str) -> bool { - self.0.is_present(name) - } - - fn occurrences_of(&self, name: &str) -> u64 { - self.0.occurrences_of(name) - } - - fn value_of_lossy(&self, name: &str) -> Option { - self.0.value_of_lossy(name).map(|s| s.into_owned()) - } - - fn values_of_lossy(&self, name: &str) -> Option> { - self.0.values_of_lossy(name) - } - - fn value_of_os(&self, name: &str) -> Option<&OsStr> { - self.0.value_of_os(name) - } - - fn values_of_os(&self, name: &str) -> Option> { - self.0.values_of_os(name) - } -} - -/// Inspect an error resulting from building a Rust regex matcher, and if it's -/// believed to correspond to a syntax error that another engine could handle, -/// then add a message to suggest the use of the engine flag. -fn suggest(msg: String) -> String { - if let Some(pcre_msg) = suggest_pcre2(&msg) { - return pcre_msg; - } - msg -} - -/// Inspect an error resulting from building a Rust regex matcher, and if it's -/// believed to correspond to a syntax error that PCRE2 could handle, then -/// add a message to suggest the use of -P/--pcre2. -fn suggest_pcre2(msg: &str) -> Option { - #[cfg(feature = "pcre2")] - fn suggest(msg: &str) -> Option { - if !msg.contains("backreferences") && !msg.contains("look-around") { - None - } else { - Some(format!( - "{} - -Consider enabling PCRE2 with the --pcre2 flag, which can handle backreferences -and look-around.", - msg - )) - } - } - - #[cfg(not(feature = "pcre2"))] - fn suggest(_: &str) -> Option { - None - } - - suggest(msg) -} - -fn suggest_multiline(msg: String) -> String { - if msg.contains("the literal") && msg.contains("not allowed") { - format!( - "{} - -Consider enabling multiline mode with the --multiline flag (or -U for short). -When multiline mode is enabled, new line characters can be matched.", - msg - ) - } else { - msg - } -} - -/// Convert the result of parsing a human readable file size to a `usize`, -/// failing if the type does not fit. -fn u64_to_usize(arg_name: &str, value: Option) -> Result> { - use std::usize; - - let value = match value { - None => return Ok(None), - Some(value) => value, - }; - if value <= usize::MAX as u64 { - Ok(Some(value as usize)) - } else { - Err(From::from(format!("number too large for {}", arg_name))) - } -} - -/// Builds a comparator for sorting two files according to a system time -/// extracted from the file's metadata. -/// -/// If there was a problem extracting the metadata or if the time is not -/// available, then both entries compare equal. -fn sort_by_metadata_time( - p1: &Path, - p2: &Path, - reverse: bool, - get_time: G, -) -> cmp::Ordering -where - G: Fn(&fs::Metadata) -> io::Result, -{ - let t1 = match p1.metadata().and_then(|md| get_time(&md)) { - Ok(t) => t, - Err(_) => return cmp::Ordering::Equal, - }; - let t2 = match p2.metadata().and_then(|md| get_time(&md)) { - Ok(t) => t, - Err(_) => return cmp::Ordering::Equal, - }; - if reverse { - t1.cmp(&t2).reverse() - } else { - t1.cmp(&t2) - } -} - -/// Returns a clap matches object if the given arguments parse successfully. -/// -/// Otherwise, if an error occurred, then it is returned unless the error -/// corresponds to a `--help` or `--version` request. In which case, the -/// corresponding output is printed and the current process is exited -/// successfully. -fn clap_matches(args: I) -> Result> -where - I: IntoIterator, - T: Into + Clone, -{ - let err = match app::app().get_matches_from_safe(args) { - Ok(matches) => return Ok(matches), - Err(err) => err, - }; - if err.use_stderr() { - return Err(err.into()); - } - // Explicitly ignore any error returned by write!. The most likely error - // at this point is a broken pipe error, in which case, we want to ignore - // it and exit quietly. - // - // (This is the point of this helper function. clap's functionality for - // doing this will panic on a broken pipe error.) - let _ = write!(io::stdout(), "{}", err); - process::exit(0); -} - -/// Attempts to discover the current working directory. This mostly just defers -/// to the standard library, however, such things will fail if ripgrep is in -/// a directory that no longer exists. We attempt some fallback mechanisms, -/// such as querying the PWD environment variable, but otherwise return an -/// error. -fn current_dir() -> Result { - let err = match env::current_dir() { - Err(err) => err, - Ok(cwd) => return Ok(cwd), - }; - if let Some(cwd) = env::var_os("PWD") { - if !cwd.is_empty() { - return Ok(PathBuf::from(cwd)); - } - } - Err(format!( - "failed to get current working directory: {} \ - --- did your CWD get deleted?", - err, - ) - .into()) -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/config.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/config.rs deleted file mode 100644 index 5426554da..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/config.rs +++ /dev/null @@ -1,169 +0,0 @@ -// This module provides routines for reading ripgrep config "rc" files. The -// primary output of these routines is a sequence of arguments, where each -// argument corresponds precisely to one shell argument. - -use std::env; -use std::error::Error; -use std::ffi::OsString; -use std::fs::File; -use std::io; -use std::path::{Path, PathBuf}; - -use bstr::{io::BufReadExt, ByteSlice}; -use log; - -use crate::Result; - -/// Return a sequence of arguments derived from ripgrep rc configuration files. -pub fn args() -> Vec { - let config_path = match env::var_os("RIPGREP_CONFIG_PATH") { - None => return vec![], - Some(config_path) => { - if config_path.is_empty() { - return vec![]; - } - PathBuf::from(config_path) - } - }; - let (args, errs) = match parse(&config_path) { - Ok((args, errs)) => (args, errs), - Err(err) => { - message!("{}", err); - return vec![]; - } - }; - if !errs.is_empty() { - for err in errs { - message!("{}:{}", config_path.display(), err); - } - } - log::debug!( - "{}: arguments loaded from config file: {:?}", - config_path.display(), - args - ); - args -} - -/// Parse a single ripgrep rc file from the given path. -/// -/// On success, this returns a set of shell arguments, in order, that should -/// be pre-pended to the arguments given to ripgrep at the command line. -/// -/// If the file could not be read, then an error is returned. If there was -/// a problem parsing one or more lines in the file, then errors are returned -/// for each line in addition to successfully parsed arguments. -fn parse>( - path: P, -) -> Result<(Vec, Vec>)> { - let path = path.as_ref(); - match File::open(&path) { - Ok(file) => parse_reader(file), - Err(err) => Err(From::from(format!("{}: {}", path.display(), err))), - } -} - -/// Parse a single ripgrep rc file from the given reader. -/// -/// Callers should not provided a buffered reader, as this routine will use its -/// own buffer internally. -/// -/// On success, this returns a set of shell arguments, in order, that should -/// be pre-pended to the arguments given to ripgrep at the command line. -/// -/// If the reader could not be read, then an error is returned. If there was a -/// problem parsing one or more lines, then errors are returned for each line -/// in addition to successfully parsed arguments. -fn parse_reader( - rdr: R, -) -> Result<(Vec, Vec>)> { - let bufrdr = io::BufReader::new(rdr); - let (mut args, mut errs) = (vec![], vec![]); - let mut line_number = 0; - bufrdr.for_byte_line_with_terminator(|line| { - line_number += 1; - - let line = line.trim(); - if line.is_empty() || line[0] == b'#' { - return Ok(true); - } - match line.to_os_str() { - Ok(osstr) => { - args.push(osstr.to_os_string()); - } - Err(err) => { - errs.push(format!("{}: {}", line_number, err).into()); - } - } - Ok(true) - })?; - Ok((args, errs)) -} - -#[cfg(test)] -mod tests { - use super::parse_reader; - use std::ffi::OsString; - - #[test] - fn basic() { - let (args, errs) = parse_reader( - &b"\ -# Test ---context=0 - --smart-case --u - - - # --bar ---foo -"[..], - ) - .unwrap(); - assert!(errs.is_empty()); - let args: Vec = - args.into_iter().map(|s| s.into_string().unwrap()).collect(); - assert_eq!(args, vec!["--context=0", "--smart-case", "-u", "--foo",]); - } - - // We test that we can handle invalid UTF-8 on Unix-like systems. - #[test] - #[cfg(unix)] - fn error() { - use std::os::unix::ffi::OsStringExt; - - let (args, errs) = parse_reader( - &b"\ -quux -foo\xFFbar -baz -"[..], - ) - .unwrap(); - assert!(errs.is_empty()); - assert_eq!( - args, - vec![ - OsString::from("quux"), - OsString::from_vec(b"foo\xFFbar".to_vec()), - OsString::from("baz"), - ] - ); - } - - // ... but test that invalid UTF-8 fails on Windows. - #[test] - #[cfg(not(unix))] - fn error() { - let (args, errs) = parse_reader( - &b"\ -quux -foo\xFFbar -baz -"[..], - ) - .unwrap(); - assert_eq!(errs.len(), 1); - assert_eq!(args, vec![OsString::from("quux"), OsString::from("baz"),]); - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/logger.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/logger.rs deleted file mode 100644 index 0fe063f1c..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/logger.rs +++ /dev/null @@ -1,68 +0,0 @@ -// This module defines a super simple logger that works with the `log` crate. -// We don't need anything fancy; just basic log levels and the ability to -// print to stderr. We therefore avoid bringing in extra dependencies just -// for this functionality. - -use log::{self, Log}; - -/// The simplest possible logger that logs to stderr. -/// -/// This logger does no filtering. Instead, it relies on the `log` crates -/// filtering via its global max_level setting. -#[derive(Debug)] -pub struct Logger(()); - -const LOGGER: &'static Logger = &Logger(()); - -impl Logger { - /// Create a new logger that logs to stderr and initialize it as the - /// global logger. If there was a problem setting the logger, then an - /// error is returned. - pub fn init() -> Result<(), log::SetLoggerError> { - log::set_logger(LOGGER) - } -} - -impl Log for Logger { - fn enabled(&self, _: &log::Metadata<'_>) -> bool { - // We set the log level via log::set_max_level, so we don't need to - // implement filtering here. - true - } - - fn log(&self, record: &log::Record<'_>) { - match (record.file(), record.line()) { - (Some(file), Some(line)) => { - eprintln!( - "{}|{}|{}:{}: {}", - record.level(), - record.target(), - file, - line, - record.args() - ); - } - (Some(file), None) => { - eprintln!( - "{}|{}|{}: {}", - record.level(), - record.target(), - file, - record.args() - ); - } - _ => { - eprintln!( - "{}|{}: {}", - record.level(), - record.target(), - record.args() - ); - } - } - } - - fn flush(&self) { - // We use eprintln! which is flushed on every call. - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/main.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/main.rs deleted file mode 100644 index 47385de66..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/main.rs +++ /dev/null @@ -1,344 +0,0 @@ -use std::error; -use std::io::{self, Write}; -use std::process; -use std::sync::Mutex; -use std::time::Instant; - -use ignore::WalkState; - -use args::Args; -use subject::Subject; - -#[macro_use] -mod messages; - -mod app; -mod args; -mod config; -mod logger; -mod path_printer; -mod search; -mod subject; - -// Since Rust no longer uses jemalloc by default, ripgrep will, by default, -// use the system allocator. On Linux, this would normally be glibc's -// allocator, which is pretty good. In particular, ripgrep does not have a -// particularly allocation heavy workload, so there really isn't much -// difference (for ripgrep's purposes) between glibc's allocator and jemalloc. -// -// However, when ripgrep is built with musl, this means ripgrep will use musl's -// allocator, which appears to be substantially worse. (musl's goal is not to -// have the fastest version of everything. Its goal is to be small and amenable -// to static compilation.) Even though ripgrep isn't particularly allocation -// heavy, musl's allocator appears to slow down ripgrep quite a bit. Therefore, -// when building with musl, we use jemalloc. -// -// We don't unconditionally use jemalloc because it can be nice to use the -// system's default allocator by default. Moreover, jemalloc seems to increase -// compilation times by a bit. -// -// Moreover, we only do this on 64-bit systems since jemalloc doesn't support -// i686. -#[cfg(all(target_env = "musl", target_pointer_width = "64"))] -#[global_allocator] -static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; - -type Result = ::std::result::Result>; - -fn main() { - if let Err(err) = Args::parse().and_then(try_main) { - eprintln!("{}", err); - process::exit(2); - } -} - -fn try_main(args: Args) -> Result<()> { - use args::Command::*; - - let matched = match args.command()? { - Search => search(&args), - SearchParallel => search_parallel(&args), - SearchNever => Ok(false), - Files => files(&args), - FilesParallel => files_parallel(&args), - Types => types(&args), - PCRE2Version => pcre2_version(&args), - }?; - if matched && (args.quiet() || !messages::errored()) { - process::exit(0) - } else if messages::errored() { - process::exit(2) - } else { - process::exit(1) - } -} - -/// The top-level entry point for single-threaded search. This recursively -/// steps through the file list (current directory by default) and searches -/// each file sequentially. -fn search(args: &Args) -> Result { - let started_at = Instant::now(); - let quit_after_match = args.quit_after_match()?; - let subject_builder = args.subject_builder(); - let mut stats = args.stats()?; - let mut searcher = args.search_worker(args.stdout())?; - let mut matched = false; - let mut searched = false; - - for result in args.walker()? { - let subject = match subject_builder.build_from_result(result) { - Some(subject) => subject, - None => continue, - }; - searched = true; - let search_result = match searcher.search(&subject) { - Ok(search_result) => search_result, - Err(err) => { - // A broken pipe means graceful termination. - if err.kind() == io::ErrorKind::BrokenPipe { - break; - } - err_message!("{}: {}", subject.path().display(), err); - continue; - } - }; - matched = matched || search_result.has_match(); - if let Some(ref mut stats) = stats { - *stats += search_result.stats().unwrap(); - } - if matched && quit_after_match { - break; - } - } - if args.using_default_path() && !searched { - eprint_nothing_searched(); - } - if let Some(ref stats) = stats { - let elapsed = Instant::now().duration_since(started_at); - // We don't care if we couldn't print this successfully. - let _ = searcher.print_stats(elapsed, stats); - } - Ok(matched) -} - -/// The top-level entry point for multi-threaded search. The parallelism is -/// itself achieved by the recursive directory traversal. All we need to do is -/// feed it a worker for performing a search on each file. -fn search_parallel(args: &Args) -> Result { - use std::sync::atomic::AtomicBool; - use std::sync::atomic::Ordering::SeqCst; - - let quit_after_match = args.quit_after_match()?; - let started_at = Instant::now(); - let subject_builder = args.subject_builder(); - let bufwtr = args.buffer_writer()?; - let stats = args.stats()?.map(Mutex::new); - let matched = AtomicBool::new(false); - let searched = AtomicBool::new(false); - let mut searcher_err = None; - args.walker_parallel()?.run(|| { - let bufwtr = &bufwtr; - let stats = &stats; - let matched = &matched; - let searched = &searched; - let subject_builder = &subject_builder; - let mut searcher = match args.search_worker(bufwtr.buffer()) { - Ok(searcher) => searcher, - Err(err) => { - searcher_err = Some(err); - return Box::new(move |_| WalkState::Quit); - } - }; - - Box::new(move |result| { - let subject = match subject_builder.build_from_result(result) { - Some(subject) => subject, - None => return WalkState::Continue, - }; - searched.store(true, SeqCst); - searcher.printer().get_mut().clear(); - let search_result = match searcher.search(&subject) { - Ok(search_result) => search_result, - Err(err) => { - err_message!("{}: {}", subject.path().display(), err); - return WalkState::Continue; - } - }; - if search_result.has_match() { - matched.store(true, SeqCst); - } - if let Some(ref locked_stats) = *stats { - let mut stats = locked_stats.lock().unwrap(); - *stats += search_result.stats().unwrap(); - } - if let Err(err) = bufwtr.print(searcher.printer().get_mut()) { - // A broken pipe means graceful termination. - if err.kind() == io::ErrorKind::BrokenPipe { - return WalkState::Quit; - } - // Otherwise, we continue on our merry way. - err_message!("{}: {}", subject.path().display(), err); - } - if matched.load(SeqCst) && quit_after_match { - WalkState::Quit - } else { - WalkState::Continue - } - }) - }); - if let Some(err) = searcher_err.take() { - return Err(err); - } - if args.using_default_path() && !searched.load(SeqCst) { - eprint_nothing_searched(); - } - if let Some(ref locked_stats) = stats { - let elapsed = Instant::now().duration_since(started_at); - let stats = locked_stats.lock().unwrap(); - let mut searcher = args.search_worker(args.stdout())?; - // We don't care if we couldn't print this successfully. - let _ = searcher.print_stats(elapsed, &stats); - } - Ok(matched.load(SeqCst)) -} - -fn eprint_nothing_searched() { - err_message!( - "No files were searched, which means ripgrep probably \ - applied a filter you didn't expect.\n\ - Running with --debug will show why files are being skipped." - ); -} - -/// The top-level entry point for listing files without searching them. This -/// recursively steps through the file list (current directory by default) and -/// prints each path sequentially using a single thread. -fn files(args: &Args) -> Result { - let quit_after_match = args.quit_after_match()?; - let subject_builder = args.subject_builder(); - let mut matched = false; - let mut path_printer = args.path_printer(args.stdout())?; - for result in args.walker()? { - let subject = match subject_builder.build_from_result(result) { - Some(subject) => subject, - None => continue, - }; - matched = true; - if quit_after_match { - break; - } - if let Err(err) = path_printer.write_path(subject.path()) { - // A broken pipe means graceful termination. - if err.kind() == io::ErrorKind::BrokenPipe { - break; - } - // Otherwise, we have some other error that's preventing us from - // writing to stdout, so we should bubble it up. - return Err(err.into()); - } - } - Ok(matched) -} - -/// The top-level entry point for listing files without searching them. This -/// recursively steps through the file list (current directory by default) and -/// prints each path sequentially using multiple threads. -fn files_parallel(args: &Args) -> Result { - use std::sync::atomic::AtomicBool; - use std::sync::atomic::Ordering::SeqCst; - use std::sync::mpsc; - use std::thread; - - let quit_after_match = args.quit_after_match()?; - let subject_builder = args.subject_builder(); - let mut path_printer = args.path_printer(args.stdout())?; - let matched = AtomicBool::new(false); - let (tx, rx) = mpsc::channel::(); - - let print_thread = thread::spawn(move || -> io::Result<()> { - for subject in rx.iter() { - path_printer.write_path(subject.path())?; - } - Ok(()) - }); - args.walker_parallel()?.run(|| { - let subject_builder = &subject_builder; - let matched = &matched; - let tx = tx.clone(); - - Box::new(move |result| { - let subject = match subject_builder.build_from_result(result) { - Some(subject) => subject, - None => return WalkState::Continue, - }; - matched.store(true, SeqCst); - if quit_after_match { - WalkState::Quit - } else { - match tx.send(subject) { - Ok(_) => WalkState::Continue, - Err(_) => WalkState::Quit, - } - } - }) - }); - drop(tx); - if let Err(err) = print_thread.join().unwrap() { - // A broken pipe means graceful termination, so fall through. - // Otherwise, something bad happened while writing to stdout, so bubble - // it up. - if err.kind() != io::ErrorKind::BrokenPipe { - return Err(err.into()); - } - } - Ok(matched.load(SeqCst)) -} - -/// The top-level entry point for --type-list. -fn types(args: &Args) -> Result { - let mut count = 0; - let mut stdout = args.stdout(); - for def in args.type_defs()? { - count += 1; - stdout.write_all(def.name().as_bytes())?; - stdout.write_all(b": ")?; - - let mut first = true; - for glob in def.globs() { - if !first { - stdout.write_all(b", ")?; - } - stdout.write_all(glob.as_bytes())?; - first = false; - } - stdout.write_all(b"\n")?; - } - Ok(count > 0) -} - -/// The top-level entry point for --pcre2-version. -fn pcre2_version(args: &Args) -> Result { - #[cfg(feature = "pcre2")] - fn imp(args: &Args) -> Result { - use grep::pcre2; - - let mut stdout = args.stdout(); - - let (major, minor) = pcre2::version(); - writeln!(stdout, "PCRE2 {}.{} is available", major, minor)?; - - if cfg!(target_pointer_width = "64") && pcre2::is_jit_available() { - writeln!(stdout, "JIT is available")?; - } - Ok(true) - } - - #[cfg(not(feature = "pcre2"))] - fn imp(args: &Args) -> Result { - let mut stdout = args.stdout(); - writeln!(stdout, "PCRE2 is not available in this build of ripgrep.")?; - Ok(false) - } - - imp(args) -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/messages.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/messages.rs deleted file mode 100644 index dc013e1ce..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/messages.rs +++ /dev/null @@ -1,74 +0,0 @@ -use std::sync::atomic::{AtomicBool, Ordering}; - -static MESSAGES: AtomicBool = AtomicBool::new(false); -static IGNORE_MESSAGES: AtomicBool = AtomicBool::new(false); -static ERRORED: AtomicBool = AtomicBool::new(false); - -/// Emit a non-fatal error message, unless messages were disabled. -#[macro_export] -macro_rules! message { - ($($tt:tt)*) => { - if crate::messages::messages() { - eprintln!($($tt)*); - } - } -} - -/// Like message, but sets ripgrep's "errored" flag, which controls the exit -/// status. -#[macro_export] -macro_rules! err_message { - ($($tt:tt)*) => { - crate::messages::set_errored(); - message!($($tt)*); - } -} - -/// Emit a non-fatal ignore-related error message (like a parse error), unless -/// ignore-messages were disabled. -#[macro_export] -macro_rules! ignore_message { - ($($tt:tt)*) => { - if crate::messages::messages() && crate::messages::ignore_messages() { - eprintln!($($tt)*); - } - } -} - -/// Returns true if and only if messages should be shown. -pub fn messages() -> bool { - MESSAGES.load(Ordering::SeqCst) -} - -/// Set whether messages should be shown or not. -/// -/// By default, they are not shown. -pub fn set_messages(yes: bool) { - MESSAGES.store(yes, Ordering::SeqCst) -} - -/// Returns true if and only if "ignore" related messages should be shown. -pub fn ignore_messages() -> bool { - IGNORE_MESSAGES.load(Ordering::SeqCst) -} - -/// Set whether "ignore" related messages should be shown or not. -/// -/// By default, they are not shown. -/// -/// Note that this is overridden if `messages` is disabled. Namely, if -/// `messages` is disabled, then "ignore" messages are never shown, regardless -/// of this setting. -pub fn set_ignore_messages(yes: bool) { - IGNORE_MESSAGES.store(yes, Ordering::SeqCst) -} - -/// Returns true if and only if ripgrep came across a non-fatal error. -pub fn errored() -> bool { - ERRORED.load(Ordering::SeqCst) -} - -/// Indicate that ripgrep has come across a non-fatal error. -pub fn set_errored() { - ERRORED.store(true, Ordering::SeqCst); -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/path_printer.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/path_printer.rs deleted file mode 100644 index b964a84af..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/path_printer.rs +++ /dev/null @@ -1,98 +0,0 @@ -use std::io; -use std::path::Path; - -use grep::printer::{ColorSpecs, PrinterPath}; -use termcolor::WriteColor; - -/// A configuration for describing how paths should be written. -#[derive(Clone, Debug)] -struct Config { - colors: ColorSpecs, - separator: Option, - terminator: u8, -} - -impl Default for Config { - fn default() -> Config { - Config { - colors: ColorSpecs::default(), - separator: None, - terminator: b'\n', - } - } -} - -/// A builder for constructing things to search over. -#[derive(Clone, Debug)] -pub struct PathPrinterBuilder { - config: Config, -} - -impl PathPrinterBuilder { - /// Return a new subject builder with a default configuration. - pub fn new() -> PathPrinterBuilder { - PathPrinterBuilder { config: Config::default() } - } - - /// Create a new path printer with the current configuration that writes - /// paths to the given writer. - pub fn build(&self, wtr: W) -> PathPrinter { - PathPrinter { config: self.config.clone(), wtr } - } - - /// Set the color specification for this printer. - /// - /// Currently, only the `path` component of the given specification is - /// used. - pub fn color_specs( - &mut self, - specs: ColorSpecs, - ) -> &mut PathPrinterBuilder { - self.config.colors = specs; - self - } - - /// A path separator. - /// - /// When provided, the path's default separator will be replaced with - /// the given separator. - /// - /// This is not set by default, and the system's default path separator - /// will be used. - pub fn separator(&mut self, sep: Option) -> &mut PathPrinterBuilder { - self.config.separator = sep; - self - } - - /// A path terminator. - /// - /// When printing a path, it will be by terminated by the given byte. - /// - /// This is set to `\n` by default. - pub fn terminator(&mut self, terminator: u8) -> &mut PathPrinterBuilder { - self.config.terminator = terminator; - self - } -} - -/// A printer for emitting paths to a writer, with optional color support. -#[derive(Debug)] -pub struct PathPrinter { - config: Config, - wtr: W, -} - -impl PathPrinter { - /// Write the given path to the underlying writer. - pub fn write_path(&mut self, path: &Path) -> io::Result<()> { - let ppath = PrinterPath::with_separator(path, self.config.separator); - if !self.wtr.supports_color() { - self.wtr.write_all(ppath.as_bytes())?; - } else { - self.wtr.set_color(self.config.colors.path())?; - self.wtr.write_all(ppath.as_bytes())?; - self.wtr.reset()?; - } - self.wtr.write_all(&[self.config.terminator]) - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/search.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/search.rs deleted file mode 100644 index 6dc51cfe9..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/search.rs +++ /dev/null @@ -1,548 +0,0 @@ -use std::fs::File; -use std::io; -use std::path::{Path, PathBuf}; -use std::process::{Command, Stdio}; -use std::time::Duration; - -use grep::cli; -use grep::matcher::Matcher; -#[cfg(feature = "pcre2")] -use grep::pcre2::RegexMatcher as PCRE2RegexMatcher; -use grep::printer::{Standard, Stats, Summary, JSON}; -use grep::regex::RegexMatcher as RustRegexMatcher; -use grep::searcher::{BinaryDetection, Searcher}; -use ignore::overrides::Override; -use serde_json as json; -use serde_json::json; -use termcolor::WriteColor; - -use crate::subject::Subject; - -/// The configuration for the search worker. Among a few other things, the -/// configuration primarily controls the way we show search results to users -/// at a very high level. -#[derive(Clone, Debug)] -struct Config { - json_stats: bool, - preprocessor: Option, - preprocessor_globs: Override, - search_zip: bool, - binary_implicit: BinaryDetection, - binary_explicit: BinaryDetection, -} - -impl Default for Config { - fn default() -> Config { - Config { - json_stats: false, - preprocessor: None, - preprocessor_globs: Override::empty(), - search_zip: false, - binary_implicit: BinaryDetection::none(), - binary_explicit: BinaryDetection::none(), - } - } -} - -/// A builder for configuring and constructing a search worker. -#[derive(Clone, Debug)] -pub struct SearchWorkerBuilder { - config: Config, - command_builder: cli::CommandReaderBuilder, - decomp_builder: cli::DecompressionReaderBuilder, -} - -impl Default for SearchWorkerBuilder { - fn default() -> SearchWorkerBuilder { - SearchWorkerBuilder::new() - } -} - -impl SearchWorkerBuilder { - /// Create a new builder for configuring and constructing a search worker. - pub fn new() -> SearchWorkerBuilder { - let mut cmd_builder = cli::CommandReaderBuilder::new(); - cmd_builder.async_stderr(true); - - let mut decomp_builder = cli::DecompressionReaderBuilder::new(); - decomp_builder.async_stderr(true); - - SearchWorkerBuilder { - config: Config::default(), - command_builder: cmd_builder, - decomp_builder, - } - } - - /// Create a new search worker using the given searcher, matcher and - /// printer. - pub fn build( - &self, - matcher: PatternMatcher, - searcher: Searcher, - printer: Printer, - ) -> SearchWorker { - let config = self.config.clone(); - let command_builder = self.command_builder.clone(); - let decomp_builder = self.decomp_builder.clone(); - SearchWorker { - config, - command_builder, - decomp_builder, - matcher, - searcher, - printer, - } - } - - /// Forcefully use JSON to emit statistics, even if the underlying printer - /// is not the JSON printer. - /// - /// This is useful for implementing flag combinations like - /// `--json --quiet`, which uses the summary printer for implementing - /// `--quiet` but still wants to emit summary statistics, which should - /// be JSON formatted because of the `--json` flag. - pub fn json_stats(&mut self, yes: bool) -> &mut SearchWorkerBuilder { - self.config.json_stats = yes; - self - } - - /// Set the path to a preprocessor command. - /// - /// When this is set, instead of searching files directly, the given - /// command will be run with the file path as the first argument, and the - /// output of that command will be searched instead. - pub fn preprocessor( - &mut self, - cmd: Option, - ) -> crate::Result<&mut SearchWorkerBuilder> { - if let Some(ref prog) = cmd { - let bin = cli::resolve_binary(prog)?; - self.config.preprocessor = Some(bin); - } else { - self.config.preprocessor = None; - } - Ok(self) - } - - /// Set the globs for determining which files should be run through the - /// preprocessor. By default, with no globs and a preprocessor specified, - /// every file is run through the preprocessor. - pub fn preprocessor_globs( - &mut self, - globs: Override, - ) -> &mut SearchWorkerBuilder { - self.config.preprocessor_globs = globs; - self - } - - /// Enable the decompression and searching of common compressed files. - /// - /// When enabled, if a particular file path is recognized as a compressed - /// file, then it is decompressed before searching. - /// - /// Note that if a preprocessor command is set, then it overrides this - /// setting. - pub fn search_zip(&mut self, yes: bool) -> &mut SearchWorkerBuilder { - self.config.search_zip = yes; - self - } - - /// Set the binary detection that should be used when searching files - /// found via a recursive directory search. - /// - /// Generally, this binary detection may be `BinaryDetection::quit` if - /// we want to skip binary files completely. - /// - /// By default, no binary detection is performed. - pub fn binary_detection_implicit( - &mut self, - detection: BinaryDetection, - ) -> &mut SearchWorkerBuilder { - self.config.binary_implicit = detection; - self - } - - /// Set the binary detection that should be used when searching files - /// explicitly supplied by an end user. - /// - /// Generally, this binary detection should NOT be `BinaryDetection::quit`, - /// since we never want to automatically filter files supplied by the end - /// user. - /// - /// By default, no binary detection is performed. - pub fn binary_detection_explicit( - &mut self, - detection: BinaryDetection, - ) -> &mut SearchWorkerBuilder { - self.config.binary_explicit = detection; - self - } -} - -/// The result of executing a search. -/// -/// Generally speaking, the "result" of a search is sent to a printer, which -/// writes results to an underlying writer such as stdout or a file. However, -/// every search also has some aggregate statistics or meta data that may be -/// useful to higher level routines. -#[derive(Clone, Debug, Default)] -pub struct SearchResult { - has_match: bool, - stats: Option, -} - -impl SearchResult { - /// Whether the search found a match or not. - pub fn has_match(&self) -> bool { - self.has_match - } - - /// Return aggregate search statistics for a single search, if available. - /// - /// It can be expensive to compute statistics, so these are only present - /// if explicitly enabled in the printer provided by the caller. - pub fn stats(&self) -> Option<&Stats> { - self.stats.as_ref() - } -} - -/// The pattern matcher used by a search worker. -#[derive(Clone, Debug)] -pub enum PatternMatcher { - RustRegex(RustRegexMatcher), - #[cfg(feature = "pcre2")] - PCRE2(PCRE2RegexMatcher), -} - -/// The printer used by a search worker. -/// -/// The `W` type parameter refers to the type of the underlying writer. -#[derive(Debug)] -pub enum Printer { - /// Use the standard printer, which supports the classic grep-like format. - Standard(Standard), - /// Use the summary printer, which supports aggregate displays of search - /// results. - Summary(Summary), - /// A JSON printer, which emits results in the JSON Lines format. - JSON(JSON), -} - -impl Printer { - fn print_stats( - &mut self, - total_duration: Duration, - stats: &Stats, - ) -> io::Result<()> { - match *self { - Printer::JSON(_) => self.print_stats_json(total_duration, stats), - Printer::Standard(_) | Printer::Summary(_) => { - self.print_stats_human(total_duration, stats) - } - } - } - - fn print_stats_human( - &mut self, - total_duration: Duration, - stats: &Stats, - ) -> io::Result<()> { - write!( - self.get_mut(), - " -{matches} matches -{lines} matched lines -{searches_with_match} files contained matches -{searches} files searched -{bytes_printed} bytes printed -{bytes_searched} bytes searched -{search_time:0.6} seconds spent searching -{process_time:0.6} seconds -", - matches = stats.matches(), - lines = stats.matched_lines(), - searches_with_match = stats.searches_with_match(), - searches = stats.searches(), - bytes_printed = stats.bytes_printed(), - bytes_searched = stats.bytes_searched(), - search_time = fractional_seconds(stats.elapsed()), - process_time = fractional_seconds(total_duration) - ) - } - - fn print_stats_json( - &mut self, - total_duration: Duration, - stats: &Stats, - ) -> io::Result<()> { - // We specifically match the format laid out by the JSON printer in - // the grep-printer crate. We simply "extend" it with the 'summary' - // message type. - let fractional = fractional_seconds(total_duration); - json::to_writer( - self.get_mut(), - &json!({ - "type": "summary", - "data": { - "stats": stats, - "elapsed_total": { - "secs": total_duration.as_secs(), - "nanos": total_duration.subsec_nanos(), - "human": format!("{:0.6}s", fractional), - }, - } - }), - )?; - write!(self.get_mut(), "\n") - } - - /// Return a mutable reference to the underlying printer's writer. - pub fn get_mut(&mut self) -> &mut W { - match *self { - Printer::Standard(ref mut p) => p.get_mut(), - Printer::Summary(ref mut p) => p.get_mut(), - Printer::JSON(ref mut p) => p.get_mut(), - } - } -} - -/// A worker for executing searches. -/// -/// It is intended for a single worker to execute many searches, and is -/// generally intended to be used from a single thread. When searching using -/// multiple threads, it is better to create a new worker for each thread. -#[derive(Debug)] -pub struct SearchWorker { - config: Config, - command_builder: cli::CommandReaderBuilder, - decomp_builder: cli::DecompressionReaderBuilder, - matcher: PatternMatcher, - searcher: Searcher, - printer: Printer, -} - -impl SearchWorker { - /// Execute a search over the given subject. - pub fn search(&mut self, subject: &Subject) -> io::Result { - let bin = if subject.is_explicit() { - self.config.binary_explicit.clone() - } else { - self.config.binary_implicit.clone() - }; - let path = subject.path(); - log::trace!("{}: binary detection: {:?}", path.display(), bin); - - self.searcher.set_binary_detection(bin); - if subject.is_stdin() { - self.search_reader(path, &mut io::stdin().lock()) - } else if self.should_preprocess(path) { - self.search_preprocessor(path) - } else if self.should_decompress(path) { - self.search_decompress(path) - } else { - self.search_path(path) - } - } - - /// Return a mutable reference to the underlying printer. - pub fn printer(&mut self) -> &mut Printer { - &mut self.printer - } - - /// Print the given statistics to the underlying writer in a way that is - /// consistent with this searcher's printer's format. - /// - /// While `Stats` contains a duration itself, this only corresponds to the - /// time spent searching, where as `total_duration` should roughly - /// approximate the lifespan of the ripgrep process itself. - pub fn print_stats( - &mut self, - total_duration: Duration, - stats: &Stats, - ) -> io::Result<()> { - if self.config.json_stats { - self.printer().print_stats_json(total_duration, stats) - } else { - self.printer().print_stats(total_duration, stats) - } - } - - /// Returns true if and only if the given file path should be - /// decompressed before searching. - fn should_decompress(&self, path: &Path) -> bool { - if !self.config.search_zip { - return false; - } - self.decomp_builder.get_matcher().has_command(path) - } - - /// Returns true if and only if the given file path should be run through - /// the preprocessor. - fn should_preprocess(&self, path: &Path) -> bool { - if !self.config.preprocessor.is_some() { - return false; - } - if self.config.preprocessor_globs.is_empty() { - return true; - } - !self.config.preprocessor_globs.matched(path, false).is_ignore() - } - - /// Search the given file path by first asking the preprocessor for the - /// data to search instead of opening the path directly. - fn search_preprocessor( - &mut self, - path: &Path, - ) -> io::Result { - let bin = self.config.preprocessor.as_ref().unwrap(); - let mut cmd = Command::new(bin); - cmd.arg(path).stdin(Stdio::from(File::open(path)?)); - - let mut rdr = self.command_builder.build(&mut cmd).map_err(|err| { - io::Error::new( - io::ErrorKind::Other, - format!( - "preprocessor command could not start: '{:?}': {}", - cmd, err, - ), - ) - })?; - let result = self.search_reader(path, &mut rdr).map_err(|err| { - io::Error::new( - io::ErrorKind::Other, - format!("preprocessor command failed: '{:?}': {}", cmd, err), - ) - }); - let close_result = rdr.close(); - let search_result = result?; - close_result?; - Ok(search_result) - } - - /// Attempt to decompress the data at the given file path and search the - /// result. If the given file path isn't recognized as a compressed file, - /// then search it without doing any decompression. - fn search_decompress(&mut self, path: &Path) -> io::Result { - let mut rdr = self.decomp_builder.build(path)?; - let result = self.search_reader(path, &mut rdr); - let close_result = rdr.close(); - let search_result = result?; - close_result?; - Ok(search_result) - } - - /// Search the contents of the given file path. - fn search_path(&mut self, path: &Path) -> io::Result { - use self::PatternMatcher::*; - - let (searcher, printer) = (&mut self.searcher, &mut self.printer); - match self.matcher { - RustRegex(ref m) => search_path(m, searcher, printer, path), - #[cfg(feature = "pcre2")] - PCRE2(ref m) => search_path(m, searcher, printer, path), - } - } - - /// Executes a search on the given reader, which may or may not correspond - /// directly to the contents of the given file path. Instead, the reader - /// may actually cause something else to be searched (for example, when - /// a preprocessor is set or when decompression is enabled). In those - /// cases, the file path is used for visual purposes only. - /// - /// Generally speaking, this method should only be used when there is no - /// other choice. Searching via `search_path` provides more opportunities - /// for optimizations (such as memory maps). - fn search_reader( - &mut self, - path: &Path, - rdr: &mut R, - ) -> io::Result { - use self::PatternMatcher::*; - - let (searcher, printer) = (&mut self.searcher, &mut self.printer); - match self.matcher { - RustRegex(ref m) => search_reader(m, searcher, printer, path, rdr), - #[cfg(feature = "pcre2")] - PCRE2(ref m) => search_reader(m, searcher, printer, path, rdr), - } - } -} - -/// Search the contents of the given file path using the given matcher, -/// searcher and printer. -fn search_path( - matcher: M, - searcher: &mut Searcher, - printer: &mut Printer, - path: &Path, -) -> io::Result { - match *printer { - Printer::Standard(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_path(&matcher, path, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: sink.stats().map(|s| s.clone()), - }) - } - Printer::Summary(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_path(&matcher, path, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: sink.stats().map(|s| s.clone()), - }) - } - Printer::JSON(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_path(&matcher, path, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: Some(sink.stats().clone()), - }) - } - } -} - -/// Search the contents of the given reader using the given matcher, searcher -/// and printer. -fn search_reader( - matcher: M, - searcher: &mut Searcher, - printer: &mut Printer, - path: &Path, - mut rdr: R, -) -> io::Result { - match *printer { - Printer::Standard(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_reader(&matcher, &mut rdr, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: sink.stats().map(|s| s.clone()), - }) - } - Printer::Summary(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_reader(&matcher, &mut rdr, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: sink.stats().map(|s| s.clone()), - }) - } - Printer::JSON(ref mut p) => { - let mut sink = p.sink_with_path(&matcher, path); - searcher.search_reader(&matcher, &mut rdr, &mut sink)?; - Ok(SearchResult { - has_match: sink.has_match(), - stats: Some(sink.stats().clone()), - }) - } - } -} - -/// Return the given duration as fractional seconds. -fn fractional_seconds(duration: Duration) -> f64 { - (duration.as_secs() as f64) + (duration.subsec_nanos() as f64 * 1e-9) -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/subject.rs b/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/subject.rs deleted file mode 100644 index 007f49de2..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/crates/core/subject.rs +++ /dev/null @@ -1,160 +0,0 @@ -use std::path::Path; - -use ignore::{self, DirEntry}; -use log; - -/// A configuration for describing how subjects should be built. -#[derive(Clone, Debug)] -struct Config { - strip_dot_prefix: bool, -} - -impl Default for Config { - fn default() -> Config { - Config { strip_dot_prefix: false } - } -} - -/// A builder for constructing things to search over. -#[derive(Clone, Debug)] -pub struct SubjectBuilder { - config: Config, -} - -impl SubjectBuilder { - /// Return a new subject builder with a default configuration. - pub fn new() -> SubjectBuilder { - SubjectBuilder { config: Config::default() } - } - - /// Create a new subject from a possibly missing directory entry. - /// - /// If the directory entry isn't present, then the corresponding error is - /// logged if messages have been configured. Otherwise, if the subject is - /// deemed searchable, then it is returned. - pub fn build_from_result( - &self, - result: Result, - ) -> Option { - match result { - Ok(dent) => self.build(dent), - Err(err) => { - err_message!("{}", err); - None - } - } - } - - /// Create a new subject using this builder's configuration. - /// - /// If a subject could not be created or should otherwise not be searched, - /// then this returns `None` after emitting any relevant log messages. - pub fn build(&self, dent: DirEntry) -> Option { - let subj = - Subject { dent, strip_dot_prefix: self.config.strip_dot_prefix }; - if let Some(ignore_err) = subj.dent.error() { - ignore_message!("{}", ignore_err); - } - // If this entry was explicitly provided by an end user, then we always - // want to search it. - if subj.is_explicit() { - return Some(subj); - } - // At this point, we only want to search something if it's explicitly a - // file. This omits symlinks. (If ripgrep was configured to follow - // symlinks, then they have already been followed by the directory - // traversal.) - if subj.is_file() { - return Some(subj); - } - // We got nothin. Emit a debug message, but only if this isn't a - // directory. Otherwise, emitting messages for directories is just - // noisy. - if !subj.is_dir() { - log::debug!( - "ignoring {}: failed to pass subject filter: \ - file type: {:?}, metadata: {:?}", - subj.dent.path().display(), - subj.dent.file_type(), - subj.dent.metadata() - ); - } - None - } - - /// When enabled, if the subject's file path starts with `./` then it is - /// stripped. - /// - /// This is useful when implicitly searching the current working directory. - pub fn strip_dot_prefix(&mut self, yes: bool) -> &mut SubjectBuilder { - self.config.strip_dot_prefix = yes; - self - } -} - -/// A subject is a thing we want to search. Generally, a subject is either a -/// file or stdin. -#[derive(Clone, Debug)] -pub struct Subject { - dent: DirEntry, - strip_dot_prefix: bool, -} - -impl Subject { - /// Return the file path corresponding to this subject. - /// - /// If this subject corresponds to stdin, then a special `` path - /// is returned instead. - pub fn path(&self) -> &Path { - if self.strip_dot_prefix && self.dent.path().starts_with("./") { - self.dent.path().strip_prefix("./").unwrap() - } else { - self.dent.path() - } - } - - /// Returns true if and only if this entry corresponds to stdin. - pub fn is_stdin(&self) -> bool { - self.dent.is_stdin() - } - - /// Returns true if and only if this entry corresponds to a subject to - /// search that was explicitly supplied by an end user. - /// - /// Generally, this corresponds to either stdin or an explicit file path - /// argument. e.g., in `rg foo some-file ./some-dir/`, `some-file` is - /// an explicit subject, but, e.g., `./some-dir/some-other-file` is not. - /// - /// However, note that ripgrep does not see through shell globbing. e.g., - /// in `rg foo ./some-dir/*`, `./some-dir/some-other-file` will be treated - /// as an explicit subject. - pub fn is_explicit(&self) -> bool { - // stdin is obvious. When an entry has a depth of 0, that means it - // was explicitly provided to our directory iterator, which means it - // was in turn explicitly provided by the end user. The !is_dir check - // means that we want to search files even if their symlinks, again, - // because they were explicitly provided. (And we never want to try - // to search a directory.) - self.is_stdin() || (self.dent.depth() == 0 && !self.is_dir()) - } - - /// Returns true if and only if this subject points to a directory after - /// following symbolic links. - fn is_dir(&self) -> bool { - let ft = match self.dent.file_type() { - None => return false, - Some(ft) => ft, - }; - if ft.is_dir() { - return true; - } - // If this is a symlink, then we want to follow it to determine - // whether it's a directory or not. - self.dent.path_is_symlink() && self.dent.path().is_dir() - } - - /// Returns true if and only if this subject points to a file. - fn is_file(&self) -> bool { - self.dent.file_type().map_or(false, |ft| ft.is_file()) - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/doc/rg.1.txt.tpl b/collector/compile-benchmarks/ripgrep-13.0.0/doc/rg.1.txt.tpl deleted file mode 100644 index ee37744fc..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/doc/rg.1.txt.tpl +++ /dev/null @@ -1,307 +0,0 @@ -rg(1) -===== - -Name ----- -rg - recursively search the current directory for lines matching a pattern - - -Synopsis --------- -*rg* [_OPTIONS_] _PATTERN_ [_PATH_...] - -*rg* [_OPTIONS_] *-e* _PATTERN_... [_PATH_...] - -*rg* [_OPTIONS_] *-f* _PATTERNFILE_... [_PATH_...] - -*rg* [_OPTIONS_] *--files* [_PATH_...] - -*rg* [_OPTIONS_] *--type-list* - -*command* | *rg* [_OPTIONS_] _PATTERN_ - -*rg* [_OPTIONS_] *--help* - -*rg* [_OPTIONS_] *--version* - - -DESCRIPTION ------------ -ripgrep (rg) recursively searches the current directory for a regex pattern. -By default, ripgrep will respect your .gitignore and automatically skip hidden -files/directories and binary files. - -ripgrep's default regex engine uses finite automata and guarantees linear -time searching. Because of this, features like backreferences and arbitrary -look-around are not supported. However, if ripgrep is built with PCRE2, then -the *--pcre2* flag can be used to enable backreferences and look-around. - -ripgrep supports configuration files. Set *RIPGREP_CONFIG_PATH* to a -configuration file. The file can specify one shell argument per line. Lines -starting with *#* are ignored. For more details, see the man page or the -*README*. - -ripgrep will automatically detect if stdin exists and search stdin for a regex -pattern, e.g. *ls | rg foo*. In some environments, stdin may exist when it -shouldn't. To turn off stdin detection explicitly specify the directory to -search, e.g. *rg foo ./*. - -Tip: to disable all smart filtering and make ripgrep behave a bit more like -classical grep, use *rg -uuu*. - - -REGEX SYNTAX ------------- -ripgrep uses Rust's regex engine by default, which documents its syntax: -https://docs.rs/regex/*/regex/#syntax - -ripgrep uses byte-oriented regexes, which has some additional documentation: -https://docs.rs/regex/*/regex/bytes/index.html#syntax - -To a first approximation, ripgrep uses Perl-like regexes without look-around or -backreferences. This makes them very similar to the "extended" (ERE) regular -expressions supported by *egrep*, but with a few additional features like -Unicode character classes. - -If you're using ripgrep with the *--pcre2* flag, then please consult -https://www.pcre.org or the PCRE2 man pages for documentation on the supported -syntax. - - -POSITIONAL ARGUMENTS --------------------- -_PATTERN_:: - A regular expression used for searching. To match a pattern beginning with a - dash, use the -e/--regexp option. - -_PATH_:: - A file or directory to search. Directories are searched recursively. File - paths specified explicitly on the command line override glob and ignore - rules. - - -OPTIONS -------- -Note that many options can be disabled via flags. In some cases, those flags -are not listed in a first class way below. For example, the *--column* -flag (listed below) enables column numbers in ripgrep's output, but the -*--no-column* flag (not listed below) disables them. The reverse can also -exist. For example, the *--no-ignore* flag (listed below) disables ripgrep's -*gitignore* logic, but the *--ignore* flag (not listed below) enables it. These -flags are useful for overriding a ripgrep configuration file on the command -line. Each flag's documentation notes whether an inverted flag exists. In all -cases, the flag specified last takes precedence. - -{OPTIONS} - - -EXIT STATUS ------------ -If ripgrep finds a match, then the exit status of the program is 0. If no match -could be found, then the exit status is 1. If an error occurred, then the exit -status is always 2 unless ripgrep was run with the *--quiet* flag and a match -was found. In summary: - -* `0` exit status occurs only when at least one match was found, and if - no error occurred, unless *--quiet* was given. -* `1` exit status occurs only when no match was found and no error occurred. -* `2` exit status occurs when an error occurred. This is true for both - catastrophic errors (e.g., a regex syntax error) and for soft errors (e.g., - unable to read a file). - - -AUTOMATIC FILTERING -------------------- -TL;DR - To disable automatic filtering, use 'rg -uuu'. - -One of ripgrep's most important features is its automatic smart filtering. -It is the most apparent differentiating feature between ripgrep and other tools -like 'grep'. As such, its behavior may be surprising to users that aren't -expecting it. - -ripgrep does four types of filtering automatically: - - 1. Files and directories that match ignore rules are not searched. - 2. Hidden files and directories are not searched. - 3. Binary files (files with a 'NUL' byte) are not searched. - 4. Symbolic links are not followed. - -The first type of filtering is the most sophisticated. ripgrep will attempt to -respect your gitignore rules as faithfully as possible. In particular, this -includes the following: - - * Any global rules, e.g., in '$HOME/.config/git/ignore'. - * Any rules in '.gitignore'. - * Any local rules, e.g., in '.git/info/exclude'. - -In some cases, ripgrep and git will not always be in sync in terms of which -files are ignored. For example, a file that is ignored via '.gitignore' but is -tracked by git would not be searched by ripgrep even though git tracks it. This -is unlikely to ever be fixed. Instead, you should either make sure your exclude -rules match the files you track precisely, or otherwise use 'git grep' for -search. - -Additional ignore rules can be provided outside of a git context: - - * Any rules in '.ignore'. - * Any rules in '.rgignore'. - * Any rules in files specified with the '--ignore-file' flag. - -The precedence of ignore rules is as follows, with later items overriding -earlier items: - - * Files given by '--ignore-file'. - * Global gitignore rules, e.g., from '$HOME/.config/git/ignore'. - * Local rules from '.git/info/exclude'. - * Rules from '.gitignore'. - * Rules from '.ignore'. - * Rules from '.rgignore'. - -So for example, if 'foo' were in a '.gitignore' and '!foo' were in an -'.rgignore', then 'foo' would not be ignored since '.rgignore' takes precedence -over '.gitignore'. - -Each of the types of filtering can be configured via command line flags: - - * There are several flags starting with '--no-ignore' that toggle which, - if any, ignore rules are respected. '--no-ignore' by itself will disable - all of them. - * '-./--hidden' will force ripgrep to search hidden files and directories. - * '--binary' will force ripgrep to search binary files. - * '-L/--follow' will force ripgrep to follow symlinks. - -As a special short hand, the `-u` flag can be specified up to three times. Each -additional time incrementally decreases filtering: - - * '-u' is equivalent to '--no-ignore'. - * '-uu' is equivalent to '--no-ignore --hidden'. - * '-uuu' is equivalent to '--no-ignore --hidden --binary'. - -In particular, 'rg -uuu' should search the same exact content as 'grep -r'. - - -CONFIGURATION FILES -------------------- -ripgrep supports reading configuration files that change ripgrep's default -behavior. The format of the configuration file is an "rc" style and is very -simple. It is defined by two rules: - - 1. Every line is a shell argument, after trimming whitespace. - 2. Lines starting with *#* (optionally preceded by any amount of - whitespace) are ignored. - -ripgrep will look for a single configuration file if and only if the -*RIPGREP_CONFIG_PATH* environment variable is set and is non-empty. ripgrep -will parse shell arguments from this file on startup and will behave as if -the arguments in this file were prepended to any explicit arguments given to -ripgrep on the command line. Note though that the 'rg' command you run must -still be valid. That is, it must always contain at least one pattern at the -command line, even if the configuration file uses the '-e/--regexp' flag. - -For example, if your ripgreprc file contained a single line: - - --smart-case - -then the following command - - RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo - -would behave identically to the following command - - rg --smart-case foo - -another example is adding types - - --type-add - web:*.{html,css,js}* - -would behave identically to the following command - - rg --type-add 'web:*.{html,css,js}*' foo - -same with using globs - - --glob=!.git - -or - - --glob - !.git - -would behave identically to the following command - - rg --glob '!.git' foo - -ripgrep also provides a flag, *--no-config*, that when present will suppress -any and all support for configuration. This includes any future support -for auto-loading configuration files from pre-determined paths. - -Conflicts between configuration files and explicit arguments are handled -exactly like conflicts in the same command line invocation. That is, -this command: - - RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo --case-sensitive - -is exactly equivalent to - - rg --smart-case foo --case-sensitive - -in which case, the *--case-sensitive* flag would override the *--smart-case* -flag. - - -SHELL COMPLETION ----------------- -Shell completion files are included in the release tarball for Bash, Fish, Zsh -and PowerShell. - -For *bash*, move *rg.bash* to *$XDG_CONFIG_HOME/bash_completion* -or */etc/bash_completion.d/*. - -For *fish*, move *rg.fish* to *$HOME/.config/fish/completions*. - -For *zsh*, move *_rg* to one of your *$fpath* directories. - - -CAVEATS -------- -ripgrep may abort unexpectedly when using default settings if it searches a -file that is simultaneously truncated. This behavior can be avoided by passing -the *--no-mmap* flag which will forcefully disable the use of memory maps in -all cases. - -ripgrep may use a large amount of memory depending on a few factors. Firstly, -if ripgrep uses parallelism for search (the default), then the entire output -for each individual file is buffered into memory in order to prevent -interleaving matches in the output. To avoid this, you can disable parallelism -with the *-j1* flag. Secondly, ripgrep always needs to have at least a single -line in memory in order to execute a search. A file with a very long line can -thus cause ripgrep to use a lot of memory. Generally, this only occurs when -searching binary data with the *-a* flag enabled. (When the *-a* flag isn't -enabled, ripgrep will replace all NUL bytes with line terminators, which -typically prevents exorbitant memory usage.) Thirdly, when ripgrep searches -a large file using a memory map, the process will report its resident memory -usage as the size of the file. However, this does not mean ripgrep actually -needed to use that much memory; the operating system will generally handle this -for you. - - -VERSION -------- -{VERSION} - - -HOMEPAGE --------- -https://github.com/BurntSushi/ripgrep - -Please report bugs and feature requests in the issue tracker. Please do your -best to provide a reproducible test case for bugs. This should include the -corpus being searched, the *rg* command, the actual output and the expected -output. Please also include the output of running the same *rg* command but -with the *--debug* flag. - - -AUTHORS -------- -Andrew Gallant diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/perf-config.json b/collector/compile-benchmarks/ripgrep-13.0.0/perf-config.json deleted file mode 100644 index dde17befd..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/perf-config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "touch_file": "crates/core/main.rs", - "category": "primary", - "artifact": "binary" -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/pkg/brew/ripgrep-bin.rb b/collector/compile-benchmarks/ripgrep-13.0.0/pkg/brew/ripgrep-bin.rb deleted file mode 100644 index af836c633..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/pkg/brew/ripgrep-bin.rb +++ /dev/null @@ -1,23 +0,0 @@ -class RipgrepBin < Formula - version '12.1.1' - desc "Recursively search directories for a regex pattern." - homepage "https://github.com/BurntSushi/ripgrep" - - if OS.mac? - url "https://github.com/BurntSushi/ripgrep/releases/download/#{version}/ripgrep-#{version}-x86_64-apple-darwin.tar.gz" - sha256 "7ff2fd5dd3a438d62fae5866ddae78cf542b733116f58cf21ab691a58c385703" - elsif OS.linux? - url "https://github.com/BurntSushi/ripgrep/releases/download/#{version}/ripgrep-#{version}-x86_64-unknown-linux-musl.tar.gz" - sha256 "88d3b735e43f6f16a0181a8fec48847693fae80168d5f889fdbdeb962f1fc804" - end - - conflicts_with "ripgrep" - - def install - bin.install "rg" - man1.install "doc/rg.1" - - bash_completion.install "complete/rg.bash" - zsh_completion.install "complete/_rg" - end -end diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/rustfmt.toml b/collector/compile-benchmarks/ripgrep-13.0.0/rustfmt.toml deleted file mode 100644 index aa37a218b..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/rustfmt.toml +++ /dev/null @@ -1,2 +0,0 @@ -max_width = 79 -use_small_heuristics = "max" diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/scripts/copy-examples b/collector/compile-benchmarks/ripgrep-13.0.0/scripts/copy-examples deleted file mode 100755 index e8eb2f241..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/scripts/copy-examples +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -from __future__ import absolute_import, division, print_function -import argparse -import codecs -import os.path -import re - -RE_EACH_CODE_BLOCK = re.compile( - r'(?s)(?:```|\{\{< high rust[^>]+>\}\})[^\n]*\n(.*?)(?:```|\{\{< /high >\}\})' # noqa -) -RE_MARKER = re.compile(r'^(?:# )?//([^/].*)$') -RE_STRIP_COMMENT = re.compile(r'^# ?') - -if __name__ == '__main__': - p = argparse.ArgumentParser() - p.add_argument('--rust-file', default='src/cookbook.rs') - p.add_argument('--example-dir', default='grep/examples') - args = p.parse_args() - - with codecs.open(args.rust_file, encoding='utf-8') as f: - rustcode = f.read() - for m in RE_EACH_CODE_BLOCK.finditer(rustcode): - lines = m.group(1).splitlines() - marker, codelines = lines[0], lines[1:] - m = RE_MARKER.search(marker) - if m is None: - continue - - code = '\n'.join(RE_STRIP_COMMENT.sub('', line) for line in codelines) - fpath = os.path.join(args.example_dir, m.group(1)) - with codecs.open(fpath, mode='w+', encoding='utf-8') as f: - print(code, file=f) diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/binary.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/binary.rs deleted file mode 100644 index 93f6844ca..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/binary.rs +++ /dev/null @@ -1,306 +0,0 @@ -use crate::util::{Dir, TestCommand}; - -// This file contains a smattering of tests specifically for checking ripgrep's -// handling of binary files. There's quite a bit of discussion on this in this -// bug report: https://github.com/BurntSushi/ripgrep/issues/306 - -// Our haystack is the first 500 lines of Gutenberg's copy of "A Study in -// Scarlet," with a NUL byte at line 1898: `abcdef\x00`. -// -// The position and size of the haystack is, unfortunately, significant. In -// particular, the NUL byte is specifically inserted at some point *after* the -// first 65,536 bytes, which corresponds to the initial capacity of the buffer -// that ripgrep uses to read files. (grep for DEFAULT_BUFFER_CAPACITY.) The -// position of the NUL byte ensures that we can execute some search on the -// initial buffer contents without ever detecting any binary data. Moreover, -// when using a memory map for searching, only the first 65,536 bytes are -// scanned for a NUL byte, so no binary bytes are detected at all when using -// a memory map (unless our query matches line 1898). -// -// One last note: in the tests below, we use --no-mmap heavily because binary -// detection with memory maps is a bit different. Namely, NUL bytes are only -// searched for in the first few KB of the file and in a match. Normally, NUL -// bytes are searched for everywhere. -// -// TODO: Add tests for binary file detection when using memory maps. -const HAY: &'static [u8] = include_bytes!("./data/sherlock-nul.txt"); - -// This tests that ripgrep prints a warning message if it finds and prints a -// match in a binary file before detecting that it is a binary file. The point -// here is to notify that user that the search of the file is only partially -// complete. -// -// This applies to files that are *implicitly* searched via a recursive -// directory traversal. In particular, this results in a WARNING message being -// printed. We make our file "implicit" by doing a recursive search with a glob -// that matches our file. -rgtest!(after_match1_implicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "Project Gutenberg EBook", "-g", "hay"]); - - let expected = "\ -hay:1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -hay: WARNING: stopped searching binary file after match (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match1_implicit, except we provide a file to search -// explicitly. This results in identical behavior, but a different message. -rgtest!(after_match1_explicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "Project Gutenberg EBook", "hay"]); - - let expected = "\ -1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match1_explicit, except we feed our content on stdin. -rgtest!(after_match1_stdin, |_: Dir, mut cmd: TestCommand| { - cmd.args(&["--no-mmap", "-n", "Project Gutenberg EBook"]); - - let expected = "\ -1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.pipe(HAY)); -}); - -// Like after_match1_implicit, but provides the --binary flag, which -// disables binary filtering. Thus, this matches the behavior of ripgrep as -// if the file were given explicitly. -rgtest!(after_match1_implicit_binary, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&[ - "--no-mmap", - "-n", - "--binary", - "Project Gutenberg EBook", - "-g", - "hay", - ]); - - let expected = "\ -hay:1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -hay: binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match1_implicit, but enables -a/--text, so no binary -// detection should be performed. -rgtest!(after_match1_implicit_text, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&[ - "--no-mmap", - "-n", - "--text", - "Project Gutenberg EBook", - "-g", - "hay", - ]); - - let expected = "\ -hay:1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match1_implicit_text, but enables -a/--text, so no binary -// detection should be performed. -rgtest!(after_match1_explicit_text, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "--text", "Project Gutenberg EBook", "hay"]); - - let expected = "\ -1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match1_implicit, except this asks ripgrep to print all matching -// files. -// -// This is an interesting corner case that one might consider a bug, however, -// it's unlikely to be fixed. Namely, ripgrep probably shouldn't print `hay` -// as a matching file since it is in fact a binary file, and thus should be -// filtered out by default. However, the --files-with-matches flag will print -// out the path of a matching file as soon as a match is seen and then stop -// searching completely. Therefore, the NUL byte is never actually detected. -// -// The only way to fix this would be to kill ripgrep's performance in this case -// and continue searching the entire file for a NUL byte. (Similarly if the -// --quiet flag is set. See the next test.) -rgtest!(after_match1_implicit_path, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-l", "Project Gutenberg EBook", "-g", "hay"]); - eqnice!("hay\n", cmd.stdout()); -}); - -// Like after_match1_implicit_path, except this indicates that a match was -// found with no other output. (This is the same bug described above, but -// manifest as an exit code with no output.) -rgtest!(after_match1_implicit_quiet, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-q", "Project Gutenberg EBook", "-g", "hay"]); - eqnice!("", cmd.stdout()); -}); - -// This sets up the same test as after_match1_implicit_path, but instead of -// just printing the matching files, this includes the full count of matches. -// In this case, we need to search the entire file, so ripgrep correctly -// detects the binary data and suppresses output. -rgtest!(after_match1_implicit_count, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-c", "Project Gutenberg EBook", "-g", "hay"]); - cmd.assert_err(); -}); - -// Like after_match1_implicit_count, except the --binary flag is provided, -// which makes ripgrep disable binary data filtering even for implicit files. -rgtest!( - after_match1_implicit_count_binary, - |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&[ - "--no-mmap", - "-c", - "--binary", - "Project Gutenberg EBook", - "-g", - "hay", - ]); - eqnice!("hay:1\n", cmd.stdout()); - } -); - -// Like after_match1_implicit_count, except the file path is provided -// explicitly, so binary filtering is disabled and a count is correctly -// reported. -rgtest!(after_match1_explicit_count, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-c", "Project Gutenberg EBook", "hay"]); - eqnice!("1\n", cmd.stdout()); -}); - -// This tests that a match way before the NUL byte is shown, but a match after -// the NUL byte is not. -rgtest!(after_match2_implicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&[ - "--no-mmap", - "-n", - "Project Gutenberg EBook|a medical student", - "-g", - "hay", - ]); - - let expected = "\ -hay:1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -hay: WARNING: stopped searching binary file after match (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like after_match2_implicit, but enables -a/--text, so no binary -// detection should be performed. -rgtest!(after_match2_implicit_text, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&[ - "--no-mmap", - "-n", - "--text", - "Project Gutenberg EBook|a medical student", - "-g", - "hay", - ]); - - let expected = "\ -hay:1:The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle -hay:1867:\"And yet you say he is not a medical student?\" -"; - eqnice!(expected, cmd.stdout()); -}); - -// This tests that ripgrep *silently* quits before finding a match that occurs -// after a NUL byte. -rgtest!(before_match1_implicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "Heaven", "-g", "hay"]); - cmd.assert_err(); -}); - -// This tests that ripgrep *does not* silently quit before finding a match that -// occurs after a NUL byte when a file is explicitly searched. -rgtest!(before_match1_explicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "Heaven", "hay"]); - - let expected = "\ -binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like before_match1_implicit, but enables the --binary flag, which -// disables binary filtering. Thus, this matches the behavior of ripgrep as if -// the file were given explicitly. -rgtest!(before_match1_implicit_binary, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "--binary", "Heaven", "-g", "hay"]); - - let expected = "\ -hay: binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like before_match1_implicit, but enables -a/--text, so no binary -// detection should be performed. -rgtest!(before_match1_implicit_text, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "--text", "Heaven", "-g", "hay"]); - - let expected = "\ -hay:1871:\"No. Heaven knows what the objects of his studies are. But here we -"; - eqnice!(expected, cmd.stdout()); -}); - -// This tests that ripgrep *silently* quits before finding a match that occurs -// before a NUL byte, but within the same buffer as the NUL byte. -rgtest!(before_match2_implicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "a medical student", "-g", "hay"]); - cmd.assert_err(); -}); - -// This tests that ripgrep *does not* silently quit before finding a match that -// occurs before a NUL byte, but within the same buffer as the NUL byte. Even -// though the match occurs before the NUL byte, ripgrep still doesn't print it -// because it has already scanned ahead to detect the NUL byte. (This matches -// the behavior of GNU grep.) -rgtest!(before_match2_explicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "a medical student", "hay"]); - - let expected = "\ -binary file matches (found \"\\0\" byte around offset 77041) -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like before_match1_implicit, but enables -a/--text, so no binary -// detection should be performed. -rgtest!(before_match2_implicit_text, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("hay", HAY); - cmd.args(&["--no-mmap", "-n", "--text", "a medical student", "-g", "hay"]); - - let expected = "\ -hay:1867:\"And yet you say he is not a medical student?\" -"; - eqnice!(expected, cmd.stdout()); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock-nul.txt b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock-nul.txt deleted file mode 100644 index 60fb2b095..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock-nul.txt +++ /dev/null @@ -1,2133 +0,0 @@ -The Project Gutenberg EBook of A Study In Scarlet, by Arthur Conan Doyle - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -This eBook is for the use of anyone anywhere at no cost and with -almost no restrictions whatsoever. You may copy it, give it away or -re-use it under the terms of the Project Gutenberg License included -with this eBook or online at www.gutenberg.org - - -Title: A Study In Scarlet - -Author: Arthur Conan Doyle - -Posting Date: July 12, 2008 [EBook #244] -Release Date: April, 1995 -[Last updated: February 17, 2013] - -Language: English - - -*** START OF THIS PROJECT GUTENBERG EBOOK A STUDY IN SCARLET *** - - - - -Produced by Roger Squires - - - - - -A STUDY IN SCARLET. - -By A. Conan Doyle - -[1] - - - - Original Transcriber's Note: This etext is prepared directly - from an 1887 edition, and care has been taken to duplicate the - original exactly, including typographical and punctuation - vagaries. - - Additions to the text include adding the underscore character to - indicate italics, and textual end-notes in square braces. - - Project Gutenberg Editor's Note: In reproofing and moving old PG - files such as this to the present PG directory system it is the - policy to reformat the text to conform to present PG Standards. - In this case however, in consideration of the note above of the - original transcriber describing his care to try to duplicate the - original 1887 edition as to typography and punctuation vagaries, - no changes have been made in this ascii text file. However, in - the Latin-1 file and this html file, present standards are - followed and the several French and Spanish words have been - given their proper accents. - - Part II, The Country of the Saints, deals much with the Mormon Church. - - - - -A STUDY IN SCARLET. - - - - - -PART I. - -(_Being a reprint from the reminiscences of_ JOHN H. WATSON, M.D., _late -of the Army Medical Department._) [2] - - - - -CHAPTER I. MR. SHERLOCK HOLMES. - - -IN the year 1878 I took my degree of Doctor of Medicine of the -University of London, and proceeded to Netley to go through the course -prescribed for surgeons in the army. Having completed my studies there, -I was duly attached to the Fifth Northumberland Fusiliers as Assistant -Surgeon. The regiment was stationed in India at the time, and before -I could join it, the second Afghan war had broken out. On landing at -Bombay, I learned that my corps had advanced through the passes, and -was already deep in the enemy's country. I followed, however, with many -other officers who were in the same situation as myself, and succeeded -in reaching Candahar in safety, where I found my regiment, and at once -entered upon my new duties. - -The campaign brought honours and promotion to many, but for me it had -nothing but misfortune and disaster. I was removed from my brigade and -attached to the Berkshires, with whom I served at the fatal battle of -Maiwand. There I was struck on the shoulder by a Jezail bullet, which -shattered the bone and grazed the subclavian artery. I should have -fallen into the hands of the murderous Ghazis had it not been for the -devotion and courage shown by Murray, my orderly, who threw me across a -pack-horse, and succeeded in bringing me safely to the British lines. - -Worn with pain, and weak from the prolonged hardships which I had -undergone, I was removed, with a great train of wounded sufferers, to -the base hospital at Peshawar. Here I rallied, and had already improved -so far as to be able to walk about the wards, and even to bask a little -upon the verandah, when I was struck down by enteric fever, that curse -of our Indian possessions. For months my life was despaired of, and -when at last I came to myself and became convalescent, I was so weak and -emaciated that a medical board determined that not a day should be lost -in sending me back to England. I was dispatched, accordingly, in the -troopship "Orontes," and landed a month later on Portsmouth jetty, with -my health irretrievably ruined, but with permission from a paternal -government to spend the next nine months in attempting to improve it. - -I had neither kith nor kin in England, and was therefore as free as -air--or as free as an income of eleven shillings and sixpence a day will -permit a man to be. Under such circumstances, I naturally gravitated to -London, that great cesspool into which all the loungers and idlers of -the Empire are irresistibly drained. There I stayed for some time at -a private hotel in the Strand, leading a comfortless, meaningless -existence, and spending such money as I had, considerably more freely -than I ought. So alarming did the state of my finances become, that -I soon realized that I must either leave the metropolis and rusticate -somewhere in the country, or that I must make a complete alteration in -my style of living. Choosing the latter alternative, I began by making -up my mind to leave the hotel, and to take up my quarters in some less -pretentious and less expensive domicile. - -On the very day that I had come to this conclusion, I was standing at -the Criterion Bar, when some one tapped me on the shoulder, and turning -round I recognized young Stamford, who had been a dresser under me at -Barts. The sight of a friendly face in the great wilderness of London is -a pleasant thing indeed to a lonely man. In old days Stamford had never -been a particular crony of mine, but now I hailed him with enthusiasm, -and he, in his turn, appeared to be delighted to see me. In the -exuberance of my joy, I asked him to lunch with me at the Holborn, and -we started off together in a hansom. - -"Whatever have you been doing with yourself, Watson?" he asked in -undisguised wonder, as we rattled through the crowded London streets. -"You are as thin as a lath and as brown as a nut." - -I gave him a short sketch of my adventures, and had hardly concluded it -by the time that we reached our destination. - -"Poor devil!" he said, commiseratingly, after he had listened to my -misfortunes. "What are you up to now?" - -"Looking for lodgings." [3] I answered. "Trying to solve the problem -as to whether it is possible to get comfortable rooms at a reasonable -price." - -"That's a strange thing," remarked my companion; "you are the second man -to-day that has used that expression to me." - -"And who was the first?" I asked. - -"A fellow who is working at the chemical laboratory up at the hospital. -He was bemoaning himself this morning because he could not get someone -to go halves with him in some nice rooms which he had found, and which -were too much for his purse." - -"By Jove!" I cried, "if he really wants someone to share the rooms and -the expense, I am the very man for him. I should prefer having a partner -to being alone." - -Young Stamford looked rather strangely at me over his wine-glass. "You -don't know Sherlock Holmes yet," he said; "perhaps you would not care -for him as a constant companion." - -"Why, what is there against him?" - -"Oh, I didn't say there was anything against him. He is a little queer -in his ideas--an enthusiast in some branches of science. As far as I -know he is a decent fellow enough." - -"A medical student, I suppose?" said I. - -"No--I have no idea what he intends to go in for. I believe he is well -up in anatomy, and he is a first-class chemist; but, as far as I know, -he has never taken out any systematic medical classes. His studies are -very desultory and eccentric, but he has amassed a lot of out-of-the way -knowledge which would astonish his professors." - -"Did you never ask him what he was going in for?" I asked. - -"No; he is not a man that it is easy to draw out, though he can be -communicative enough when the fancy seizes him." - -"I should like to meet him," I said. "If I am to lodge with anyone, I -should prefer a man of studious and quiet habits. I am not strong -enough yet to stand much noise or excitement. I had enough of both in -Afghanistan to last me for the remainder of my natural existence. How -could I meet this friend of yours?" - -"He is sure to be at the laboratory," returned my companion. "He either -avoids the place for weeks, or else he works there from morning to -night. If you like, we shall drive round together after luncheon." - -"Certainly," I answered, and the conversation drifted away into other -channels. - -As we made our way to the hospital after leaving the Holborn, Stamford -gave me a few more particulars about the gentleman whom I proposed to -take as a fellow-lodger. - -"You mustn't blame me if you don't get on with him," he said; "I know -nothing more of him than I have learned from meeting him occasionally in -the laboratory. You proposed this arrangement, so you must not hold me -responsible." - -"If we don't get on it will be easy to part company," I answered. "It -seems to me, Stamford," I added, looking hard at my companion, "that you -have some reason for washing your hands of the matter. Is this fellow's -temper so formidable, or what is it? Don't be mealy-mouthed about it." - -"It is not easy to express the inexpressible," he answered with a laugh. -"Holmes is a little too scientific for my tastes--it approaches to -cold-bloodedness. I could imagine his giving a friend a little pinch of -the latest vegetable alkaloid, not out of malevolence, you understand, -but simply out of a spirit of inquiry in order to have an accurate idea -of the effects. To do him justice, I think that he would take it himself -with the same readiness. He appears to have a passion for definite and -exact knowledge." - -"Very right too." - -"Yes, but it may be pushed to excess. When it comes to beating the -subjects in the dissecting-rooms with a stick, it is certainly taking -rather a bizarre shape." - -"Beating the subjects!" - -"Yes, to verify how far bruises may be produced after death. I saw him -at it with my own eyes." - -"And yet you say he is not a medical student?" - - -abcdef -"No. Heaven knows what the objects of his studies are. But here we -are, and you must form your own impressions about him." As he spoke, we -turned down a narrow lane and passed through a small side-door, which -opened into a wing of the great hospital. It was familiar ground to me, -and I needed no guiding as we ascended the bleak stone staircase and -made our way down the long corridor with its vista of whitewashed -wall and dun-coloured doors. Near the further end a low arched passage -branched away from it and led to the chemical laboratory. - -This was a lofty chamber, lined and littered with countless bottles. -Broad, low tables were scattered about, which bristled with retorts, -test-tubes, and little Bunsen lamps, with their blue flickering flames. -There was only one student in the room, who was bending over a distant -table absorbed in his work. At the sound of our steps he glanced round -and sprang to his feet with a cry of pleasure. "I've found it! I've -found it," he shouted to my companion, running towards us with a -test-tube in his hand. "I have found a re-agent which is precipitated -by hoemoglobin, [4] and by nothing else." Had he discovered a gold mine, -greater delight could not have shone upon his features. - -"Dr. Watson, Mr. Sherlock Holmes," said Stamford, introducing us. - -"How are you?" he said cordially, gripping my hand with a strength -for which I should hardly have given him credit. "You have been in -Afghanistan, I perceive." - -"How on earth did you know that?" I asked in astonishment. - -"Never mind," said he, chuckling to himself. "The question now is about -hoemoglobin. No doubt you see the significance of this discovery of -mine?" - -"It is interesting, chemically, no doubt," I answered, "but -practically----" - -"Why, man, it is the most practical medico-legal discovery for years. -Don't you see that it gives us an infallible test for blood stains. Come -over here now!" He seized me by the coat-sleeve in his eagerness, and -drew me over to the table at which he had been working. "Let us have -some fresh blood," he said, digging a long bodkin into his finger, and -drawing off the resulting drop of blood in a chemical pipette. "Now, I -add this small quantity of blood to a litre of water. You perceive that -the resulting mixture has the appearance of pure water. The proportion -of blood cannot be more than one in a million. I have no doubt, however, -that we shall be able to obtain the characteristic reaction." As he -spoke, he threw into the vessel a few white crystals, and then added -some drops of a transparent fluid. In an instant the contents assumed a -dull mahogany colour, and a brownish dust was precipitated to the bottom -of the glass jar. - -"Ha! ha!" he cried, clapping his hands, and looking as delighted as a -child with a new toy. "What do you think of that?" - -"It seems to be a very delicate test," I remarked. - -"Beautiful! beautiful! The old Guiacum test was very clumsy and -uncertain. So is the microscopic examination for blood corpuscles. The -latter is valueless if the stains are a few hours old. Now, this appears -to act as well whether the blood is old or new. Had this test been -invented, there are hundreds of men now walking the earth who would long -ago have paid the penalty of their crimes." - -"Indeed!" I murmured. - -"Criminal cases are continually hinging upon that one point. A man is -suspected of a crime months perhaps after it has been committed. His -linen or clothes are examined, and brownish stains discovered upon them. -Are they blood stains, or mud stains, or rust stains, or fruit stains, -or what are they? That is a question which has puzzled many an expert, -and why? Because there was no reliable test. Now we have the Sherlock -Holmes' test, and there will no longer be any difficulty." - -His eyes fairly glittered as he spoke, and he put his hand over his -heart and bowed as if to some applauding crowd conjured up by his -imagination. - -"You are to be congratulated," I remarked, considerably surprised at his -enthusiasm. - -"There was the case of Von Bischoff at Frankfort last year. He would -certainly have been hung had this test been in existence. Then there was -Mason of Bradford, and the notorious Muller, and Lefevre of Montpellier, -and Samson of New Orleans. I could name a score of cases in which it -would have been decisive." - -"You seem to be a walking calendar of crime," said Stamford with a -laugh. "You might start a paper on those lines. Call it the 'Police News -of the Past.'" - -"Very interesting reading it might be made, too," remarked Sherlock -Holmes, sticking a small piece of plaster over the prick on his finger. -"I have to be careful," he continued, turning to me with a smile, "for I -dabble with poisons a good deal." He held out his hand as he spoke, and -I noticed that it was all mottled over with similar pieces of plaster, -and discoloured with strong acids. - -"We came here on business," said Stamford, sitting down on a high -three-legged stool, and pushing another one in my direction with -his foot. "My friend here wants to take diggings, and as you were -complaining that you could get no one to go halves with you, I thought -that I had better bring you together." - -Sherlock Holmes seemed delighted at the idea of sharing his rooms with -me. "I have my eye on a suite in Baker Street," he said, "which would -suit us down to the ground. You don't mind the smell of strong tobacco, -I hope?" - -"I always smoke 'ship's' myself," I answered. - -"That's good enough. I generally have chemicals about, and occasionally -do experiments. Would that annoy you?" - -"By no means." - -"Let me see--what are my other shortcomings. I get in the dumps at -times, and don't open my mouth for days on end. You must not think I am -sulky when I do that. Just let me alone, and I'll soon be right. What -have you to confess now? It's just as well for two fellows to know the -worst of one another before they begin to live together." - -I laughed at this cross-examination. "I keep a bull pup," I said, "and -I object to rows because my nerves are shaken, and I get up at all sorts -of ungodly hours, and I am extremely lazy. I have another set of vices -when I'm well, but those are the principal ones at present." - -"Do you include violin-playing in your category of rows?" he asked, -anxiously. - -"It depends on the player," I answered. "A well-played violin is a treat -for the gods--a badly-played one----" - -"Oh, that's all right," he cried, with a merry laugh. "I think we may -consider the thing as settled--that is, if the rooms are agreeable to -you." - -"When shall we see them?" - -"Call for me here at noon to-morrow, and we'll go together and settle -everything," he answered. - -"All right--noon exactly," said I, shaking his hand. - -We left him working among his chemicals, and we walked together towards -my hotel. - -"By the way," I asked suddenly, stopping and turning upon Stamford, "how -the deuce did he know that I had come from Afghanistan?" - -My companion smiled an enigmatical smile. "That's just his little -peculiarity," he said. "A good many people have wanted to know how he -finds things out." - -"Oh! a mystery is it?" I cried, rubbing my hands. "This is very piquant. -I am much obliged to you for bringing us together. 'The proper study of -mankind is man,' you know." - -"You must study him, then," Stamford said, as he bade me good-bye. -"You'll find him a knotty problem, though. I'll wager he learns more -about you than you about him. Good-bye." - -"Good-bye," I answered, and strolled on to my hotel, considerably -interested in my new acquaintance. - - - - -CHAPTER II. THE SCIENCE OF DEDUCTION. - - -WE met next day as he had arranged, and inspected the rooms at No. 221B, -[5] Baker Street, of which he had spoken at our meeting. They -consisted of a couple of comfortable bed-rooms and a single large -airy sitting-room, cheerfully furnished, and illuminated by two broad -windows. So desirable in every way were the apartments, and so moderate -did the terms seem when divided between us, that the bargain was -concluded upon the spot, and we at once entered into possession. -That very evening I moved my things round from the hotel, and on the -following morning Sherlock Holmes followed me with several boxes and -portmanteaus. For a day or two we were busily employed in unpacking and -laying out our property to the best advantage. That done, we -gradually began to settle down and to accommodate ourselves to our new -surroundings. - -Holmes was certainly not a difficult man to live with. He was quiet -in his ways, and his habits were regular. It was rare for him to be -up after ten at night, and he had invariably breakfasted and gone out -before I rose in the morning. Sometimes he spent his day at the chemical -laboratory, sometimes in the dissecting-rooms, and occasionally in long -walks, which appeared to take him into the lowest portions of the City. -Nothing could exceed his energy when the working fit was upon him; but -now and again a reaction would seize him, and for days on end he would -lie upon the sofa in the sitting-room, hardly uttering a word or moving -a muscle from morning to night. On these occasions I have noticed such -a dreamy, vacant expression in his eyes, that I might have suspected him -of being addicted to the use of some narcotic, had not the temperance -and cleanliness of his whole life forbidden such a notion. - -As the weeks went by, my interest in him and my curiosity as to his -aims in life, gradually deepened and increased. His very person and -appearance were such as to strike the attention of the most casual -observer. In height he was rather over six feet, and so excessively -lean that he seemed to be considerably taller. His eyes were sharp and -piercing, save during those intervals of torpor to which I have alluded; -and his thin, hawk-like nose gave his whole expression an air of -alertness and decision. His chin, too, had the prominence and squareness -which mark the man of determination. His hands were invariably -blotted with ink and stained with chemicals, yet he was possessed of -extraordinary delicacy of touch, as I frequently had occasion to observe -when I watched him manipulating his fragile philosophical instruments. - -The reader may set me down as a hopeless busybody, when I confess how -much this man stimulated my curiosity, and how often I endeavoured -to break through the reticence which he showed on all that concerned -himself. Before pronouncing judgment, however, be it remembered, how -objectless was my life, and how little there was to engage my attention. -My health forbade me from venturing out unless the weather was -exceptionally genial, and I had no friends who would call upon me and -break the monotony of my daily existence. Under these circumstances, I -eagerly hailed the little mystery which hung around my companion, and -spent much of my time in endeavouring to unravel it. - -He was not studying medicine. He had himself, in reply to a question, -confirmed Stamford's opinion upon that point. Neither did he appear to -have pursued any course of reading which might fit him for a degree in -science or any other recognized portal which would give him an entrance -into the learned world. Yet his zeal for certain studies was remarkable, -and within eccentric limits his knowledge was so extraordinarily ample -and minute that his observations have fairly astounded me. Surely no man -would work so hard or attain such precise information unless he had some -definite end in view. Desultory readers are seldom remarkable for the -exactness of their learning. No man burdens his mind with small matters -unless he has some very good reason for doing so. - -His ignorance was as remarkable as his knowledge. Of contemporary -literature, philosophy and politics he appeared to know next to nothing. -Upon my quoting Thomas Carlyle, he inquired in the naivest way who he -might be and what he had done. My surprise reached a climax, however, -when I found incidentally that he was ignorant of the Copernican Theory -and of the composition of the Solar System. That any civilized human -being in this nineteenth century should not be aware that the earth -travelled round the sun appeared to be to me such an extraordinary fact -that I could hardly realize it. - -"You appear to be astonished," he said, smiling at my expression of -surprise. "Now that I do know it I shall do my best to forget it." - -"To forget it!" - -"You see," he explained, "I consider that a man's brain originally is -like a little empty attic, and you have to stock it with such furniture -as you choose. A fool takes in all the lumber of every sort that he -comes across, so that the knowledge which might be useful to him gets -crowded out, or at best is jumbled up with a lot of other things so that -he has a difficulty in laying his hands upon it. Now the skilful workman -is very careful indeed as to what he takes into his brain-attic. He will -have nothing but the tools which may help him in doing his work, but of -these he has a large assortment, and all in the most perfect order. It -is a mistake to think that that little room has elastic walls and can -distend to any extent. Depend upon it there comes a time when for every -addition of knowledge you forget something that you knew before. It is -of the highest importance, therefore, not to have useless facts elbowing -out the useful ones." - diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.Z b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.Z deleted file mode 100644 index 9ffa9283a..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.Z and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.br b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.br deleted file mode 100644 index 7d0a9613a..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.br +++ /dev/null @@ -1,2 +0,0 @@ -n-_. cMY4Ya -LO(8sn^Gwш!, -KD/7th ]jE_;drFQs/:DIVB}T7ѵH2)M[ui50ڮY6%ר_U by4Ϡ!&g# \ No newline at end of file diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.bz2 b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.bz2 deleted file mode 100644 index e4a6454e9..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.bz2 and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.gz b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.gz deleted file mode 100644 index 5629cbef5..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.gz and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lz4 b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lz4 deleted file mode 100644 index 5913dbbaf..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lz4 and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lzma b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lzma deleted file mode 100644 index bfdf7fb42..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.lzma and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.xz b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.xz deleted file mode 100644 index 39cca0f54..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.xz and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.zst b/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.zst deleted file mode 100644 index c649ac9b1..000000000 Binary files a/collector/compile-benchmarks/ripgrep-13.0.0/tests/data/sherlock.zst and /dev/null differ diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/feature.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/feature.rs deleted file mode 100644 index 36cbad73c..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/feature.rs +++ /dev/null @@ -1,977 +0,0 @@ -use crate::hay::{SHERLOCK, SHERLOCK_CRLF}; -use crate::util::{sort_lines, Dir, TestCommand}; - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_sjis, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes( - "foo", - b"\x84Y\x84u\x84\x82\x84|\x84\x80\x84{ \x84V\x84\x80\x84|\x84}\x84\x83" - ); - cmd.arg("-Esjis").arg("Шерлок Холмс"); - eqnice!("foo:Шерлок Холмс\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_utf16_auto, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes( - "foo", - b"\xff\xfe(\x045\x04@\x04;\x04>\x04:\x04 \x00%\x04>\x04;\x04<\x04A\x04" - ); - cmd.arg("Шерлок Холмс"); - eqnice!("foo:Шерлок Холмс\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_utf16_explicit, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes( - "foo", - b"\xff\xfe(\x045\x04@\x04;\x04>\x04:\x04 \x00%\x04>\x04;\x04<\x04A\x04" - ); - cmd.arg("-Eutf-16le").arg("Шерлок Холмс"); - eqnice!("foo:Шерлок Холмс\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_eucjp, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes( - "foo", - b"\xa7\xba\xa7\xd6\xa7\xe2\xa7\xdd\xa7\xe0\xa7\xdc \xa7\xb7\xa7\xe0\xa7\xdd\xa7\xde\xa7\xe3" - ); - cmd.arg("-Eeuc-jp").arg("Шерлок Холмс"); - eqnice!("foo:Шерлок Холмс\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_unknown_encoding, |_: Dir, mut cmd: TestCommand| { - cmd.arg("-Efoobar").assert_non_empty_stderr(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1 -rgtest!(f1_replacement_encoding, |_: Dir, mut cmd: TestCommand| { - cmd.arg("-Ecsiso2022kr").assert_non_empty_stderr(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/7 -rgtest!(f7, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("pat", "Sherlock\nHolmes"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("-fpat").arg("sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/7 -rgtest!(f7_stdin, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("-f-").pipe(b"Sherlock")); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/20 -rgtest!(f20_no_filename, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--no-filename"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("--no-filename").arg("Sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/34 -rgtest!(f34_only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:Sherlock -sherlock:Sherlock -"; - eqnice!(expected, cmd.arg("-o").arg("Sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/34 -rgtest!(f34_only_matching_line_column, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:1:57:Sherlock -sherlock:3:49:Sherlock -"; - cmd.arg("-o").arg("--column").arg("-n").arg("Sherlock"); - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/45 -rgtest!(f45_relative_cwd, |dir: Dir, mut cmd: TestCommand| { - dir.create(".not-an-ignore", "foo\n/bar"); - dir.create_dir("bar"); - dir.create_dir("baz/bar"); - dir.create_dir("baz/baz/bar"); - dir.create("bar/test", "test"); - dir.create("baz/bar/test", "test"); - dir.create("baz/baz/bar/test", "test"); - dir.create("baz/foo", "test"); - dir.create("baz/test", "test"); - dir.create("foo", "test"); - dir.create("test", "test"); - - cmd.arg("-l").arg("test"); - - // First, get a baseline without applying ignore rules. - let expected = " -bar/test -baz/bar/test -baz/baz/bar/test -baz/foo -baz/test -foo -test -"; - eqnice!(sort_lines(expected), sort_lines(&cmd.stdout())); - - // Now try again with the ignore file activated. - cmd.arg("--ignore-file").arg(".not-an-ignore"); - let expected = " -baz/bar/test -baz/baz/bar/test -baz/test -test -"; - eqnice!(sort_lines(expected), sort_lines(&cmd.stdout())); - - // Now do it again, but inside the baz directory. Since the ignore file - // is interpreted relative to the CWD, this will cause the /bar anchored - // pattern to filter out baz/bar, which is a subtle difference between true - // parent ignore files and manually specified ignore files. - let mut cmd = dir.command(); - cmd.args(&["--ignore-file", "../.not-an-ignore", "-l", "test"]); - cmd.current_dir(dir.path().join("baz")); - let expected = " -baz/bar/test -test -"; - eqnice!(sort_lines(expected), sort_lines(&cmd.stdout())); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/45 -rgtest!(f45_precedence_with_others, |dir: Dir, mut cmd: TestCommand| { - dir.create(".not-an-ignore", "*.log"); - dir.create(".ignore", "!imp.log"); - dir.create("imp.log", "test"); - dir.create("wat.log", "test"); - - cmd.arg("--ignore-file").arg(".not-an-ignore").arg("test"); - eqnice!("imp.log:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/45 -rgtest!(f45_precedence_internal, |dir: Dir, mut cmd: TestCommand| { - dir.create(".not-an-ignore1", "*.log"); - dir.create(".not-an-ignore2", "!imp.log"); - dir.create("imp.log", "test"); - dir.create("wat.log", "test"); - - cmd.args(&[ - "--ignore-file", - ".not-an-ignore1", - "--ignore-file", - ".not-an-ignore2", - "test", - ]); - eqnice!("imp.log:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/68 -rgtest!(f68_no_ignore_vcs, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "foo"); - dir.create(".ignore", "bar"); - dir.create("foo", "test"); - dir.create("bar", "test"); - - eqnice!("foo:test\n", cmd.arg("--no-ignore-vcs").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/70 -rgtest!(f70_smart_case, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("-S").arg("sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/89 -rgtest!(f89_files_with_matches, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - cmd.arg("--null").arg("--files-with-matches").arg("Sherlock"); - eqnice!("sherlock\x00", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/89 -rgtest!(f89_files_without_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "foo"); - - cmd.arg("--null").arg("--files-without-match").arg("Sherlock"); - eqnice!("file.py\x00", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/89 -rgtest!(f89_count, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - cmd.arg("--null").arg("--count").arg("Sherlock"); - eqnice!("sherlock\x002\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/89 -rgtest!(f89_files, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - eqnice!("sherlock\x00", cmd.arg("--null").arg("--files").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/89 -rgtest!(f89_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock\x00For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock\x00Holmeses, success in the province of detective work must always -sherlock\x00be, to a very large extent, the result of luck. Sherlock Holmes -sherlock\x00can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.arg("--null").arg("-C1").arg("Sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/109 -rgtest!(f109_max_depth, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("one"); - dir.create("one/pass", "far"); - dir.create_dir("one/too"); - dir.create("one/too/many", "far"); - - cmd.arg("--maxdepth").arg("2").arg("far"); - eqnice!("one/pass:far\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/124 -rgtest!(f109_case_sensitive_part1, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "tEsT"); - - cmd.arg("--smart-case").arg("--case-sensitive").arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/124 -rgtest!(f109_case_sensitive_part2, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "tEsT"); - cmd.arg("--ignore-case").arg("--case-sensitive").arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/129 -rgtest!(f129_matches, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\ntest abcdefghijklmnopqrstuvwxyz test"); - - let expected = "foo:test\nfoo:[Omitted long matching line]\n"; - eqnice!(expected, cmd.arg("-M26").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/129 -rgtest!(f129_context, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\nabcdefghijklmnopqrstuvwxyz"); - - let expected = "foo:test\nfoo-[Omitted long context line]\n"; - eqnice!(expected, cmd.arg("-M20").arg("-C1").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/129 -rgtest!(f129_replace, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\ntest abcdefghijklmnopqrstuvwxyz test"); - - let expected = "foo:foo\nfoo:[Omitted long line with 2 matches]\n"; - eqnice!(expected, cmd.arg("-M26").arg("-rfoo").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/159 -rgtest!(f159_max_count, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\ntest"); - - eqnice!("foo:test\n", cmd.arg("-m1").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/159 -rgtest!(f159_max_count_zero, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\ntest"); - - cmd.arg("-m0").arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/196 -rgtest!(f196_persistent_config, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("sherlock").arg("sherlock"); - - // Make sure we get no matches by default. - cmd.assert_err(); - - // Now add our config file, and make sure it impacts ripgrep. - dir.create(".ripgreprc", "--ignore-case"); - cmd.cmd().env("RIPGREP_CONFIG_PATH", ".ripgreprc"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/243 -rgtest!(f243_column_line, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test"); - - eqnice!("foo:1:1:test\n", cmd.arg("--column").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/263 -rgtest!(f263_sort_files, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test"); - dir.create("abc", "test"); - dir.create("zoo", "test"); - dir.create("bar", "test"); - - let expected = "abc:test\nbar:test\nfoo:test\nzoo:test\n"; - eqnice!(expected, cmd.arg("--sort-files").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/275 -rgtest!(f275_pathsep, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo"); - dir.create("foo/bar", "test"); - - cmd.arg("test").arg("--path-separator").arg("Z"); - eqnice!("fooZbar:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/362 -rgtest!(f362_dfa_size_limit, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - // This should fall back to the nfa engine but should still produce the - // expected result. - cmd.arg("--dfa-size-limit").arg("10").arg(r"For\s").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/362 -rgtest!(f362_exceeds_regex_size_limit, |dir: Dir, mut cmd: TestCommand| { - // --regex-size-limit doesn't apply to PCRE2. - if dir.is_pcre2() { - return; - } - cmd.arg("--regex-size-limit").arg("10K").arg(r"[0-9]\w+").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/362 -#[cfg(target_pointer_width = "32")] -rgtest!( - f362_u64_to_narrow_usize_overflow, - |dir: Dir, mut cmd: TestCommand| { - // --dfa-size-limit doesn't apply to PCRE2. - if dir.is_pcre2() { - return; - } - dir.create_size("foo", 1000000); - - // 2^35 * 2^20 is ok for u64, but not for usize - cmd.arg("--dfa-size-limit").arg("34359738368M").arg("--files"); - cmd.assert_err(); - } -); - -// See: https://github.com/BurntSushi/ripgrep/issues/411 -rgtest!( - f411_single_threaded_search_stats, - |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let lines = cmd.arg("--stats").arg("Sherlock").stdout(); - assert!(lines.contains("2 matched lines")); - assert!(lines.contains("1 files contained matches")); - assert!(lines.contains("1 files searched")); - assert!(lines.contains("seconds")); - } -); - -rgtest!(f411_parallel_search_stats, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock_1", SHERLOCK); - dir.create("sherlock_2", SHERLOCK); - - let lines = cmd.arg("--stats").arg("Sherlock").stdout(); - assert!(lines.contains("4 matched lines")); - assert!(lines.contains("2 files contained matches")); - assert!(lines.contains("2 files searched")); - assert!(lines.contains("seconds")); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/416 -rgtest!(f416_crlf, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK_CRLF); - cmd.arg("--crlf").arg(r"Sherlock$").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock\r -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/416 -rgtest!(f416_crlf_multiline, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK_CRLF); - cmd.arg("--crlf").arg("-U").arg(r"Sherlock$").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock\r -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/416 -rgtest!(f416_crlf_only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK_CRLF); - cmd.arg("--crlf").arg("-o").arg(r"Sherlock$").arg("sherlock"); - - let expected = "\ -Sherlock\r -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/419 -rgtest!(f419_zero_as_shortcut_for_null, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - cmd.arg("-0").arg("--count").arg("Sherlock"); - eqnice!("sherlock\x002\n", cmd.stdout()); -}); - -rgtest!(f740_passthru, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "\nfoo\nbar\nfoobar\n\nbaz\n"); - dir.create("patterns", "foo\nbar\n"); - - // We can't assume that the way colour specs are translated to ANSI - // sequences will remain stable, and --replace doesn't currently work with - // pass-through, so for now we don't actually test the match sub-strings - let common_args = &["-n", "--passthru"]; - let foo_expected = "\ -1- -2:foo -3-bar -4:foobar -5- -6-baz -"; - - // With single pattern - cmd.args(common_args).arg("foo").arg("file"); - eqnice!(foo_expected, cmd.stdout()); - - let foo_bar_expected = "\ -1- -2:foo -3:bar -4:foobar -5- -6-baz -"; - - // With multiple -e patterns - let mut cmd = dir.command(); - cmd.args(common_args); - cmd.args(&["-e", "foo", "-e", "bar", "file"]); - eqnice!(foo_bar_expected, cmd.stdout()); - - // With multiple -f patterns - let mut cmd = dir.command(); - cmd.args(common_args); - cmd.args(&["-f", "patterns", "file"]); - eqnice!(foo_bar_expected, cmd.stdout()); - - // -c should override - let mut cmd = dir.command(); - cmd.args(common_args); - cmd.args(&["-c", "foo", "file"]); - eqnice!("2\n", cmd.stdout()); - - let only_foo_expected = "\ -1- -2:foo -3-bar -4:foo -5- -6-baz -"; - - // -o should work - let mut cmd = dir.command(); - cmd.args(common_args); - cmd.args(&["-o", "foo", "file"]); - eqnice!(only_foo_expected, cmd.stdout()); - - let replace_foo_expected = "\ -1- -2:wat -3-bar -4:watbar -5- -6-baz -"; - - // -r should work - let mut cmd = dir.command(); - cmd.args(common_args); - cmd.args(&["-r", "wat", "foo", "file"]); - eqnice!(replace_foo_expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/948 -rgtest!(f948_exit_code_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("."); - - cmd.assert_exit_code(0); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/948 -rgtest!(f948_exit_code_no_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("NADA"); - - cmd.assert_exit_code(1); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/948 -rgtest!(f948_exit_code_error, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("*"); - - cmd.assert_exit_code(2); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/917 -rgtest!(f917_trim, |dir: Dir, mut cmd: TestCommand| { - const SHERLOCK: &'static str = "\ -zzz - For the Doctor Watsons of this world, as opposed to the Sherlock - Holmeses, success in the province of detective work must always -\tbe, to a very large extent, the result of luck. Sherlock Holmes - can extract a clew from a wisp of straw or a flake of cigar ash; -but Doctor Watson has to have it taken out for him and dusted, - and exhibited clearly, with a label attached. -"; - dir.create("sherlock", SHERLOCK); - cmd.args(&["-n", "-B1", "-A2", "--trim", "Holmeses", "sherlock"]); - - let expected = "\ -2-For the Doctor Watsons of this world, as opposed to the Sherlock -3:Holmeses, success in the province of detective work must always -4-be, to a very large extent, the result of luck. Sherlock Holmes -5-can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/917 -// -// This is like f917_trim, except this tests that trimming occurs even when the -// whitespace is part of a match. -rgtest!(f917_trim_match, |dir: Dir, mut cmd: TestCommand| { - const SHERLOCK: &'static str = "\ -zzz - For the Doctor Watsons of this world, as opposed to the Sherlock - Holmeses, success in the province of detective work must always -\tbe, to a very large extent, the result of luck. Sherlock Holmes - can extract a clew from a wisp of straw or a flake of cigar ash; -but Doctor Watson has to have it taken out for him and dusted, - and exhibited clearly, with a label attached. -"; - dir.create("sherlock", SHERLOCK); - cmd.args(&["-n", "-B1", "-A2", "--trim", r"\s+Holmeses", "sherlock"]); - - let expected = "\ -2-For the Doctor Watsons of this world, as opposed to the Sherlock -3:Holmeses, success in the province of detective work must always -4-be, to a very large extent, the result of luck. Sherlock Holmes -5-can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/993 -rgtest!(f993_null_data, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\x00bar\x00\x00\x00baz\x00"); - cmd.arg("--null-data").arg(r".+").arg("test"); - - // If we just used -a instead of --null-data, then the result would include - // all NUL bytes. - let expected = "foo\x00bar\x00baz\x00"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1078 -// -// N.B. There are many more tests in the grep-printer crate. -rgtest!(f1078_max_columns_preview1, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-M46", - "--max-columns-preview", - "exhibited|dusted|has to have it", - ]); - - let expected = "\ -sherlock:but Doctor Watson has to have it taken out for [... omitted end of long line] -sherlock:and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(f1078_max_columns_preview2, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-M43", - "--max-columns-preview", - // Doing a replacement forces ripgrep to show the number of remaining - // matches. Normally, this happens by default when printing a tty with - // colors. - "-rxxx", - "exhibited|dusted|has to have it", - ]); - - let expected = "\ -sherlock:but Doctor Watson xxx taken out for him and [... 1 more match] -sherlock:and xxx clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1138 -rgtest!(f1138_no_ignore_dot, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "foo"); - dir.create(".ignore", "bar"); - dir.create(".fzf-ignore", "quux"); - dir.create("foo", ""); - dir.create("bar", ""); - dir.create("quux", ""); - - cmd.arg("--sort").arg("path").arg("--files"); - eqnice!("quux\n", cmd.stdout()); - eqnice!("bar\nquux\n", cmd.arg("--no-ignore-dot").stdout()); - eqnice!("bar\n", cmd.arg("--ignore-file").arg(".fzf-ignore").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1155 -rgtest!(f1155_auto_hybrid_regex, |dir: Dir, mut cmd: TestCommand| { - // No sense in testing a hybrid regex engine with only one engine! - if !dir.is_pcre2() { - return; - } - - dir.create("sherlock", SHERLOCK); - cmd.arg("--no-pcre2").arg("--auto-hybrid-regex").arg(r"(?<=the )Sherlock"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1207 -// -// Tests if without encoding 'none' flag null bytes are consumed by automatic -// encoding detection. -rgtest!(f1207_auto_encoding, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("foo", b"\xFF\xFE\x00\x62"); - cmd.arg("-a").arg("\\x00").arg("foo"); - cmd.assert_exit_code(1); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1207 -// -// Tests if encoding 'none' flag does treat file as raw bytes -rgtest!(f1207_ignore_encoding, |dir: Dir, mut cmd: TestCommand| { - // PCRE2 chokes on this test because it can't search invalid non-UTF-8 - // and the point of this test is to search raw UTF-16. - if dir.is_pcre2() { - return; - } - - dir.create_bytes("foo", b"\xFF\xFE\x00\x62"); - cmd.arg("--encoding").arg("none").arg("-a").arg("\\x00").arg("foo"); - eqnice!("\u{FFFD}\u{FFFD}\x00b\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1414 -rgtest!(f1414_no_require_git, |dir: Dir, mut cmd: TestCommand| { - dir.create(".gitignore", "foo"); - dir.create("foo", ""); - dir.create("bar", ""); - - let stdout = cmd.args(&["--sort", "path", "--files"]).stdout(); - eqnice!("bar\nfoo\n", stdout); - - let stdout = - cmd.args(&["--sort", "path", "--files", "--no-require-git"]).stdout(); - eqnice!("bar\n", stdout); - - let stdout = cmd - .args(&[ - "--sort", - "path", - "--files", - "--no-require-git", - "--require-git", - ]) - .stdout(); - eqnice!("bar\nfoo\n", stdout); -}); - -// See: https://github.com/BurntSushi/ripgrep/pull/1420 -rgtest!(f1420_no_ignore_exclude, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git/info"); - dir.create(".git/info/exclude", "foo"); - dir.create("bar", ""); - dir.create("foo", ""); - - cmd.arg("--sort").arg("path").arg("--files"); - eqnice!("bar\n", cmd.stdout()); - eqnice!("bar\nfoo\n", cmd.arg("--no-ignore-exclude").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/pull/1466 -rgtest!(f1466_no_ignore_files, |dir: Dir, mut cmd: TestCommand| { - dir.create(".myignore", "bar"); - dir.create("bar", ""); - dir.create("foo", ""); - - // Test that --no-ignore-files disables --ignore-file. - // And that --ignore-files overrides --no-ignore-files. - cmd.arg("--sort").arg("path").arg("--files"); - eqnice!("bar\nfoo\n", cmd.stdout()); - eqnice!("foo\n", cmd.arg("--ignore-file").arg(".myignore").stdout()); - eqnice!("bar\nfoo\n", cmd.arg("--no-ignore-files").stdout()); - eqnice!("foo\n", cmd.arg("--ignore-files").stdout()); - - // Test that the -u flag does not disable --ignore-file. - let mut cmd = dir.command(); - cmd.arg("--sort").arg("path").arg("--files"); - cmd.arg("--ignore-file").arg(".myignore"); - eqnice!("foo\n", cmd.stdout()); - eqnice!("foo\n", cmd.arg("-u").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1404 -rgtest!(f1404_nothing_searched_warning, |dir: Dir, mut cmd: TestCommand| { - dir.create(".ignore", "ignored-dir/**"); - dir.create_dir("ignored-dir"); - dir.create("ignored-dir/foo", "needle"); - - // Test that, if ripgrep searches only ignored folders/files, then there - // is a non-zero exit code. - cmd.arg("needle"); - cmd.assert_err(); - - // Test that we actually get an error message that we expect. - let output = cmd.cmd().output().unwrap(); - let stderr = String::from_utf8_lossy(&output.stderr); - let expected = "\ - No files were searched, which means ripgrep probably applied \ - a filter you didn't expect.\n\ - Running with --debug will show why files are being skipped.\n\ - "; - eqnice!(expected, stderr); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1404 -rgtest!(f1404_nothing_searched_ignored, |dir: Dir, mut cmd: TestCommand| { - dir.create(".ignore", "ignored-dir/**"); - dir.create_dir("ignored-dir"); - dir.create("ignored-dir/foo", "needle"); - - // Test that, if ripgrep searches only ignored folders/files, then there - // is a non-zero exit code. - cmd.arg("--no-messages").arg("needle"); - cmd.assert_err(); - - // But since --no-messages is given, there should not be any error message - // printed. - let output = cmd.cmd().output().unwrap(); - let stderr = String::from_utf8_lossy(&output.stderr); - let expected = ""; - eqnice!(expected, stderr); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1842 -rgtest!(f1842_field_context_separator, |dir: Dir, _: TestCommand| { - dir.create("sherlock", SHERLOCK); - - // Test the default. - let base = &["-n", "-A1", "Doctor Watsons", "sherlock"]; - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2-Holmeses, success in the province of detective work must always -"; - eqnice!(expected, dir.command().args(base).stdout()); - - // Test that it can be overridden. - let mut args = vec!["--field-context-separator", "!"]; - args.extend(base); - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2!Holmeses, success in the province of detective work must always -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that it can use multiple bytes. - let mut args = vec!["--field-context-separator", "!!"]; - args.extend(base); - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2!!Holmeses, success in the province of detective work must always -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that unescaping works. - let mut args = vec!["--field-context-separator", r"\x7F"]; - args.extend(base); - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2\x7FHolmeses, success in the province of detective work must always -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that an empty separator is OK. - let mut args = vec!["--field-context-separator", r""]; - args.extend(base); - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2Holmeses, success in the province of detective work must always -"; - eqnice!(expected, dir.command().args(&args).stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1842 -rgtest!(f1842_field_match_separator, |dir: Dir, _: TestCommand| { - dir.create("sherlock", SHERLOCK); - - // Test the default. - let base = &["-n", "Doctor Watsons", "sherlock"]; - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, dir.command().args(base).stdout()); - - // Test that it can be overridden. - let mut args = vec!["--field-match-separator", "!"]; - args.extend(base); - let expected = "\ -1!For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that it can use multiple bytes. - let mut args = vec!["--field-match-separator", "!!"]; - args.extend(base); - let expected = "\ -1!!For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that unescaping works. - let mut args = vec!["--field-match-separator", r"\x7F"]; - args.extend(base); - let expected = "\ -1\x7FFor the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, dir.command().args(&args).stdout()); - - // Test that an empty separator is OK. - let mut args = vec!["--field-match-separator", r""]; - args.extend(base); - let expected = "\ -1For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, dir.command().args(&args).stdout()); -}); - -rgtest!(no_context_sep, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&["-A1", "--no-context-separator", "foo", "test"]); - eqnice!("foo\nctx\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(no_context_sep_overrides, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&[ - "-A1", - "--context-separator", - "AAA", - "--no-context-separator", - "foo", - "test", - ]); - eqnice!("foo\nctx\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(no_context_sep_overridden, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&[ - "-A1", - "--no-context-separator", - "--context-separator", - "AAA", - "foo", - "test", - ]); - eqnice!("foo\nctx\nAAA\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(context_sep, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&["-A1", "--context-separator", "AAA", "foo", "test"]); - eqnice!("foo\nctx\nAAA\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(context_sep_default, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&["-A1", "foo", "test"]); - eqnice!("foo\nctx\n--\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(context_sep_empty, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); - cmd.args(&["-A1", "--context-separator", "", "foo", "test"]); - eqnice!("foo\nctx\n\nfoo\nctx\n", cmd.stdout()); -}); - -rgtest!(no_unicode, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "δ"); - cmd.arg("-i").arg("--no-unicode").arg("Δ").assert_err(); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/hay.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/hay.rs deleted file mode 100644 index 15a53b150..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/hay.rs +++ /dev/null @@ -1,17 +0,0 @@ -pub const SHERLOCK: &'static str = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always -be, to a very large extent, the result of luck. Sherlock Holmes -can extract a clew from a wisp of straw or a flake of cigar ash; -but Doctor Watson has to have it taken out for him and dusted, -and exhibited clearly, with a label attached. -"; - -pub const SHERLOCK_CRLF: &'static str = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock\r -Holmeses, success in the province of detective work must always\r -be, to a very large extent, the result of luck. Sherlock Holmes\r -can extract a clew from a wisp of straw or a flake of cigar ash;\r -but Doctor Watson has to have it taken out for him and dusted,\r -and exhibited clearly, with a label attached.\r -"; diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/json.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/json.rs deleted file mode 100644 index ff0b5aae6..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/json.rs +++ /dev/null @@ -1,360 +0,0 @@ -use std::time; - -use serde_derive::Deserialize; -use serde_json as json; - -use crate::hay::{SHERLOCK, SHERLOCK_CRLF}; -use crate::util::{Dir, TestCommand}; - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -#[serde(tag = "type", content = "data")] -#[serde(rename_all = "snake_case")] -enum Message { - Begin(Begin), - End(End), - Match(Match), - Context(Context), - Summary(Summary), -} - -impl Message { - fn unwrap_begin(&self) -> Begin { - match *self { - Message::Begin(ref x) => x.clone(), - ref x => panic!("expected Message::Begin but got {:?}", x), - } - } - - fn unwrap_end(&self) -> End { - match *self { - Message::End(ref x) => x.clone(), - ref x => panic!("expected Message::End but got {:?}", x), - } - } - - fn unwrap_match(&self) -> Match { - match *self { - Message::Match(ref x) => x.clone(), - ref x => panic!("expected Message::Match but got {:?}", x), - } - } - - fn unwrap_context(&self) -> Context { - match *self { - Message::Context(ref x) => x.clone(), - ref x => panic!("expected Message::Context but got {:?}", x), - } - } - - fn unwrap_summary(&self) -> Summary { - match *self { - Message::Summary(ref x) => x.clone(), - ref x => panic!("expected Message::Summary but got {:?}", x), - } - } -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Begin { - path: Option, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct End { - path: Option, - binary_offset: Option, - stats: Stats, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Summary { - elapsed_total: Duration, - stats: Stats, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Match { - path: Option, - lines: Data, - line_number: Option, - absolute_offset: u64, - submatches: Vec, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Context { - path: Option, - lines: Data, - line_number: Option, - absolute_offset: u64, - submatches: Vec, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct SubMatch { - #[serde(rename = "match")] - m: Data, - start: usize, - end: usize, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -#[serde(untagged)] -enum Data { - Text { text: String }, - // This variant is used when the data isn't valid UTF-8. The bytes are - // base64 encoded, so using a String here is OK. - Bytes { bytes: String }, -} - -impl Data { - fn text(s: &str) -> Data { - Data::Text { text: s.to_string() } - } - fn bytes(s: &str) -> Data { - Data::Bytes { bytes: s.to_string() } - } -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Stats { - elapsed: Duration, - searches: u64, - searches_with_match: u64, - bytes_searched: u64, - bytes_printed: u64, - matched_lines: u64, - matches: u64, -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] -struct Duration { - #[serde(flatten)] - duration: time::Duration, - human: String, -} - -/// Decode JSON Lines into a Vec. If there was an error decoding, -/// this function panics. -fn json_decode(jsonlines: &str) -> Vec { - json::Deserializer::from_str(jsonlines) - .into_iter() - .collect::, _>>() - .unwrap() -} - -rgtest!(basic, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--json").arg("-B1").arg("Sherlock Holmes").arg("sherlock"); - - let msgs = json_decode(&cmd.stdout()); - - assert_eq!( - msgs[0].unwrap_begin(), - Begin { path: Some(Data::text("sherlock")) } - ); - assert_eq!( - msgs[1].unwrap_context(), - Context { - path: Some(Data::text("sherlock")), - lines: Data::text( - "Holmeses, success in the province of \ - detective work must always\n", - ), - line_number: Some(2), - absolute_offset: 65, - submatches: vec![], - } - ); - assert_eq!( - msgs[2].unwrap_match(), - Match { - path: Some(Data::text("sherlock")), - lines: Data::text( - "be, to a very large extent, the result of luck. \ - Sherlock Holmes\n", - ), - line_number: Some(3), - absolute_offset: 129, - submatches: vec![SubMatch { - m: Data::text("Sherlock Holmes"), - start: 48, - end: 63, - },], - } - ); - assert_eq!(msgs[3].unwrap_end().path, Some(Data::text("sherlock"))); - assert_eq!(msgs[3].unwrap_end().binary_offset, None); - assert_eq!(msgs[4].unwrap_summary().stats.searches_with_match, 1); - assert_eq!(msgs[4].unwrap_summary().stats.bytes_printed, 494); -}); - -#[cfg(unix)] -rgtest!(notutf8, |dir: Dir, mut cmd: TestCommand| { - use std::ffi::OsStr; - use std::os::unix::ffi::OsStrExt; - - // This test does not work with PCRE2 because PCRE2 does not support the - // `u` flag. - if dir.is_pcre2() { - return; - } - // macOS doesn't like this either... sigh. - if cfg!(target_os = "macos") { - return; - } - - let name = &b"foo\xFFbar"[..]; - let contents = &b"quux\xFFbaz"[..]; - - // APFS does not support creating files with invalid UTF-8 bytes, so just - // skip the test if we can't create our file. Presumably we don't need this - // check if we're already skipping it on macOS, but maybe other file - // systems won't like this test either? - if !dir.try_create_bytes(OsStr::from_bytes(name), contents).is_ok() { - return; - } - cmd.arg("--json").arg(r"(?-u)\xFF"); - - let msgs = json_decode(&cmd.stdout()); - - assert_eq!( - msgs[0].unwrap_begin(), - Begin { path: Some(Data::bytes("Zm9v/2Jhcg==")) } - ); - assert_eq!( - msgs[1].unwrap_match(), - Match { - path: Some(Data::bytes("Zm9v/2Jhcg==")), - lines: Data::bytes("cXV1eP9iYXo="), - line_number: Some(1), - absolute_offset: 0, - submatches: vec![SubMatch { - m: Data::bytes("/w=="), - start: 4, - end: 5, - },], - } - ); -}); - -rgtest!(notutf8_file, |dir: Dir, mut cmd: TestCommand| { - use std::ffi::OsStr; - - // This test does not work with PCRE2 because PCRE2 does not support the - // `u` flag. - if dir.is_pcre2() { - return; - } - - let name = "foo"; - let contents = &b"quux\xFFbaz"[..]; - - // APFS does not support creating files with invalid UTF-8 bytes, so just - // skip the test if we can't create our file. - if !dir.try_create_bytes(OsStr::new(name), contents).is_ok() { - return; - } - cmd.arg("--json").arg(r"(?-u)\xFF"); - - let msgs = json_decode(&cmd.stdout()); - - assert_eq!( - msgs[0].unwrap_begin(), - Begin { path: Some(Data::text("foo")) } - ); - assert_eq!( - msgs[1].unwrap_match(), - Match { - path: Some(Data::text("foo")), - lines: Data::bytes("cXV1eP9iYXo="), - line_number: Some(1), - absolute_offset: 0, - submatches: vec![SubMatch { - m: Data::bytes("/w=="), - start: 4, - end: 5, - },], - } - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/416 -// -// This test in particular checks that our match does _not_ include the `\r` -// even though the '$' may be rewritten as '(?:\r??$)' and could thus include -// `\r` in the match. -rgtest!(crlf, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK_CRLF); - cmd.arg("--json").arg("--crlf").arg(r"Sherlock$").arg("sherlock"); - - let msgs = json_decode(&cmd.stdout()); - - assert_eq!( - msgs[1].unwrap_match().submatches[0].clone(), - SubMatch { m: Data::text("Sherlock"), start: 56, end: 64 }, - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1095 -// -// This test checks that we don't drop the \r\n in a matching line when --crlf -// mode is enabled. -rgtest!(r1095_missing_crlf, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\r\n"); - - // Check without --crlf flag. - let msgs = json_decode(&cmd.arg("--json").arg("test").stdout()); - assert_eq!(msgs.len(), 4); - assert_eq!(msgs[1].unwrap_match().lines, Data::text("test\r\n")); - - // Now check with --crlf flag. - let msgs = json_decode(&cmd.arg("--crlf").stdout()); - assert_eq!(msgs.len(), 4); - assert_eq!(msgs[1].unwrap_match().lines, Data::text("test\r\n")); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1095 -// -// This test checks that we don't return empty submatches when matching a `\n` -// in CRLF mode. -rgtest!(r1095_crlf_empty_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test\r\n\n"); - - // Check without --crlf flag. - let msgs = json_decode(&cmd.arg("-U").arg("--json").arg("\n").stdout()); - assert_eq!(msgs.len(), 4); - - let m = msgs[1].unwrap_match(); - assert_eq!(m.lines, Data::text("test\r\n\n")); - assert_eq!(m.submatches[0].m, Data::text("\n")); - assert_eq!(m.submatches[1].m, Data::text("\n")); - - // Now check with --crlf flag. - let msgs = json_decode(&cmd.arg("--crlf").stdout()); - assert_eq!(msgs.len(), 4); - - let m = msgs[1].unwrap_match(); - assert_eq!(m.lines, Data::text("test\r\n\n")); - assert_eq!(m.submatches[0].m, Data::text("\n")); - assert_eq!(m.submatches[1].m, Data::text("\n")); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1412 -rgtest!(r1412_look_behind_match_missing, |dir: Dir, mut cmd: TestCommand| { - // Only PCRE2 supports look-around. - if !dir.is_pcre2() { - return; - } - - dir.create("test", "foo\nbar\n"); - - let msgs = json_decode( - &cmd.arg("-U").arg("--json").arg(r"(?<=foo\n)bar").stdout(), - ); - assert_eq!(msgs.len(), 4); - - let m = msgs[1].unwrap_match(); - assert_eq!(m.lines, Data::text("bar\n")); - assert_eq!(m.submatches.len(), 1); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/macros.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/macros.rs deleted file mode 100644 index 7e5958c37..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/macros.rs +++ /dev/null @@ -1,61 +0,0 @@ -#[macro_export] -macro_rules! rgtest { - ($name:ident, $fun:expr) => { - #[test] - fn $name() { - let (dir, cmd) = crate::util::setup(stringify!($name)); - $fun(dir, cmd); - - if cfg!(feature = "pcre2") { - let (dir, cmd) = crate::util::setup_pcre2(stringify!($name)); - $fun(dir, cmd); - } - } - }; -} - -#[macro_export] -macro_rules! eqnice { - ($expected:expr, $got:expr) => { - let expected = &*$expected; - let got = &*$got; - if expected != got { - panic!(" -printed outputs differ! - -expected: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -{} -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -got: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -{} -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -", expected, got); - } - } -} - -#[macro_export] -macro_rules! eqnice_repr { - ($expected:expr, $got:expr) => { - let expected = &*$expected; - let got = &*$got; - if expected != got { - panic!(" -printed outputs differ! - -expected: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -{:?} -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -got: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -{:?} -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -", expected, got); - } - } -} diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/misc.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/misc.rs deleted file mode 100644 index c892da5b1..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/misc.rs +++ /dev/null @@ -1,1067 +0,0 @@ -use crate::hay::SHERLOCK; -use crate::util::{cmd_exists, sort_lines, Dir, TestCommand}; - -// This file contains "miscellaneous" tests that were either written before -// features were tracked more explicitly, or were simply written without -// linking them to a specific issue number. We should try to minimize the -// addition of more tests in this file and instead add them to either the -// regression test suite or the feature test suite (found in regression.rs and -// feature.rs, respectively). - -rgtest!(single_file, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("Sherlock").arg("sherlock").stdout()); -}); - -rgtest!(dir, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("Sherlock").stdout()); -}); - -rgtest!(line_numbers, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -3:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.arg("-n").arg("Sherlock").arg("sherlock").stdout()); -}); - -rgtest!(columns, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--column").arg("Sherlock").arg("sherlock"); - - let expected = "\ -1:57:For the Doctor Watsons of this world, as opposed to the Sherlock -3:49:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(with_filename, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-H").arg("Sherlock").arg("sherlock"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(with_heading, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - // This forces the issue since --with-filename is disabled by default - // when searching one file. - "--with-filename", - "--heading", - "Sherlock", - "sherlock", - ]); - - let expected = "\ -sherlock -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(with_heading_default, |dir: Dir, mut cmd: TestCommand| { - // Search two or more and get --with-filename enabled by default. - // Use -j1 to get deterministic results. - dir.create("sherlock", SHERLOCK); - dir.create("foo", "Sherlock Holmes lives on Baker Street."); - cmd.arg("-j1").arg("--heading").arg("Sherlock"); - - let expected = "\ -foo -Sherlock Holmes lives on Baker Street. - -sherlock -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(sort_lines(expected), sort_lines(&cmd.stdout())); -}); - -rgtest!(inverted, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-v").arg("Sherlock").arg("sherlock"); - - let expected = "\ -Holmeses, success in the province of detective work must always -can extract a clew from a wisp of straw or a flake of cigar ash; -but Doctor Watson has to have it taken out for him and dusted, -and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(inverted_line_numbers, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-n").arg("-v").arg("Sherlock").arg("sherlock"); - - let expected = "\ -2:Holmeses, success in the province of detective work must always -4:can extract a clew from a wisp of straw or a flake of cigar ash; -5:but Doctor Watson has to have it taken out for him and dusted, -6:and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(case_insensitive, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-i").arg("sherlock").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(word, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-w").arg("as").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(line, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-x", - "Watson|and exhibited clearly, with a label attached.", - "sherlock", - ]); - - let expected = "\ -and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(literal, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file", "blib\n()\nblab\n"); - cmd.arg("-F").arg("()").arg("file"); - - eqnice!("()\n", cmd.stdout()); -}); - -rgtest!(quiet, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-q").arg("Sherlock").arg("sherlock"); - - assert!(cmd.stdout().is_empty()); -}); - -rgtest!(replace, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-r").arg("FooBar").arg("Sherlock").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the FooBar -be, to a very large extent, the result of luck. FooBar Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(replace_groups, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&["-r", "$2, $1", "([A-Z][a-z]+) ([A-Z][a-z]+)", "sherlock"]); - - let expected = "\ -For the Watsons, Doctor of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Holmes, Sherlock -but Watson, Doctor has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(replace_named_groups, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-r", - "$last, $first", - "(?P[A-Z][a-z]+) (?P[A-Z][a-z]+)", - "sherlock", - ]); - - let expected = "\ -For the Watsons, Doctor of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Holmes, Sherlock -but Watson, Doctor has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(replace_with_only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-o").arg("-r").arg("$1").arg(r"of (\w+)").arg("sherlock"); - - let expected = "\ -this -detective -luck -straw -cigar -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(file_types, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - cmd.arg("-t").arg("rust").arg("Sherlock"); - - eqnice!("file.rs:Sherlock\n", cmd.stdout()); -}); - -rgtest!(file_types_all, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - cmd.arg("-t").arg("all").arg("Sherlock"); - - eqnice!("file.py:Sherlock\n", cmd.stdout()); -}); - -rgtest!(file_types_negate, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.remove("sherlock"); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - cmd.arg("-T").arg("rust").arg("Sherlock"); - - eqnice!("file.py:Sherlock\n", cmd.stdout()); -}); - -rgtest!(file_types_negate_all, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - cmd.arg("-T").arg("all").arg("Sherlock"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(file_type_clear, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - cmd.arg("--type-clear").arg("rust").arg("-t").arg("rust").arg("Sherlock"); - - cmd.assert_non_empty_stderr(); -}); - -rgtest!(file_type_add, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - dir.create("file.wat", "Sherlock"); - cmd.args(&["--type-add", "wat:*.wat", "-t", "wat", "Sherlock"]); - - eqnice!("file.wat:Sherlock\n", cmd.stdout()); -}); - -rgtest!(file_type_add_compose, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - dir.create("file.wat", "Sherlock"); - cmd.args(&[ - "--type-add", - "wat:*.wat", - "--type-add", - "combo:include:wat,py", - "-t", - "combo", - "Sherlock", - ]); - - let expected = "\ -file.py:Sherlock -file.wat:Sherlock -"; - eqnice!(expected, sort_lines(&cmd.stdout())); -}); - -rgtest!(glob, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - cmd.arg("-g").arg("*.rs").arg("Sherlock"); - - eqnice!("file.rs:Sherlock\n", cmd.stdout()); -}); - -rgtest!(glob_negate, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.remove("sherlock"); - dir.create("file.py", "Sherlock"); - dir.create("file.rs", "Sherlock"); - cmd.arg("-g").arg("!*.rs").arg("Sherlock"); - - eqnice!("file.py:Sherlock\n", cmd.stdout()); -}); - -rgtest!(glob_case_insensitive, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.HTML", "Sherlock"); - cmd.arg("--iglob").arg("*.html").arg("Sherlock"); - - eqnice!("file.HTML:Sherlock\n", cmd.stdout()); -}); - -rgtest!(glob_case_sensitive, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file1.HTML", "Sherlock"); - dir.create("file2.html", "Sherlock"); - cmd.arg("--glob").arg("*.html").arg("Sherlock"); - - eqnice!("file2.html:Sherlock\n", cmd.stdout()); -}); - -rgtest!(glob_always_case_insensitive, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.HTML", "Sherlock"); - cmd.args(&["--glob-case-insensitive", "--glob", "*.html", "Sherlock"]); - - eqnice!("file.HTML:Sherlock\n", cmd.stdout()); -}); - -rgtest!(byte_offset_only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-b").arg("-o").arg("Sherlock"); - - let expected = "\ -sherlock:56:Sherlock -sherlock:177:Sherlock -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(count, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--count").arg("Sherlock"); - - let expected = "sherlock:2\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(count_matches, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--count-matches").arg("the"); - - let expected = "sherlock:4\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(count_matches_inverted, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--count-matches").arg("--invert-match").arg("Sherlock"); - - let expected = "sherlock:4\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(count_matches_via_only, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--count").arg("--only-matching").arg("the"); - - let expected = "sherlock:4\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(include_zero, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&["--count", "--include-zero", "nada"]); - cmd.assert_err(); - - let output = cmd.cmd().output().unwrap(); - let stdout = String::from_utf8_lossy(&output.stdout); - let expected = "sherlock:0\n"; - - eqnice!(expected, stdout); -}); - -rgtest!(include_zero_override, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&["--count", "--include-zero", "--no-include-zero", "nada"]); - cmd.assert_err(); - - let output = cmd.cmd().output().unwrap(); - let stdout = String::from_utf8_lossy(&output.stdout); - assert!(stdout.is_empty()); -}); - -rgtest!(files_with_matches, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--files-with-matches").arg("Sherlock"); - - let expected = "sherlock\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(files_without_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("file.py", "foo"); - cmd.arg("--files-without-match").arg("Sherlock"); - - let expected = "file.py\n"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(after_context, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-A").arg("1").arg("Sherlock").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always -be, to a very large extent, the result of luck. Sherlock Holmes -can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(after_context_line_numbers, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-A").arg("1").arg("-n").arg("Sherlock").arg("sherlock"); - - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2-Holmeses, success in the province of detective work must always -3:be, to a very large extent, the result of luck. Sherlock Holmes -4-can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(before_context, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-B").arg("1").arg("Sherlock").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(before_context_line_numbers, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-B").arg("1").arg("-n").arg("Sherlock").arg("sherlock"); - - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2-Holmeses, success in the province of detective work must always -3:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(context, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-C").arg("1").arg("world|attached").arg("sherlock"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always --- -but Doctor Watson has to have it taken out for him and dusted, -and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(context_line_numbers, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("-C").arg("1").arg("-n").arg("world|attached").arg("sherlock"); - - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2-Holmeses, success in the province of detective work must always --- -5-but Doctor Watson has to have it taken out for him and dusted, -6:and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(max_filesize_parse_error_length, |_: Dir, mut cmd: TestCommand| { - cmd.arg("--max-filesize").arg("44444444444444444444"); - cmd.assert_non_empty_stderr(); -}); - -rgtest!(max_filesize_parse_error_suffix, |_: Dir, mut cmd: TestCommand| { - cmd.arg("--max-filesize").arg("45k"); - cmd.assert_non_empty_stderr(); -}); - -rgtest!(max_filesize_parse_no_suffix, |dir: Dir, mut cmd: TestCommand| { - dir.create_size("foo", 40); - dir.create_size("bar", 60); - cmd.arg("--max-filesize").arg("50").arg("--files"); - - eqnice!("foo\n", cmd.stdout()); -}); - -rgtest!(max_filesize_parse_k_suffix, |dir: Dir, mut cmd: TestCommand| { - dir.create_size("foo", 3048); - dir.create_size("bar", 4100); - cmd.arg("--max-filesize").arg("4K").arg("--files"); - - eqnice!("foo\n", cmd.stdout()); -}); - -rgtest!(max_filesize_parse_m_suffix, |dir: Dir, mut cmd: TestCommand| { - dir.create_size("foo", 1000000); - dir.create_size("bar", 1400000); - cmd.arg("--max-filesize").arg("1M").arg("--files"); - - eqnice!("foo\n", cmd.stdout()); -}); - -rgtest!(max_filesize_suffix_overflow, |dir: Dir, mut cmd: TestCommand| { - dir.create_size("foo", 1000000); - - // 2^35 * 2^30 would otherwise overflow - cmd.arg("--max-filesize").arg("34359738368G").arg("--files"); - cmd.assert_non_empty_stderr(); -}); - -rgtest!(ignore_hidden, |dir: Dir, mut cmd: TestCommand| { - dir.create(".sherlock", SHERLOCK); - cmd.arg("Sherlock").assert_err(); -}); - -rgtest!(no_ignore_hidden, |dir: Dir, mut cmd: TestCommand| { - dir.create(".sherlock", SHERLOCK); - cmd.arg("--hidden").arg("Sherlock"); - - let expected = "\ -.sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -.sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(ignore_git, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create_dir(".git"); - dir.create(".gitignore", "sherlock\n"); - cmd.arg("Sherlock"); - - cmd.assert_err(); -}); - -rgtest!(ignore_generic, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create(".ignore", "sherlock\n"); - cmd.arg("Sherlock"); - - cmd.assert_err(); -}); - -rgtest!(ignore_ripgrep, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create(".rgignore", "sherlock\n"); - cmd.arg("Sherlock"); - - cmd.assert_err(); -}); - -rgtest!(no_ignore, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create(".gitignore", "sherlock\n"); - cmd.arg("--no-ignore").arg("Sherlock"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(ignore_git_parent, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "sherlock\n"); - dir.create_dir("foo"); - dir.create("foo/sherlock", SHERLOCK); - cmd.arg("Sherlock"); - - // Even though we search in foo/, which has no .gitignore, ripgrep will - // traverse parent directories and respect the gitignore files found. - cmd.current_dir(dir.path().join("foo")); - cmd.assert_err(); -}); - -rgtest!(ignore_git_parent_stop, |dir: Dir, mut cmd: TestCommand| { - // This tests that searching parent directories for .gitignore files stops - // after it sees a .git directory. To test this, we create this directory - // hierarchy: - // - // .gitignore (contains `sherlock`) - // foo/ - // .git/ - // bar/ - // sherlock - // - // And we perform the search inside `foo/bar/`. ripgrep will stop looking - // for .gitignore files after it sees `foo/.git/`, and therefore not - // respect the top-level `.gitignore` containing `sherlock`. - dir.create(".gitignore", "sherlock\n"); - dir.create_dir("foo"); - dir.create_dir("foo/.git"); - dir.create_dir("foo/bar"); - dir.create("foo/bar/sherlock", SHERLOCK); - cmd.arg("Sherlock"); - cmd.current_dir(dir.path().join("foo").join("bar")); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -// Like ignore_git_parent_stop, but with a .git file instead of a .git -// directory. -rgtest!(ignore_git_parent_stop_file, |dir: Dir, mut cmd: TestCommand| { - // This tests that searching parent directories for .gitignore files stops - // after it sees a .git *file*. A .git file is used for submodules. To test - // this, we create this directory hierarchy: - // - // .gitignore (contains `sherlock`) - // foo/ - // .git - // bar/ - // sherlock - // - // And we perform the search inside `foo/bar/`. ripgrep will stop looking - // for .gitignore files after it sees `foo/.git`, and therefore not - // respect the top-level `.gitignore` containing `sherlock`. - dir.create(".gitignore", "sherlock\n"); - dir.create_dir("foo"); - dir.create("foo/.git", ""); - dir.create_dir("foo/bar"); - dir.create("foo/bar/sherlock", SHERLOCK); - cmd.arg("Sherlock"); - cmd.current_dir(dir.path().join("foo").join("bar")); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(ignore_ripgrep_parent_no_stop, |dir: Dir, mut cmd: TestCommand| { - // This is like the `ignore_git_parent_stop` test, except it checks that - // ripgrep *doesn't* stop checking for .rgignore files. - dir.create(".rgignore", "sherlock\n"); - dir.create_dir("foo"); - dir.create_dir("foo/.git"); - dir.create_dir("foo/bar"); - dir.create("foo/bar/sherlock", SHERLOCK); - cmd.arg("Sherlock"); - cmd.current_dir(dir.path().join("foo").join("bar")); - - // The top-level .rgignore applies. - cmd.assert_err(); -}); - -rgtest!(no_parent_ignore_git, |dir: Dir, mut cmd: TestCommand| { - // Set up a directory hierarchy like this: - // - // .git/ - // .gitignore - // foo/ - // .gitignore - // sherlock - // watson - // - // Where `.gitignore` contains `sherlock` and `foo/.gitignore` contains - // `watson`. - // - // Now *do the search* from the foo directory. By default, ripgrep will - // search parent directories for .gitignore files. The --no-ignore-parent - // flag should prevent that. At the same time, the `foo/.gitignore` file - // will still be respected (since the search is happening in `foo/`). - // - // In other words, we should only see results from `sherlock`, not from - // `watson`. - dir.create_dir(".git"); - dir.create(".gitignore", "sherlock\n"); - dir.create_dir("foo"); - dir.create("foo/.gitignore", "watson\n"); - dir.create("foo/sherlock", SHERLOCK); - dir.create("foo/watson", SHERLOCK); - cmd.arg("--no-ignore-parent").arg("Sherlock"); - cmd.current_dir(dir.path().join("foo")); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(symlink_nofollow, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo"); - dir.create_dir("foo/bar"); - dir.link_dir("foo/baz", "foo/bar/baz"); - dir.create_dir("foo/baz"); - dir.create("foo/baz/sherlock", SHERLOCK); - cmd.arg("Sherlock"); - cmd.current_dir(dir.path().join("foo/bar")); - - cmd.assert_err(); -}); - -#[cfg(not(windows))] -rgtest!(symlink_follow, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo"); - dir.create_dir("foo/bar"); - dir.create_dir("foo/baz"); - dir.create("foo/baz/sherlock", SHERLOCK); - dir.link_dir("foo/baz", "foo/bar/baz"); - cmd.arg("-L").arg("Sherlock"); - cmd.current_dir(dir.path().join("foo/bar")); - - let expected = "\ -baz/sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -baz/sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(unrestricted1, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create(".gitignore", "sherlock\n"); - cmd.arg("-u").arg("Sherlock"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(unrestricted2, |dir: Dir, mut cmd: TestCommand| { - dir.create(".sherlock", SHERLOCK); - cmd.arg("-uu").arg("Sherlock"); - - let expected = "\ -.sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -.sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(unrestricted3, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("hay", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("-uuu").arg("foo"); - - let expected = "\ -hay: binary file matches (found \"\\0\" byte around offset 3) -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(vimgrep, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--vimgrep").arg("Sherlock|Watson"); - - let expected = "\ -sherlock:1:16:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:1:57:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:3:49:be, to a very large extent, the result of luck. Sherlock Holmes -sherlock:5:12:but Doctor Watson has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(vimgrep_no_line, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--vimgrep").arg("-N").arg("Sherlock|Watson"); - - let expected = "\ -sherlock:16:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:57:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:49:be, to a very large extent, the result of luck. Sherlock Holmes -sherlock:12:but Doctor Watson has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(vimgrep_no_line_no_column, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.arg("--vimgrep").arg("-N").arg("--no-column").arg("Sherlock|Watson"); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -sherlock:but Doctor Watson has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(preprocessing, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("xzcat") { - return; - } - - dir.create_bytes("sherlock.xz", include_bytes!("./data/sherlock.xz")); - cmd.arg("--pre").arg("xzcat").arg("Sherlock").arg("sherlock.xz"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(preprocessing_glob, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("xzcat") { - return; - } - - dir.create("sherlock", SHERLOCK); - dir.create_bytes("sherlock.xz", include_bytes!("./data/sherlock.xz")); - cmd.args(&["--pre", "xzcat", "--pre-glob", "*.xz", "Sherlock"]); - - let expected = "\ -sherlock.xz:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock.xz:be, to a very large extent, the result of luck. Sherlock Holmes -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(sort_lines(expected), sort_lines(&cmd.stdout())); -}); - -rgtest!(compressed_gzip, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("gzip") { - return; - } - - dir.create_bytes("sherlock.gz", include_bytes!("./data/sherlock.gz")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.gz"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_bzip2, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("bzip2") { - return; - } - - dir.create_bytes("sherlock.bz2", include_bytes!("./data/sherlock.bz2")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.bz2"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_xz, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("xz") { - return; - } - - dir.create_bytes("sherlock.xz", include_bytes!("./data/sherlock.xz")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.xz"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_lz4, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("lz4") { - return; - } - - dir.create_bytes("sherlock.lz4", include_bytes!("./data/sherlock.lz4")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.lz4"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_lzma, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("xz") { - return; - } - - dir.create_bytes("sherlock.lzma", include_bytes!("./data/sherlock.lzma")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.lzma"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_brotli, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("brotli") { - return; - } - - dir.create_bytes("sherlock.br", include_bytes!("./data/sherlock.br")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.br"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_zstd, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("zstd") { - return; - } - - dir.create_bytes("sherlock.zst", include_bytes!("./data/sherlock.zst")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.zst"); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_uncompress, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("uncompress") { - return; - } - - dir.create_bytes("sherlock.Z", include_bytes!("./data/sherlock.Z")); - cmd.arg("-z").arg("Sherlock").arg("sherlock.Z"); - - let expected = "\ - For the Doctor Watsons of this world, as opposed to the Sherlock -be, to a very large extent, the result of luck. Sherlock Holmes -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(compressed_failing_gzip, |dir: Dir, mut cmd: TestCommand| { - if !cmd_exists("gzip") { - return; - } - - dir.create("sherlock.gz", SHERLOCK); - cmd.arg("-z").arg("Sherlock").arg("sherlock.gz"); - - cmd.assert_non_empty_stderr(); -}); - -rgtest!(binary_convert, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("--no-mmap").arg("foo").arg("file"); - - let expected = "\ -binary file matches (found \"\\0\" byte around offset 3) -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(binary_convert_mmap, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("--mmap").arg("foo").arg("file"); - - let expected = "\ -binary file matches (found \"\\0\" byte around offset 3) -"; - eqnice!(expected, cmd.stdout()); -}); - -rgtest!(binary_quit, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("--no-mmap").arg("foo").arg("-gfile"); - cmd.assert_err(); -}); - -rgtest!(binary_quit_mmap, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("--mmap").arg("foo").arg("-gfile"); - cmd.assert_err(); -}); - -// The following two tests show a discrepancy in search results between -// searching with memory mapped files and stream searching. Stream searching -// uses a heuristic (that GNU grep also uses) where NUL bytes are replaced with -// the EOL terminator, which tends to avoid allocating large amounts of memory -// for really long "lines." The memory map searcher has no need to worry about -// such things, and more than that, it would be pretty hard for it to match the -// semantics of streaming search in this case. -// -// Binary files with lots of NULs aren't really part of the use case of ripgrep -// (or any other grep-like tool for that matter), so we shouldn't feel too bad -// about it. -rgtest!(binary_search_mmap, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("-a").arg("--mmap").arg("foo").arg("file"); - eqnice!("foo\x00bar\nfoo\x00baz\n", cmd.stdout()); -}); - -rgtest!(binary_search_no_mmap, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo\x00bar\nfoo\x00baz\n"); - cmd.arg("-a").arg("--no-mmap").arg("foo").arg("file"); - eqnice!("foo\x00bar\nfoo\x00baz\n", cmd.stdout()); -}); - -rgtest!(files, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", ""); - dir.create_dir("dir"); - dir.create("dir/file", ""); - cmd.arg("--files"); - - eqnice!(sort_lines("file\ndir/file\n"), sort_lines(&cmd.stdout())); -}); - -rgtest!(type_list, |_: Dir, mut cmd: TestCommand| { - cmd.arg("--type-list"); - // This can change over time, so just make sure we print something. - assert!(!cmd.stdout().is_empty()); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/multiline.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/multiline.rs deleted file mode 100644 index d084c96ba..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/multiline.rs +++ /dev/null @@ -1,121 +0,0 @@ -use crate::hay::SHERLOCK; -use crate::util::{Dir, TestCommand}; - -// This tests that multiline matches that span multiple lines, but where -// multiple matches may begin and end on the same line work correctly. -rgtest!(overlap1, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "xxx\nabc\ndefxxxabc\ndefxxx\nxxx"); - cmd.arg("-n").arg("-U").arg("abc\ndef").arg("test"); - eqnice!("2:abc\n3:defxxxabc\n4:defxxx\n", cmd.stdout()); -}); - -// Like overlap1, but tests the case where one match ends at precisely the same -// location at which the next match begins. -rgtest!(overlap2, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "xxx\nabc\ndefabc\ndefxxx\nxxx"); - cmd.arg("-n").arg("-U").arg("abc\ndef").arg("test"); - eqnice!("2:abc\n3:defabc\n4:defxxx\n", cmd.stdout()); -}); - -// Tests that even in a multiline search, a '.' does not match a newline. -rgtest!(dot_no_newline, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&["-n", "-U", "of this world.+detective work", "sherlock"]); - cmd.assert_err(); -}); - -// Tests that the --multiline-dotall flag causes '.' to match a newline. -rgtest!(dot_all, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-n", - "-U", - "--multiline-dotall", - "of this world.+detective work", - "sherlock", - ]); - - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2:Holmeses, success in the province of detective work must always -"; - eqnice!(expected, cmd.stdout()); -}); - -// Tests that --only-matching works in multiline mode. -rgtest!(only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-n", - "-U", - "--only-matching", - r"Watson|Sherlock\p{Any}+?Holmes", - "sherlock", - ]); - - let expected = "\ -1:Watson -1:Sherlock -2:Holmes -3:Sherlock Holmes -5:Watson -"; - eqnice!(expected, cmd.stdout()); -}); - -// Tests that --vimgrep works in multiline mode. -// -// In particular, we test that only the first line of each match is printed, -// even when a match spans multiple lines. -// -// See: https://github.com/BurntSushi/ripgrep/issues/1866 -rgtest!(vimgrep, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-n", - "-U", - "--vimgrep", - r"Watson|Sherlock\p{Any}+?Holmes", - "sherlock", - ]); - - let expected = "\ -sherlock:1:16:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:1:57:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:3:49:be, to a very large extent, the result of luck. Sherlock Holmes -sherlock:5:12:but Doctor Watson has to have it taken out for him and dusted, -"; - eqnice!(expected, cmd.stdout()); -}); - -// Tests that multiline search works when reading from stdin. This is an -// important test because multiline search must read the entire contents of -// what it is searching into memory before executing the search. -rgtest!(stdin, |_: Dir, mut cmd: TestCommand| { - cmd.args(&["-n", "-U", r"of this world\p{Any}+?detective work"]); - let expected = "\ -1:For the Doctor Watsons of this world, as opposed to the Sherlock -2:Holmeses, success in the province of detective work must always -"; - eqnice!(expected, cmd.pipe(SHERLOCK.as_bytes())); -}); - -// Test that multiline search and contextual matches work. -rgtest!(context, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - cmd.args(&[ - "-n", - "-U", - "-C1", - r"detective work\p{Any}+?result of luck", - "sherlock", - ]); - - let expected = "\ -1-For the Doctor Watsons of this world, as opposed to the Sherlock -2:Holmeses, success in the province of detective work must always -3:be, to a very large extent, the result of luck. Sherlock Holmes -4-can extract a clew from a wisp of straw or a flake of cigar ash; -"; - eqnice!(expected, cmd.stdout()); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/regression.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/regression.rs deleted file mode 100644 index c905e7361..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/regression.rs +++ /dev/null @@ -1,1031 +0,0 @@ -use crate::hay::SHERLOCK; -use crate::util::{sort_lines, Dir, TestCommand}; - -// See: https://github.com/BurntSushi/ripgrep/issues/16 -rgtest!(r16, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "ghi/"); - dir.create_dir("ghi"); - dir.create_dir("def/ghi"); - dir.create("ghi/toplevel.txt", "xyz"); - dir.create("def/ghi/subdir.txt", "xyz"); - - cmd.arg("xyz").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/25 -rgtest!(r25, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "/llvm/"); - dir.create_dir("src/llvm"); - dir.create("src/llvm/foo", "test"); - - cmd.arg("test"); - eqnice!("src/llvm/foo:test\n", cmd.stdout()); - - cmd.current_dir(dir.path().join("src")); - eqnice!("llvm/foo:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/30 -rgtest!(r30, |dir: Dir, mut cmd: TestCommand| { - dir.create(".gitignore", "vendor/**\n!vendor/manifest"); - dir.create_dir("vendor"); - dir.create("vendor/manifest", "test"); - - eqnice!("vendor/manifest:test\n", cmd.arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/49 -rgtest!(r49, |dir: Dir, mut cmd: TestCommand| { - dir.create(".gitignore", "foo/bar"); - dir.create_dir("test/foo/bar"); - dir.create("test/foo/bar/baz", "test"); - - cmd.arg("xyz").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/50 -rgtest!(r50, |dir: Dir, mut cmd: TestCommand| { - dir.create(".gitignore", "XXX/YYY/"); - dir.create_dir("abc/def/XXX/YYY"); - dir.create_dir("ghi/XXX/YYY"); - dir.create("abc/def/XXX/YYY/bar", "test"); - dir.create("ghi/XXX/YYY/bar", "test"); - - cmd.arg("xyz").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/64 -rgtest!(r64, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("dir"); - dir.create_dir("foo"); - dir.create("dir/abc", ""); - dir.create("foo/abc", ""); - - eqnice!("foo/abc\n", cmd.arg("--files").arg("foo").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/65 -rgtest!(r65, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "a/"); - dir.create_dir("a"); - dir.create("a/foo", "xyz"); - dir.create("a/bar", "xyz"); - - cmd.arg("xyz").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/67 -rgtest!(r67, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "/*\n!/dir"); - dir.create_dir("dir"); - dir.create_dir("foo"); - dir.create("foo/bar", "test"); - dir.create("dir/bar", "test"); - - eqnice!("dir/bar:test\n", cmd.arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/87 -rgtest!(r87, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "foo\n**no-vcs**"); - dir.create("foo", "test"); - - cmd.arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/90 -rgtest!(r90, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "!.foo"); - dir.create(".foo", "test"); - - eqnice!(".foo:test\n", cmd.arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/93 -rgtest!(r93, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "192.168.1.1"); - - eqnice!("foo:192.168.1.1\n", cmd.arg(r"(\d{1,3}\.){3}\d{1,3}").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/99 -rgtest!(r99, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo1", "test"); - dir.create("foo2", "zzz"); - dir.create("bar", "test"); - - eqnice!( - sort_lines("bar\ntest\n\nfoo1\ntest\n"), - sort_lines(&cmd.arg("-j1").arg("--heading").arg("test").stdout()) - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/105 -rgtest!(r105_part1, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "zztest"); - - eqnice!("foo:1:3:zztest\n", cmd.arg("--vimgrep").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/105 -rgtest!(r105_part2, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "zztest"); - - eqnice!("foo:1:3:zztest\n", cmd.arg("--column").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/127 -rgtest!(r127, |dir: Dir, mut cmd: TestCommand| { - // Set up a directory hierarchy like this: - // - // .gitignore - // foo/ - // sherlock - // watson - // - // Where `.gitignore` contains `foo/sherlock`. - // - // ripgrep should ignore 'foo/sherlock' giving us results only from - // 'foo/watson' but on Windows ripgrep will include both 'foo/sherlock' and - // 'foo/watson' in the search results. - dir.create_dir(".git"); - dir.create(".gitignore", "foo/sherlock\n"); - dir.create_dir("foo"); - dir.create("foo/sherlock", SHERLOCK); - dir.create("foo/watson", SHERLOCK); - - let expected = "\ -foo/watson:For the Doctor Watsons of this world, as opposed to the Sherlock -foo/watson:be, to a very large extent, the result of luck. Sherlock Holmes -"; - assert_eq!(expected, cmd.arg("Sherlock").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/128 -rgtest!(r128, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("foo", b"01234567\x0b\n\x0b\n\x0b\n\x0b\nx"); - - eqnice!("foo:5:x\n", cmd.arg("-n").arg("x").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/131 -// -// TODO(burntsushi): Darwin doesn't like this test for some reason. Probably -// due to the weird file path. -#[cfg(not(target_os = "macos"))] -rgtest!(r131, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "TopÑapa"); - dir.create("TopÑapa", "test"); - - cmd.arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/137 -// -// TODO(burntsushi): Figure out how to make this test work on Windows. Right -// now it gives "access denied" errors when trying to create a file symlink. -// For now, disable test on Windows. -#[cfg(not(windows))] -rgtest!(r137, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.link_file("sherlock", "sym1"); - dir.link_file("sherlock", "sym2"); - - let expected = "\ -./sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -./sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -sym1:For the Doctor Watsons of this world, as opposed to the Sherlock -sym1:be, to a very large extent, the result of luck. Sherlock Holmes -sym2:For the Doctor Watsons of this world, as opposed to the Sherlock -sym2:be, to a very large extent, the result of luck. Sherlock Holmes -"; - cmd.arg("-j1").arg("Sherlock").arg("./").arg("sym1").arg("sym2"); - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/156 -rgtest!(r156, |dir: Dir, mut cmd: TestCommand| { - let expected = r#"#parse('widgets/foo_bar_macros.vm') -#parse ( 'widgets/mobile/foo_bar_macros.vm' ) -#parse ("widgets/foobarhiddenformfields.vm") -#parse ( "widgets/foo_bar_legal.vm" ) -#include( 'widgets/foo_bar_tips.vm' ) -#include('widgets/mobile/foo_bar_macros.vm') -#include ("widgets/mobile/foo_bar_resetpw.vm") -#parse('widgets/foo-bar-macros.vm') -#parse ( 'widgets/mobile/foo-bar-macros.vm' ) -#parse ("widgets/foo-bar-hiddenformfields.vm") -#parse ( "widgets/foo-bar-legal.vm" ) -#include( 'widgets/foo-bar-tips.vm' ) -#include('widgets/mobile/foo-bar-macros.vm') -#include ("widgets/mobile/foo-bar-resetpw.vm") -"#; - dir.create("testcase.txt", expected); - - cmd.arg("-N"); - cmd.arg(r#"#(?:parse|include)\s*\(\s*(?:"|')[./A-Za-z_-]+(?:"|')"#); - cmd.arg("testcase.txt"); - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/184 -rgtest!(r184, |dir: Dir, mut cmd: TestCommand| { - dir.create(".gitignore", ".*"); - dir.create_dir("foo/bar"); - dir.create("foo/bar/baz", "test"); - - cmd.arg("test"); - eqnice!("foo/bar/baz:test\n", cmd.stdout()); - - cmd.current_dir(dir.path().join("./foo/bar")); - eqnice!("baz:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/199 -rgtest!(r199, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "tEsT"); - - eqnice!("foo:tEsT\n", cmd.arg("--smart-case").arg(r"\btest\b").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/206 -rgtest!(r206, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo"); - dir.create("foo/bar.txt", "test"); - - cmd.arg("test").arg("-g").arg("*.txt"); - eqnice!("foo/bar.txt:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/210 -#[cfg(unix)] -rgtest!(r210, |dir: Dir, mut cmd: TestCommand| { - use std::ffi::OsStr; - use std::os::unix::ffi::OsStrExt; - - let badutf8 = OsStr::from_bytes(&b"foo\xffbar"[..]); - - // APFS does not support creating files with invalid UTF-8 bytes. - // https://github.com/BurntSushi/ripgrep/issues/559 - if dir.try_create(badutf8, "test").is_ok() { - cmd.arg("-H").arg("test").arg(badutf8); - assert_eq!(b"foo\xffbar:test\n".to_vec(), cmd.output().stdout); - } -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/228 -rgtest!(r228, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo"); - - cmd.arg("--ignore-file").arg("foo").arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/229 -rgtest!(r229, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "economie"); - - cmd.arg("-S").arg("[E]conomie").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/251 -rgtest!(r251, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "привет\nПривет\nПрИвЕт"); - - let expected = "foo:привет\nfoo:Привет\nfoo:ПрИвЕт\n"; - eqnice!(expected, cmd.arg("-i").arg("привет").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/256 -#[cfg(not(windows))] -rgtest!(r256, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("bar"); - dir.create("bar/baz", "test"); - dir.link_dir("bar", "foo"); - - eqnice!("foo/baz:test\n", cmd.arg("test").arg("foo").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/256 -#[cfg(not(windows))] -rgtest!(r256_j1, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("bar"); - dir.create("bar/baz", "test"); - dir.link_dir("bar", "foo"); - - eqnice!("foo/baz:test\n", cmd.arg("-j1").arg("test").arg("foo").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/270 -rgtest!(r270, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "-test"); - - cmd.arg("-e").arg("-test"); - eqnice!("foo:-test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/279 -rgtest!(r279, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test"); - - eqnice!("", cmd.arg("-q").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/391 -rgtest!(r391, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create("lock", ""); - dir.create("bar.py", ""); - dir.create(".git/packed-refs", ""); - dir.create(".git/description", ""); - - cmd.args(&[ - "--no-ignore", - "--hidden", - "--follow", - "--files", - "--glob", - "!{.git,node_modules,plugged}/**", - "--glob", - "*.{js,json,php,md,styl,scss,sass,pug,html,config,py,cpp,c,go,hs}", - ]); - eqnice!("bar.py\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/405 -rgtest!(r405, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("foo/bar"); - dir.create_dir("bar/foo"); - dir.create("foo/bar/file1.txt", "test"); - dir.create("bar/foo/file2.txt", "test"); - - cmd.arg("-g").arg("!/foo/**").arg("test"); - eqnice!("bar/foo/file2.txt:test\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/428 -#[cfg(not(windows))] -rgtest!(r428_color_context_path, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", "foo\nbar"); - cmd.args(&[ - "-A1", - "-H", - "--no-heading", - "-N", - "--colors=match:none", - "--color=always", - "foo", - ]); - - let expected = format!( - "{colored_path}:foo\n{colored_path}-bar\n", - colored_path = - "\x1b\x5b\x30\x6d\x1b\x5b\x33\x35\x6dsherlock\x1b\x5b\x30\x6d" - ); - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/428 -rgtest!(r428_unrecognized_style, |dir: Dir, mut cmd: TestCommand| { - dir.create("file.txt", "Sherlock"); - - cmd.arg("--colors=match:style:").arg("Sherlock"); - cmd.assert_err(); - - let output = cmd.cmd().output().unwrap(); - let stderr = String::from_utf8_lossy(&output.stderr); - let expected = "\ -unrecognized style attribute ''. Choose from: nobold, bold, nointense, \ -intense, nounderline, underline. -"; - eqnice!(expected, stderr); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/451 -rgtest!(r451_only_matching_as_in_issue, |dir: Dir, mut cmd: TestCommand| { - dir.create("digits.txt", "1 2 3\n"); - cmd.arg("--only-matching").arg(r"[0-9]+").arg("digits.txt"); - - let expected = "\ -1 -2 -3 -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/451 -rgtest!(r451_only_matching, |dir: Dir, mut cmd: TestCommand| { - dir.create("digits.txt", "1 2 3\n123\n"); - cmd.args(&["--only-matching", "--column", r"[0-9]", "digits.txt"]); - - let expected = "\ -1:1:1 -1:3:2 -1:5:3 -2:1:1 -2:2:2 -2:3:3 -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/483 -rgtest!(r483_matching_no_stdout, |dir: Dir, mut cmd: TestCommand| { - dir.create("file.py", ""); - cmd.arg("--quiet").arg("--files").arg("--glob").arg("*.py"); - eqnice!("", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/483 -rgtest!(r483_non_matching_exit_code, |dir: Dir, mut cmd: TestCommand| { - dir.create("file.rs", ""); - cmd.arg("--quiet").arg("--files").arg("--glob").arg("*.py"); - cmd.assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/493 -rgtest!(r493, |dir: Dir, mut cmd: TestCommand| { - dir.create("input.txt", "peshwaship 're seminomata"); - - cmd.arg("-o").arg(r"\b 're \b").arg("input.txt"); - assert_eq!(" 're \n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/506 -rgtest!(r506_word_not_parenthesized, |dir: Dir, mut cmd: TestCommand| { - dir.create("wb.txt", "min minimum amin\nmax maximum amax"); - cmd.arg("-w").arg("-o").arg("min|max").arg("wb.txt"); - eqnice!("min\nmax\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/553 -rgtest!(r553_switch, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -sherlock:For the Doctor Watsons of this world, as opposed to the Sherlock -sherlock:be, to a very large extent, the result of luck. Sherlock Holmes -"; - cmd.arg("-i").arg("sherlock"); - eqnice!(expected, cmd.stdout()); - - // Repeat the `i` flag to make sure everything still works. - eqnice!(expected, cmd.arg("-i").stdout()); -}); - -rgtest!(r553_flag, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -Holmeses, success in the province of detective work must always --- -but Doctor Watson has to have it taken out for him and dusted, -and exhibited clearly, with a label attached. -"; - cmd.arg("-C").arg("1").arg(r"world|attached").arg("sherlock"); - eqnice!(expected, cmd.stdout()); - - let expected = "\ -For the Doctor Watsons of this world, as opposed to the Sherlock -and exhibited clearly, with a label attached. -"; - eqnice!(expected, cmd.arg("-C").arg("0").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/568 -rgtest!(r568_leading_hyphen_option_args, |dir: Dir, mut cmd: TestCommand| { - dir.create("file", "foo bar -baz\n"); - cmd.arg("-e-baz").arg("-e").arg("-baz").arg("file"); - eqnice!("foo bar -baz\n", cmd.stdout()); - - let mut cmd = dir.command(); - cmd.arg("-rni").arg("bar").arg("file"); - eqnice!("foo ni -baz\n", cmd.stdout()); - - let mut cmd = dir.command(); - cmd.arg("-r").arg("-n").arg("-i").arg("bar").arg("file"); - eqnice!("foo -n -baz\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/599 -// -// This test used to check that we emitted color escape sequences even for -// empty matches, but with the addition of the JSON output format, clients no -// longer need to rely on escape sequences to parse matches. Therefore, we no -// longer emit useless escape sequences. -rgtest!(r599, |dir: Dir, mut cmd: TestCommand| { - dir.create("input.txt", "\n\ntest\n"); - cmd.args(&[ - "--color", - "ansi", - "--colors", - "path:none", - "--colors", - "line:none", - "--colors", - "match:fg:red", - "--colors", - "match:style:nobold", - "--line-number", - r"^$", - "input.txt", - ]); - - let expected = "\ -1: -2: -"; - eqnice_repr!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/693 -rgtest!(r693_context_in_contextless_mode, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "xyz\n"); - dir.create("bar", "xyz\n"); - - cmd.arg("-C1").arg("-c").arg("--sort-files").arg("xyz"); - eqnice!("bar:1\nfoo:1\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/807 -rgtest!(r807, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", ".a/b"); - dir.create_dir(".a/b"); - dir.create_dir(".a/c"); - dir.create(".a/b/file", "test"); - dir.create(".a/c/file", "test"); - - eqnice!(".a/c/file:test\n", cmd.arg("--hidden").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/900 -rgtest!(r900, |dir: Dir, mut cmd: TestCommand| { - dir.create("sherlock", SHERLOCK); - dir.create("pat", ""); - - cmd.arg("-fpat").arg("sherlock").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1064 -rgtest!(r1064, |dir: Dir, mut cmd: TestCommand| { - dir.create("input", "abc"); - eqnice!("input:abc\n", cmd.arg("a(.*c)").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1174 -rgtest!(r1098, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "a**b"); - dir.create("afoob", "test"); - cmd.arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1130 -rgtest!(r1130, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "test"); - eqnice!( - "foo\n", - cmd.arg("--files-with-matches").arg("test").arg("foo").stdout() - ); - - let mut cmd = dir.command(); - eqnice!( - "foo\n", - cmd.arg("--files-without-match").arg("nada").arg("foo").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1159 -rgtest!(r1159_invalid_flag, |_: Dir, mut cmd: TestCommand| { - cmd.arg("--wat").assert_exit_code(2); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1159 -rgtest!(r1159_exit_status, |dir: Dir, _: TestCommand| { - dir.create("foo", "test"); - - // search with a match gets 0 exit status. - let mut cmd = dir.command(); - cmd.arg("test").assert_exit_code(0); - - // search with --quiet and a match gets 0 exit status. - let mut cmd = dir.command(); - cmd.arg("-q").arg("test").assert_exit_code(0); - - // search with a match and an error gets 2 exit status. - let mut cmd = dir.command(); - cmd.arg("test").arg("no-file").assert_exit_code(2); - - // search with a match in --quiet mode and an error gets 0 exit status. - let mut cmd = dir.command(); - cmd.arg("-q").arg("test").arg("foo").arg("no-file").assert_exit_code(0); - - // search with no match gets 1 exit status. - let mut cmd = dir.command(); - cmd.arg("nada").assert_exit_code(1); - - // search with --quiet and no match gets 1 exit status. - let mut cmd = dir.command(); - cmd.arg("-q").arg("nada").assert_exit_code(1); - - // search with no match and an error gets 2 exit status. - let mut cmd = dir.command(); - cmd.arg("nada").arg("no-file").assert_exit_code(2); - - // search with no match in --quiet mode and an error gets 2 exit status. - let mut cmd = dir.command(); - cmd.arg("-q").arg("nada").arg("foo").arg("no-file").assert_exit_code(2); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1163 -rgtest!(r1163, |dir: Dir, mut cmd: TestCommand| { - dir.create("bom.txt", "\u{FEFF}test123\ntest123"); - eqnice!( - "bom.txt:test123\nbom.txt:test123\n", - cmd.arg("^test123").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1164 -rgtest!(r1164, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "myfile"); - dir.create("MYFILE", "test"); - - cmd.arg("--ignore-file-case-insensitive").arg("test").assert_err(); - eqnice!( - "MYFILE:test\n", - cmd.arg("--no-ignore-file-case-insensitive").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1173 -rgtest!(r1173, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "**"); - dir.create("foo", "test"); - cmd.arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1174 -rgtest!(r1174, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir(".git"); - dir.create(".gitignore", "**/**/*"); - dir.create_dir("a"); - dir.create("a/foo", "test"); - cmd.arg("test").assert_err(); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1176 -rgtest!(r1176_literal_file, |dir: Dir, mut cmd: TestCommand| { - dir.create("patterns", "foo(bar\n"); - dir.create("test", "foo(bar"); - - eqnice!( - "foo(bar\n", - cmd.arg("-F").arg("-f").arg("patterns").arg("test").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1176 -rgtest!(r1176_line_regex, |dir: Dir, mut cmd: TestCommand| { - dir.create("patterns", "foo\n"); - dir.create("test", "foobar\nfoo\nbarfoo\n"); - - eqnice!( - "foo\n", - cmd.arg("-x").arg("-f").arg("patterns").arg("test").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1203 -rgtest!(r1203_reverse_suffix_literal, |dir: Dir, _: TestCommand| { - dir.create("test", "153.230000\n"); - - let mut cmd = dir.command(); - eqnice!("153.230000\n", cmd.arg(r"\d\d\d00").arg("test").stdout()); - - let mut cmd = dir.command(); - eqnice!("153.230000\n", cmd.arg(r"\d\d\d000").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1223 -rgtest!( - r1223_no_dir_check_for_default_path, - |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("-"); - dir.create("a.json", "{}"); - dir.create("a.txt", "some text"); - - eqnice!( - "a.json\na.txt\n", - sort_lines(&cmd.arg("a").pipe(b"a.json\na.txt")) - ); - } -); - -// See: https://github.com/BurntSushi/ripgrep/issues/1259 -rgtest!(r1259_drop_last_byte_nonl, |dir: Dir, mut cmd: TestCommand| { - dir.create("patterns-nonl", "[foo]"); - dir.create("patterns-nl", "[foo]\n"); - dir.create("test", "fz"); - - eqnice!("fz\n", cmd.arg("-f").arg("patterns-nonl").arg("test").stdout()); - cmd = dir.command(); - eqnice!("fz\n", cmd.arg("-f").arg("patterns-nl").arg("test").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1311 -rgtest!(r1311_multi_line_term_replace, |dir: Dir, mut cmd: TestCommand| { - dir.create("input", "hello\nworld\n"); - eqnice!( - "1:hello?world?\n", - cmd.args(&["-U", "-r?", "-n", "\n", "input"]).stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1319 -rgtest!(r1319, |dir: Dir, mut cmd: TestCommand| { - dir.create("input", "CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC"); - eqnice!( - "input:CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC\n", - cmd.arg("TTGAGTCCAGGAG[ATCG]{2}C").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1334 -rgtest!(r1334_crazy_literals, |dir: Dir, mut cmd: TestCommand| { - dir.create("patterns", &"1.208.0.0/12\n".repeat(40)); - dir.create("corpus", "1.208.0.0/12\n"); - eqnice!( - "1.208.0.0/12\n", - cmd.arg("-Ff").arg("patterns").arg("corpus").stdout() - ); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1380 -rgtest!(r1380, |dir: Dir, mut cmd: TestCommand| { - dir.create( - "foo", - "\ -a -b -c -d -e -d -e -d -e -d -e -", - ); - - eqnice!("d\ne\nd\n", cmd.args(&["-A2", "-m1", "d", "foo"]).stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1389 -rgtest!(r1389_bad_symlinks_no_biscuit, |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("mydir"); - dir.create("mydir/file.txt", "test"); - dir.link_dir("mydir", "mylink"); - - let stdout = cmd - .args(&["test", "--no-ignore", "--sort", "path", "mylink"]) - .stdout(); - eqnice!("mylink/file.txt:test\n", stdout); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1401 -rgtest!(r1401_look_ahead_only_matching_1, |dir: Dir, mut cmd: TestCommand| { - // Only PCRE2 supports look-around. - if !dir.is_pcre2() { - return; - } - dir.create("ip.txt", "foo 42\nxoyz\ncat\tdog\n"); - cmd.args(&["-No", r".*o(?!.*\s)", "ip.txt"]); - eqnice!("xo\ncat\tdo\n", cmd.stdout()); - - let mut cmd = dir.command(); - cmd.args(&["-No", r".*o(?!.*[ \t])", "ip.txt"]); - eqnice!("xo\ncat\tdo\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1401 -rgtest!(r1401_look_ahead_only_matching_2, |dir: Dir, mut cmd: TestCommand| { - // Only PCRE2 supports look-around. - if !dir.is_pcre2() { - return; - } - dir.create("ip.txt", "foo 42\nxoyz\ncat\tdog\nfoo"); - cmd.args(&["-No", r".*o(?!.*\s)", "ip.txt"]); - eqnice!("xo\ncat\tdo\nfoo\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1412 -rgtest!(r1412_look_behind_no_replacement, |dir: Dir, mut cmd: TestCommand| { - // Only PCRE2 supports look-around. - if !dir.is_pcre2() { - return; - } - - dir.create("test", "foo\nbar\n"); - cmd.args(&["-nU", "-rquux", r"(?<=foo\n)bar", "test"]); - eqnice!("2:quux\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/pull/1446 -rgtest!( - r1446_respect_excludes_in_worktree, - |dir: Dir, mut cmd: TestCommand| { - dir.create_dir("repo/.git/info"); - dir.create("repo/.git/info/exclude", "ignored"); - dir.create_dir("repo/.git/worktrees/repotree"); - dir.create("repo/.git/worktrees/repotree/commondir", "../.."); - - dir.create_dir("repotree"); - dir.create("repotree/.git", "gitdir: repo/.git/worktrees/repotree"); - dir.create("repotree/ignored", ""); - dir.create("repotree/not-ignored", ""); - - cmd.arg("--sort").arg("path").arg("--files").arg("repotree"); - eqnice!("repotree/not-ignored\n", cmd.stdout()); - } -); - -// See: https://github.com/BurntSushi/ripgrep/issues/1537 -rgtest!(r1537, |dir: Dir, mut cmd: TestCommand| { - dir.create("foo", "abc;de,fg"); - - let expected = "foo:abc;de,fg\n"; - eqnice!(expected, cmd.arg(";(.*,){1}").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1559 -rgtest!(r1559, |dir: Dir, mut cmd: TestCommand| { - dir.create( - "foo", - "\ -type A struct { - TaskID int `json:\"taskID\"` -} - -type B struct { - ObjectID string `json:\"objectID\"` - TaskID int `json:\"taskID\"` -} -", - ); - - let expected = "\ -foo: TaskID int `json:\"taskID\"` -foo: TaskID int `json:\"taskID\"` -"; - eqnice!(expected, cmd.arg("TaskID +int").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1573 -// -// Tests that if look-ahead is used, then --count-matches is correct. -rgtest!(r1573, |dir: Dir, mut cmd: TestCommand| { - // Only PCRE2 supports look-ahead. - if !dir.is_pcre2() { - return; - } - - dir.create_bytes("foo", b"\xFF\xFE\x00\x62"); - dir.create( - "foo", - "\ -def A; -def B; -use A; -use B; -", - ); - - // Check that normal --count is correct. - cmd.args(&[ - "--pcre2", - "--multiline", - "--count", - r"(?s)def (\w+);(?=.*use \w+)", - "foo", - ]); - eqnice!("2\n", cmd.stdout()); - - // Now check --count-matches. - let mut cmd = dir.command(); - cmd.args(&[ - "--pcre2", - "--multiline", - "--count-matches", - r"(?s)def (\w+);(?=.*use \w+)", - "foo", - ]); - eqnice!("2\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1638 -// -// Tests if UTF-8 BOM is sniffed, then the column index is correct. -rgtest!(r1638, |dir: Dir, mut cmd: TestCommand| { - dir.create_bytes("foo", b"\xef\xbb\xbfx"); - - eqnice!("foo:1:1:x\n", cmd.arg("--column").arg("x").stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1739 -rgtest!(r1739_replacement_lineterm_match, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "a\n"); - cmd.args(&[r"-r${0}f", r".*", "test"]); - eqnice!("af\n", cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1765 -rgtest!(r1765, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "\n"); - // We need to add --color=always here to force the failure, since the bad - // code path is only triggered when colors are enabled. - cmd.args(&[r"x?", "--crlf", "--color", "always"]); - - assert!(!cmd.stdout().is_empty()); -}); - -rgtest!(r1866, |dir: Dir, mut cmd: TestCommand| { - dir.create("test", "foobar\nfoobar\nfoo quux"); - cmd.args(&[ - "--multiline", - "--vimgrep", - r"foobar\nfoobar\nfoo|quux", - "test", - ]); - - // vimgrep only wants the first line of each match, even when a match - // spans multiple lines. - // - // See: https://github.com/BurntSushi/ripgrep/issues/1866 - let expected = "\ -test:1:1:foobar -test:3:5:foo quux -"; - eqnice!(expected, cmd.stdout()); -}); - -// See: https://github.com/BurntSushi/ripgrep/issues/1868 -rgtest!(r1868_context_passthru_override, |dir: Dir, _: TestCommand| { - dir.create("test", "foo\nbar\nbaz\nquux\n"); - - let args = &["-C1", "bar", "test"]; - eqnice!("foo\nbar\nbaz\n", dir.command().args(args).stdout()); - let args = &["--passthru", "bar", "test"]; - eqnice!("foo\nbar\nbaz\nquux\n", dir.command().args(args).stdout()); - - let args = &["--passthru", "-C1", "bar", "test"]; - eqnice!("foo\nbar\nbaz\n", dir.command().args(args).stdout()); - let args = &["-C1", "--passthru", "bar", "test"]; - eqnice!("foo\nbar\nbaz\nquux\n", dir.command().args(args).stdout()); - - let args = &["--passthru", "-B1", "bar", "test"]; - eqnice!("foo\nbar\n", dir.command().args(args).stdout()); - let args = &["-B1", "--passthru", "bar", "test"]; - eqnice!("foo\nbar\nbaz\nquux\n", dir.command().args(args).stdout()); - - let args = &["--passthru", "-A1", "bar", "test"]; - eqnice!("bar\nbaz\n", dir.command().args(args).stdout()); - let args = &["-A1", "--passthru", "bar", "test"]; - eqnice!("foo\nbar\nbaz\nquux\n", dir.command().args(args).stdout()); -}); - -rgtest!(r1878, |dir: Dir, _: TestCommand| { - dir.create("test", "a\nbaz\nabc\n"); - - // Since ripgrep enables (?m) by default, '^' will match at the beginning - // of a line, even when -U/--multiline is used. - let args = &["-U", "--no-mmap", r"^baz", "test"]; - eqnice!("baz\n", dir.command().args(args).stdout()); - let args = &["-U", "--mmap", r"^baz", "test"]; - eqnice!("baz\n", dir.command().args(args).stdout()); - - // But when (?-m) is disabled, or when \A is used, then there should be no - // matches that aren't anchored to the beginning of the file. - let args = &["-U", "--no-mmap", r"(?-m)^baz", "test"]; - dir.command().args(args).assert_err(); - let args = &["-U", "--mmap", r"(?-m)^baz", "test"]; - dir.command().args(args).assert_err(); - - let args = &["-U", "--no-mmap", r"\Abaz", "test"]; - dir.command().args(args).assert_err(); - let args = &["-U", "--mmap", r"\Abaz", "test"]; - dir.command().args(args).assert_err(); -}); diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/tests.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/tests.rs deleted file mode 100644 index 81e40f806..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/tests.rs +++ /dev/null @@ -1,22 +0,0 @@ -// Macros useful for testing. -#[macro_use] -mod macros; - -// Corpora. -mod hay; -// Utilities for making tests nicer to read and easier to write. -mod util; - -// Tests for ripgrep's handling of binary files. -mod binary; -// Tests related to most features in ripgrep. If you're adding something new -// to ripgrep, tests should probably go in here. -mod feature; -// Tests for ripgrep's JSON format. -mod json; -// Miscellaneous tests grouped in a haphazard manner. Try not to add more. -mod misc; -// Tests for ripgrep's multiline search support. -mod multiline; -// Regression tests. -mod regression; diff --git a/collector/compile-benchmarks/ripgrep-13.0.0/tests/util.rs b/collector/compile-benchmarks/ripgrep-13.0.0/tests/util.rs deleted file mode 100644 index 75fe92c1d..000000000 --- a/collector/compile-benchmarks/ripgrep-13.0.0/tests/util.rs +++ /dev/null @@ -1,482 +0,0 @@ -use std::env; -use std::error; -use std::ffi::OsStr; -use std::fs::{self, File}; -use std::io::{self, Write}; -use std::path::{Path, PathBuf}; -use std::process::{self, Command}; -use std::sync::atomic::{AtomicUsize, Ordering}; -use std::thread; -use std::time::Duration; - -static TEST_DIR: &'static str = "ripgrep-tests"; -static NEXT_ID: AtomicUsize = AtomicUsize::new(0); - -/// Setup an empty work directory and return a command pointing to the ripgrep -/// executable whose CWD is set to the work directory. -/// -/// The name given will be used to create the directory. Generally, it should -/// correspond to the test name. -pub fn setup(test_name: &str) -> (Dir, TestCommand) { - let dir = Dir::new(test_name); - let cmd = dir.command(); - (dir, cmd) -} - -/// Like `setup`, but uses PCRE2 as the underlying regex engine. -pub fn setup_pcre2(test_name: &str) -> (Dir, TestCommand) { - let mut dir = Dir::new(test_name); - dir.pcre2(true); - let cmd = dir.command(); - (dir, cmd) -} - -/// Break the given string into lines, sort them and then join them back -/// together. This is useful for testing output from ripgrep that may not -/// always be in the same order. -pub fn sort_lines(lines: &str) -> String { - let mut lines: Vec<&str> = lines.trim().lines().collect(); - lines.sort(); - format!("{}\n", lines.join("\n")) -} - -/// Returns true if and only if the given program can be successfully executed -/// with a `--help` flag. -pub fn cmd_exists(program: &str) -> bool { - Command::new(program).arg("--help").output().is_ok() -} - -/// Dir represents a directory in which tests should be run. -/// -/// Directories are created from a global atomic counter to avoid duplicates. -#[derive(Clone, Debug)] -pub struct Dir { - /// The directory in which this test executable is running. - root: PathBuf, - /// The directory in which the test should run. If a test needs to create - /// files, they should go in here. This directory is also used as the CWD - /// for any processes created by the test. - dir: PathBuf, - /// Set to true when the test should use PCRE2 as the regex engine. - pcre2: bool, -} - -impl Dir { - /// Create a new test working directory with the given name. The name - /// does not need to be distinct for each invocation, but should correspond - /// to a logical grouping of tests. - pub fn new(name: &str) -> Dir { - let id = NEXT_ID.fetch_add(1, Ordering::SeqCst); - let root = env::current_exe() - .unwrap() - .parent() - .expect("executable's directory") - .to_path_buf(); - let dir = - env::temp_dir().join(TEST_DIR).join(name).join(&format!("{}", id)); - if dir.exists() { - nice_err(&dir, fs::remove_dir_all(&dir)); - } - nice_err(&dir, repeat(|| fs::create_dir_all(&dir))); - Dir { root: root, dir: dir, pcre2: false } - } - - /// Use PCRE2 for this test. - pub fn pcre2(&mut self, yes: bool) { - self.pcre2 = yes; - } - - /// Returns true if and only if this test is configured to use PCRE2 as - /// the regex engine. - pub fn is_pcre2(&self) -> bool { - self.pcre2 - } - - /// Create a new file with the given name and contents in this directory, - /// or panic on error. - pub fn create>(&self, name: P, contents: &str) { - self.create_bytes(name, contents.as_bytes()); - } - - /// Try to create a new file with the given name and contents in this - /// directory. - #[allow(dead_code)] // unused on Windows - pub fn try_create>( - &self, - name: P, - contents: &str, - ) -> io::Result<()> { - let path = self.dir.join(name); - self.try_create_bytes(path, contents.as_bytes()) - } - - /// Create a new file with the given name and size. - pub fn create_size>(&self, name: P, filesize: u64) { - let path = self.dir.join(name); - let file = nice_err(&path, File::create(&path)); - nice_err(&path, file.set_len(filesize)); - } - - /// Create a new file with the given name and contents in this directory, - /// or panic on error. - pub fn create_bytes>(&self, name: P, contents: &[u8]) { - let path = self.dir.join(&name); - nice_err(&path, self.try_create_bytes(name, contents)); - } - - /// Try to create a new file with the given name and contents in this - /// directory. - pub fn try_create_bytes>( - &self, - name: P, - contents: &[u8], - ) -> io::Result<()> { - let path = self.dir.join(name); - let mut file = File::create(path)?; - file.write_all(contents)?; - file.flush() - } - - /// Remove a file with the given name from this directory. - pub fn remove>(&self, name: P) { - let path = self.dir.join(name); - nice_err(&path, fs::remove_file(&path)); - } - - /// Create a new directory with the given path (and any directories above - /// it) inside this directory. - pub fn create_dir>(&self, path: P) { - let path = self.dir.join(path); - nice_err(&path, repeat(|| fs::create_dir_all(&path))); - } - - /// Creates a new command that is set to use the ripgrep executable in - /// this working directory. - /// - /// This also: - /// - /// * Unsets the `RIPGREP_CONFIG_PATH` environment variable. - /// * Sets the `--path-separator` to `/` so that paths have the same output - /// on all systems. Tests that need to check `--path-separator` itself - /// can simply pass it again to override it. - pub fn command(&self) -> TestCommand { - let mut cmd = self.bin(); - cmd.env_remove("RIPGREP_CONFIG_PATH"); - cmd.current_dir(&self.dir); - cmd.arg("--path-separator").arg("/"); - if self.is_pcre2() { - cmd.arg("--pcre2"); - } - TestCommand { dir: self.clone(), cmd: cmd } - } - - /// Returns the path to the ripgrep executable. - pub fn bin(&self) -> process::Command { - let rg = self.root.join(format!("../rg{}", env::consts::EXE_SUFFIX)); - match cross_runner() { - None => process::Command::new(rg), - Some(runner) => { - let mut cmd = process::Command::new(runner); - cmd.arg(rg); - cmd - } - } - } - - /// Returns the path to this directory. - pub fn path(&self) -> &Path { - &self.dir - } - - /// Creates a directory symlink to the src with the given target name - /// in this directory. - #[cfg(not(windows))] - pub fn link_dir, T: AsRef>(&self, src: S, target: T) { - use std::os::unix::fs::symlink; - let src = self.dir.join(src); - let target = self.dir.join(target); - let _ = fs::remove_file(&target); - nice_err(&target, symlink(&src, &target)); - } - - /// Creates a directory symlink to the src with the given target name - /// in this directory. - #[cfg(windows)] - pub fn link_dir, T: AsRef>(&self, src: S, target: T) { - use std::os::windows::fs::symlink_dir; - let src = self.dir.join(src); - let target = self.dir.join(target); - let _ = fs::remove_dir(&target); - nice_err(&target, symlink_dir(&src, &target)); - } - - /// Creates a file symlink to the src with the given target name - /// in this directory. - #[cfg(not(windows))] - pub fn link_file, T: AsRef>( - &self, - src: S, - target: T, - ) { - self.link_dir(src, target); - } - - /// Creates a file symlink to the src with the given target name - /// in this directory. - #[cfg(windows)] - #[allow(dead_code)] // unused on Windows - pub fn link_file, T: AsRef>( - &self, - src: S, - target: T, - ) { - use std::os::windows::fs::symlink_file; - let src = self.dir.join(src); - let target = self.dir.join(target); - let _ = fs::remove_file(&target); - nice_err(&target, symlink_file(&src, &target)); - } -} - -/// A simple wrapper around a process::Command with some conveniences. -#[derive(Debug)] -pub struct TestCommand { - /// The dir used to launched this command. - dir: Dir, - /// The actual command we use to control the process. - cmd: Command, -} - -impl TestCommand { - /// Returns a mutable reference to the underlying command. - pub fn cmd(&mut self) -> &mut Command { - &mut self.cmd - } - - /// Add an argument to pass to the command. - pub fn arg>(&mut self, arg: A) -> &mut TestCommand { - self.cmd.arg(arg); - self - } - - /// Add any number of arguments to the command. - pub fn args(&mut self, args: I) -> &mut TestCommand - where - I: IntoIterator, - A: AsRef, - { - self.cmd.args(args); - self - } - - /// Set the working directory for this command. - /// - /// Note that this does not need to be called normally, since the creation - /// of this TestCommand causes its working directory to be set to the - /// test's directory automatically. - pub fn current_dir>(&mut self, dir: P) -> &mut TestCommand { - self.cmd.current_dir(dir); - self - } - - /// Runs and captures the stdout of the given command. - pub fn stdout(&mut self) -> String { - let o = self.output(); - let stdout = String::from_utf8_lossy(&o.stdout); - match stdout.parse() { - Ok(t) => t, - Err(err) => { - panic!( - "could not convert from string: {:?}\n\n{}", - err, stdout - ); - } - } - } - - /// Pipe `input` to a command, and collect the output. - pub fn pipe(&mut self, input: &[u8]) -> String { - self.cmd.stdin(process::Stdio::piped()); - self.cmd.stdout(process::Stdio::piped()); - self.cmd.stderr(process::Stdio::piped()); - - let mut child = self.cmd.spawn().unwrap(); - - // Pipe input to child process using a separate thread to avoid - // risk of deadlock between parent and child process. - let mut stdin = child.stdin.take().expect("expected standard input"); - let input = input.to_owned(); - let worker = thread::spawn(move || stdin.write_all(&input)); - - let output = self.expect_success(child.wait_with_output().unwrap()); - worker.join().unwrap().unwrap(); - - let stdout = String::from_utf8_lossy(&output.stdout); - match stdout.parse() { - Ok(t) => t, - Err(err) => { - panic!( - "could not convert from string: {:?}\n\n{}", - err, stdout - ); - } - } - } - - /// Gets the output of a command. If the command failed, then this panics. - pub fn output(&mut self) -> process::Output { - let output = self.cmd.output().unwrap(); - self.expect_success(output) - } - - /// Runs the command and asserts that it resulted in an error exit code. - pub fn assert_err(&mut self) { - let o = self.cmd.output().unwrap(); - if o.status.success() { - panic!( - "\n\n===== {:?} =====\n\ - command succeeded but expected failure!\ - \n\ncwd: {}\ - \n\ndir list: {:?}\ - \n\nstatus: {}\ - \n\nstdout: {}\n\nstderr: {}\ - \n\n=====\n", - self.cmd, - self.dir.dir.display(), - dir_list(&self.dir.dir), - o.status, - String::from_utf8_lossy(&o.stdout), - String::from_utf8_lossy(&o.stderr) - ); - } - } - - /// Runs the command and asserts that its exit code matches expected exit - /// code. - pub fn assert_exit_code(&mut self, expected_code: i32) { - let code = self.cmd.output().unwrap().status.code().unwrap(); - assert_eq!( - expected_code, - code, - "\n\n===== {:?} =====\n\ - expected exit code did not match\ - \n\ncwd: {}\ - \n\ndir list: {:?}\ - \n\nexpected: {}\ - \n\nfound: {}\ - \n\n=====\n", - self.cmd, - self.dir.dir.display(), - dir_list(&self.dir.dir), - expected_code, - code - ); - } - - /// Runs the command and asserts that something was printed to stderr. - pub fn assert_non_empty_stderr(&mut self) { - let o = self.cmd.output().unwrap(); - if o.status.success() || o.stderr.is_empty() { - panic!( - "\n\n===== {:?} =====\n\ - command succeeded but expected failure!\ - \n\ncwd: {}\ - \n\ndir list: {:?}\ - \n\nstatus: {}\ - \n\nstdout: {}\n\nstderr: {}\ - \n\n=====\n", - self.cmd, - self.dir.dir.display(), - dir_list(&self.dir.dir), - o.status, - String::from_utf8_lossy(&o.stdout), - String::from_utf8_lossy(&o.stderr) - ); - } - } - - fn expect_success(&self, o: process::Output) -> process::Output { - if !o.status.success() { - let suggest = if o.stderr.is_empty() { - "\n\nDid your search end up with no results?".to_string() - } else { - "".to_string() - }; - - panic!( - "\n\n==========\n\ - command failed but expected success!\ - {}\ - \n\ncommand: {:?}\ - \n\ncwd: {}\ - \n\ndir list: {:?}\ - \n\nstatus: {}\ - \n\nstdout: {}\ - \n\nstderr: {}\ - \n\n==========\n", - suggest, - self.cmd, - self.dir.dir.display(), - dir_list(&self.dir.dir), - o.status, - String::from_utf8_lossy(&o.stdout), - String::from_utf8_lossy(&o.stderr) - ); - } - o - } -} - -fn nice_err(path: &Path, res: Result) -> T { - match res { - Ok(t) => t, - Err(err) => panic!("{}: {:?}", path.display(), err), - } -} - -fn repeat io::Result<()>>(mut f: F) -> io::Result<()> { - let mut last_err = None; - for _ in 0..10 { - if let Err(err) = f() { - last_err = Some(err); - thread::sleep(Duration::from_millis(500)); - } else { - return Ok(()); - } - } - Err(last_err.unwrap()) -} - -/// Return a recursive listing of all files and directories in the given -/// directory. This is useful for debugging transient and odd failures in -/// integration tests. -fn dir_list>(dir: P) -> Vec { - walkdir::WalkDir::new(dir) - .follow_links(true) - .into_iter() - .map(|result| result.unwrap().path().to_string_lossy().into_owned()) - .collect() -} - -/// When running tests with cross, we need to be a bit smarter about how we -/// run our `rg` binary. We can't just run it directly since it might be -/// compiled for a totally different target. Instead, it's likely that `cross` -/// will have setup qemu to run it. While this is integrated into the Rust -/// testing by default, we need to handle it ourselves for integration tests. -/// -/// Thankfully, cross sets an environment variable that points to the proper -/// qemu binary that we want to run. So we just search for that env var and -/// return its value if we could find it. -fn cross_runner() -> Option { - for (k, v) in std::env::vars_os() { - let (k, v) = (k.to_string_lossy(), v.to_string_lossy()); - if !k.starts_with("CARGO_TARGET_") && !k.ends_with("_RUNNER") { - continue; - } - if !v.starts_with("qemu-") { - continue; - } - return Some(v.into_owned()); - } - None -}