Skip to content

Commit c1ef1b3

Browse files
Sander Mullerclaude
andcommitted
Evaluate the pull request's file cache against stock
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 2274b47 commit c1ef1b3

5 files changed

Lines changed: 632 additions & 31 deletions

File tree

‎.github/workflows/tiny-run-bench.yml‎

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,46 +26,55 @@ jobs:
2626
php-version: "8.5"
2727
coverage: none
2828
tools: composer
29-
- name: Environment
30-
run: |
31-
php -v
32-
php -r 'foreach (["opcache.enable_cli", "opcache.file_cache", "opcache.jit", "disable_functions"] as $k) echo $k, "=", var_export(ini_get($k), true), "\n"; echo "pcntl_fork: ", var_export(function_exists("pcntl_fork"), true), "\n";'
3329
- name: Install and build arms
3430
run: |
3531
set -e
3632
W="$RUNNER_TEMP/w"
3733
(cd bench/project && composer install -q --no-interaction)
3834
(cd bench/tools && composer install -q --no-interaction)
35+
php bench/project/vendor/phpstan/phpstan/phpstan.phar --version
3936
git clone -q --depth 1 https://github.com/nikic/PHP-Parser "$RUNNER_TEMP/php-parser"
40-
php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan stock fcv daemon
41-
php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib"
37+
php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan stock pr pre
38+
if [ "$RUNNER_OS" = Linux ]; then
39+
git clone -q --depth 1 https://github.com/tempestphp/tempest-framework "$RUNNER_TEMP/tempest"
40+
(cd "$RUNNER_TEMP/tempest" && composer install -q --no-interaction --ignore-platform-reqs --no-scripts)
41+
php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib" "$RUNNER_TEMP/tempest"
42+
else
43+
php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib"
44+
fi
4245
php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan --neon-only
43-
cd "$W/projects/tiny" && php "$W/arms/fcv/phpstan.phar" diagnose | grep -E 'Turbo extension|Mechanism|Reason'
44-
- name: Start the daemon prototype
45-
run: php bench/start-daemon.php "$RUNNER_TEMP/w" "$RUNNER_TEMP/d.sock"
46-
- name: Tiny project, stock vs file cache vs daemon
46+
cd "$W/projects/tiny" && php "$W/arms/pr/phpstan.phar" diagnose | grep -E 'Turbo extension|Mechanism|Reason'
47+
- name: Tiny project
4748
env:
48-
ARMS: stock,fcv,daemon
49-
DAEMON_SOCKET: ${{ runner.temp }}/d.sock
49+
ARMS: stock,pr,pre
5050
run: php bench/suite.php "$RUNNER_TEMP/w" tiny 12
51-
- name: php-parser lib (271 files), stock vs file cache vs daemon
51+
- name: php-parser lib (271 files)
5252
env:
53-
ARMS: stock,fcv,daemon
54-
DAEMON_SOCKET: ${{ runner.temp }}/d.sock
53+
ARMS: stock,pr,pre
5554
run: php bench/suite.php "$RUNNER_TEMP/w" parser 7
56-
- name: Daemon request CPU (whole process tree), php-parser lib cold
57-
run: |
58-
cd "$RUNNER_TEMP/w/projects/parser"
59-
for i in 1 2 3; do rm -rf tmp-daemon; DAEMON_CPU=1 php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" analyse -c phpstan-daemon.neon --no-progress --memory-limit=-1 || true; done
60-
- name: Daemon output check
55+
- name: php-parser lib, spawned workers
56+
env:
57+
ARMS: stock,pr,pre
58+
run: php bench/suite.php "$RUNNER_TEMP/w" spawn 7
59+
- name: Tempest (full)
60+
if: runner.os == 'Linux'
61+
env:
62+
ARMS: stock,pr,pre
63+
run: php bench/suite.php "$RUNNER_TEMP/w" tempest 3
64+
- name: Same errors as stock
6165
run: |
6266
set +e
63-
cd "$RUNNER_TEMP/w/projects/parser"
64-
php "$RUNNER_TEMP/w/arms/stock/phpstan.phar" analyse -c phpstan-stock.neon --no-progress --error-format=raw > stock.txt; echo "stock exit $?"
65-
: > "$RUNNER_TEMP/w/daemon.log"
66-
php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" analyse -c phpstan-daemon.neon --no-progress --error-format=raw; echo "daemon exit $?"
67-
grep '/lib/' "$RUNNER_TEMP/w/daemon.log" | sed 's#.*/lib/#lib/#' | sort > daemon.txt
68-
sed 's#.*/lib/#lib/#' stock.txt | grep '^lib/' | sort > stock-sorted.txt
69-
wc -l daemon.txt stock-sorted.txt
70-
diff stock-sorted.txt daemon.txt && echo "daemon errors identical to stock" || { echo "DAEMON OUTPUT DIFFERS"; exit 1; }
71-
php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" diagnose; grep -E 'Turbo extension|Mechanism' "$RUNNER_TEMP/w/daemon.log"
67+
for p in parser tempest; do
68+
[ -d "$RUNNER_TEMP/w/projects/$p" ] || continue
69+
cd "$RUNNER_TEMP/w/projects/$p"
70+
rm -rf tmp-stock tmp-pr
71+
php "$RUNNER_TEMP/w/arms/stock/phpstan.phar" analyse -c phpstan-stock.neon --no-progress --error-format=raw --memory-limit=-1 2>/dev/null | sort > stock.txt
72+
php "$RUNNER_TEMP/w/arms/pr/phpstan.phar" analyse -c phpstan-pr.neon --no-progress --error-format=raw --memory-limit=-1 2>/dev/null | sort > pr.txt
73+
echo "$p: $(wc -l < stock.txt) stock lines, $(wc -l < pr.txt) pr lines"
74+
diff -q stock.txt pr.txt && echo "$p: identical"
75+
done
76+
- name: The pull request's cache directory
77+
run: |
78+
D="$(php -r 'echo sys_get_temp_dir();')/phpstan-opcache-$(id -u)"
79+
ls -la "$D"
80+
for k in "$D"/*/; do echo "$k $(find "$k" -name '*.bin' | wc -l) entries $(du -sh "$k" | cut -f1)"; done

0 commit comments

Comments
 (0)