TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.4 KiB
34 lines
1.4 KiB
# Known-array count benchmark
|
|
|
|
Each iteration updates one of 100 array keys and adds `count($items)` to a
|
|
checksum. Mutation prevents measuring only a loop-invariant count. This is
|
|
an isolated array-update/count workload, not an application-wide benchmark.
|
|
|
|
From this directory with PHP 8.5 and a matching PHPX/embed installation:
|
|
|
|
```sh
|
|
php run.php 30000000
|
|
php ../../bin/tpc.php project.yml --no-progress -o array_count_benchmark
|
|
./array_count_benchmark 30000000
|
|
```
|
|
|
|
Expected checksum: `2999995050`. Compile baseline and candidate into separate
|
|
binary paths and build directories, keeping PHPX and compiler flags fixed.
|
|
Alternate execution order, discard a warm-up pair, and compare medians.
|
|
|
|
## Sample result
|
|
|
|
Linux ARM64 in Docker, PHP 8.5.10 ZTS, PHPX `6a68f38`, GCC `-O2`, no LTO;
|
|
TypePHP baseline `692841a6` versus direct known-array count lowering.
|
|
30 million iterations, nine measured pairs after one discarded warm-up:
|
|
|
|
| Build | Median | Range |
|
|
| --- | ---: | ---: |
|
|
| Baseline | 319.63 ms | 301.22–345.40 ms |
|
|
| Direct count | 192.73 ms | 185.74–196.94 ms |
|
|
|
|
Elapsed time decreased 39.70%; all nine pairs were faster and checksums
|
|
matched. Raw samples in seconds are in `results-arm64.json`. Measurements
|
|
include process startup and exclude compilation, on a shared development
|
|
machine. They do not imply the same application-wide improvement or a
|
|
speedup against native PHP.
|
|
|