diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 4df7b2f3..09d1b88b 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -181,6 +181,77 @@ jobs: git push cd .. + callgrind: + name: callgrind + strategy: + fail-fast: false + matrix: + bench: + - { + script: "run-benchmarks", + timeout: 12, + title: "Luau Benchmarks (Callgrind)", + cachegrindTitle: "Performance", + cachegrindIterCount: 20, + } + benchResultsRepo: + - { name: "luau-lang/benchmark-data", branch: "main" } + + runs-on: ubuntu-latest + steps: + - name: Checkout Luau repository + uses: actions/checkout@v3 + + - name: Install valgrind + run: | + sudo apt-get install valgrind + + - 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: Build Luau + run: make config=release CALLGRIND=1 luau + + - name: Run benchmark + run: | + python bench/bench.py --callgrind | tee ${{ 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: "benchmarkluau" + output-file-path: ./${{ matrix.bench.script }}-output.txt + external-data-json-path: ./gh-pages/dev/bench/data.json + github-token: ${{ secrets.BENCH_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 .. + static-analysis: name: luau-analyze strategy: