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.
 
 

35 lines
1.5 KiB

# Known-array append benchmark
This benchmark appends a function result to a known array, 1,000 times per
round, and accumulates a checksum. It isolates the append fallback that must
materialize its RHS before writing. It does not represent every PHP workload.
With PHP 8.5 and a matching PHPX/embed installation, from this directory:
```sh
php run.php 100000
php ../../bin/tpc.php project.yml --no-progress -o array_append_benchmark
./array_append_benchmark 100000
```
The checksum must be `200000000`. Build baseline and candidate revisions into
separate build directories and binary paths. Keep PHPX, PHP, compiler flags,
and machine fixed. Alternate binary execution order, discard a warm-up pair,
and compare medians across multiple runs; exclude compilation time.
## Sample result
Linux ARM64 in Docker, PHP 8.5.10 ZTS, PHPX `6a68f38`, GCC `-O2`, no LTO;
baseline TypePHP `692841a6` versus direct known-array append lowering.
Nine measured runs per binary after one discarded pair, 100,000 rounds:
| Build | Median | Range |
| --- | ---: | ---: |
| Baseline | 980.88 ms | 970.47–1018.14 ms |
| Direct append | 563.60 ms | 558.99–582.68 ms |
Elapsed time decreased by 42.54% for this append-heavy microbenchmark; all
nine paired runs were faster. This is not an application-wide speedup or a
comparison against native PHP. Measurements include process startup and were
collected on a shared development machine. Raw times in seconds are in
`results-arm64.json`; its `count` field is the number of rounds.