ntex-httparse 1.10.2

A tiny, safe, speedy, zero-copy HTTP/1.x parser.
Documentation
name: CI Benchmarks
on:
  pull_request:
    branches: [master]

env:
  CARGO_TERM_COLOR: always

jobs:
  benchmark:
    name: Run benchmarks
    runs-on: ubuntu-latest
    env:
      RUSTFLAGS: "-C target-cpu=native"
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Install critcmp
        run: cargo install critcmp

      - name: Run benchmarks (master)
        run: |
          git checkout master
          cargo bench --bench parse -- --save-baseline master

      - name: Run benchmarks (PR)
        run: |
          git checkout ${{ github.event.pull_request.head.sha }}
          cargo bench --bench parse -- --save-baseline pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}

      - name: Compare benchmarks
        run: |
          critcmp -t 5 master pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}

  benchmark-x64:
    name: Run x64 benchmarks
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - feature: runtime
            rustflags: ""
          - feature: swar
            rustflags: "--cfg httparse_disable_simd"
          - feature: sse4.2
            rustflags: "-C target-feature=+sse4.2"
          - feature: avx2
            rustflags: "-C target-feature=+avx2"
    env:
      RUSTFLAGS: ${{ matrix.rustflags }}
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Install critcmp
        run: cargo install critcmp

      - name: Run benchmarks (master)
        run: |
          git checkout master
          cargo bench --bench parse -- --save-baseline master-${{ matrix.feature }}

      - name: Run benchmarks (PR)
        run: |
          git checkout ${{ github.event.pull_request.head.sha }}
          cargo bench --bench parse -- --save-baseline pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}-${{ matrix.feature }}

      - name: Compare benchmarks
        run: |
          critcmp -t 5 master-${{ matrix.feature }} pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}-${{ matrix.feature }}

  benchmark-aarch64:
    name: Run aarch64 benchmarks
    runs-on: macos-latest
    strategy:
      matrix:
        include:
          - feature: swar
            rustflags: "--cfg httparse_disable_simd"
          - feature: neon
            rustflags: "-C target-feature=+neon"
    env:
      RUSTFLAGS: ${{ matrix.rustflags }}
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Install critcmp
        run: cargo install critcmp

      - name: Run benchmarks (master)
        run: |
          git checkout master
          cargo bench --bench parse -- --save-baseline master-aarch64-${{ matrix.feature }}

      - name: Run benchmarks (PR)
        run: |
          git checkout ${{ github.event.pull_request.head.sha }}
          cargo bench --bench parse -- --save-baseline pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}-aarch64-${{ matrix.feature }}

      - name: Compare benchmarks
        run: |
          critcmp -t 5 master-aarch64-${{ matrix.feature }} pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}-aarch64-${{ matrix.feature }}