Finally, I got the nbody benchmark from Debian benchmark games to run correctly! The result:

Language Time to complete
PHP 7.0.0 186 sec
subsetphp 13 sec
Java 6 sec

This makes subsetphp around 14 times faster than PHP 7 on my local machine.

The Flash

Some caveats:

  • The compiler is just a prototype - adding features might speed up or slow down the benchmark.
  • This is a number-crunching benchmark, PHP was not made for that purpose - so who cares?
  • Still cool!

If anyone is interested you can view the PHP code here.

Some comments about the code:

  • Why no functions? Because I haven’t added support to infer types like array<object>.
  • You might see the if-statement before some for-loops - the for-statement has a bug, will fix soon.
  • The code is copied from the Java version.

This successful benchmark will mark version 0.1. Next version will include:

  • The binary tree benchmark, testing GC performance
  • Infer arrays passed as arguments to functions, possibly using static “duck-typing” (inspired by the OCaml object system)
  • Escape analysis, enforcing allocation on stack where possible
  • Other stuff

Wish you a nice week!