As a result, Concept now has a JIT compiler, that fully compiles a function upon the second run. For the standard benchmark (strings + arrays + arithmetic operations + objects) some impressive improvements were noticed. For example, arithmetic operations are about 2000% faster. Function call (context create and free) about 50% faster. Array operations are slightly faster for numbers, the same for strings. String operations already optimized remain the same. Object method call (including constructor call) about 25% faster by reusing memory (instead of freeing the memory, is conserved for the next call, same with objects). So, for the Sieve of Erathostenes repeated 900 times, these are the results (lower, the better):
As you can see, the benefits for using JIT are massive. I've chosen to use an existing JIT (Stack-less JIT compiler). It's incredibly simple and clean, and it took me about 2 days to link it to the Concept Core.
As a note, for PHP, if the Sieve interval is extended from 8193 to 1,000,000 primes, the execution time raises exponentially (v5.4 about 580 seconds, Concept with JIT about 30 seconds). A low interval was chosen as representative for real-life situations.
For GyroGears, bug fixes and a new feature: import from CSV for related members and export to Excel.
For now, Concept 2.4 with JIT compiler is available for download.
Post a Comment