diff --git a/.github/workflows/benchmark-cachegrind.yml b/.github/workflows/benchmark-cachegrind.yml deleted file mode 100644 index ad3552ad..00000000 --- a/.github/workflows/benchmark-cachegrind.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Luau Benchmarks (CacheGrind) - -on: - pull_request: - paths-ignore: - - "docs/**" - - "papers/**" - - "rfcs/**" - - "*.md" - - "prototyping/**" - - push: - branches: - - master - paths-ignore: - - "docs/**" - - "papers/**" - - "rfcs/**" - - "*.md" - - "prototyping/**" - -jobs: - benchmarks-run: - name: Run ${{ matrix.bench.title }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - engine: - - { channel: stable, version: latest } - bench: - - { - script: "run-benchmarks", - timeout: 12, - title: "Luau Benchmarks (CacheGrind)", - cachegrindTitle: "Performance", - cachegrindIterCount: 20, - } - benchResultsRepo: - - { name: "luau-lang/benchmark-data", branch: "main" } - - runs-on: ${{ matrix.os }} - steps: - - name: Checkout Luau - uses: actions/checkout@v3 - - - name: Build Luau - run: make config=release luau luau-analyze - - - uses: actions/setup-python@v3 - with: - python-version: "3.9" - architecture: "x64" - - - name: Install python dependencies - run: | - python -m pip install requests - python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose - - name: Install valgrind - run: | - sudo apt-get install valgrind - - name: Run ${{ matrix.bench.title }} (Cold Cachegrind) - run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle}}Cold" 1 | tee ${{ matrix.bench.script }}-output.txt - - - name: Run ${{ matrix.bench.title }} (Warm Cachegrind) - run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle }}" ${{ matrix.bench.cachegrindIterCount }} | tee -a ${{ matrix.bench.script }}-output.txt - - - name: Checkout Benchmark Results repository - uses: actions/checkout@v3 - with: - repository: ${{ matrix.benchResultsRepo.name }} - ref: ${{ matrix.benchResultsRepo.branch }} - token: ${{ secrets.BENCH_GITHUB_TOKEN }} - path: "./gh-pages" - - - name: Store ${{ matrix.bench.title }} result - uses: Roblox/rhysd-github-action-benchmark@v-luau - with: - name: ${{ matrix.bench.title }} - tool: "roblox" - output-file-path: ./${{ matrix.bench.script }}-output.txt - external-data-json-path: ./gh-pages/dev/bench/data.json - alert-threshold: 150% - fail-threshold: 200% - fail-on-alert: true - comment-on-alert: true - comment-always: true - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Push benchmark results - if: github.event_name == 'push' - run: | - echo "Pushing benchmark results..." - cd gh-pages - git config user.name github-actions - git config user.email github@users.noreply.github.com - git add ./dev/bench/data.json - git commit -m "Add benchmarks results for ${{ github.sha }}" - git push - cd .. diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 6bc5bbbf..c90db336 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -32,7 +32,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - name: Checkout Luau repository + - name: Checkout Luau uses: actions/checkout@v3 - name: Build Luau @@ -45,7 +45,6 @@ jobs: - name: Move build files to root run: | - echo %cd% move build/RelWithDebInfo/* . - name: Check dir structure @@ -63,6 +62,10 @@ jobs: python -m pip install requests python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose + - name: Install valgrind + run: | + sudo apt-get install valgrind + - name: Run benchmark run: | python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt @@ -83,14 +86,13 @@ jobs: output-file-path: ./${{ matrix.bench.script }}-output.txt external-data-json-path: ./gh-pages/dev/bench/data.json alert-threshold: 150% - fail-threshold: 200% - fail-on-alert: true + fail-threshold: 1000% + fail-on-alert: false comment-on-alert: true - comment-always: true github-token: ${{ secrets.GITHUB_TOKEN }} - name: Push benchmark results - if: github.event_name == 'push' + run: | echo "Pushing benchmark results..." cd gh-pages @@ -135,9 +137,24 @@ jobs: run: | python -m pip install requests python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose + - name: Run benchmark run: | python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt + + - name: Install valgrind + if: ${{ matrix.os }} == "ubuntu-latest" + run: | + sudo apt-get install valgrind + + - name: Run ${{ matrix.bench.title }} (Cold Cachegrind) + if: ${{ matrix.os }} == "ubuntu-latest" + run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle}}Cold" 1 | tee -a ${{ matrix.bench.script }}-output.txt + + - name: Run ${{ matrix.bench.title }} (Warm Cachegrind) + if: ${{ matrix.os }} == "ubuntu-latest" + run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle }}" ${{ matrix.bench.cachegrindIterCount }} | tee -a ${{ matrix.bench.script }}-output.txt + - name: Checkout Benchmark Results repository uses: actions/checkout@v3 with: @@ -160,6 +177,20 @@ jobs: comment-always: true github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Store ${{ matrix.bench.title }} result (CacheGrind) + uses: Roblox/rhysd-github-action-benchmark@v-luau + if: ${{ matrix.os }} == "ubuntu-latest" + with: + name: ${{ matrix.bench.title }} (CacheGrind) + tool: "roblox" + output-file-path: ./${{ matrix.bench.script }}-output.txt + external-data-json-path: ./gh-pages/dev/bench/data.json + alert-threshold: 150% + fail-threshold: 1000% + fail-on-alert: false + comment-on-alert: true + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Push benchmark results if: github.event_name == 'push' run: |