Optimizations and performance

ZombineDev via Digitalmars-d digitalmars-d at puremagic.com
Sat Jun 25 09:05:08 PDT 2016


On Friday, 17 June 2016 at 16:51:04 UTC, Jack Stouffer wrote:
> On Wednesday, 8 June 2016 at 22:19:47 UTC, Bauss wrote:
>> D definitely needs some optimizations, I mean look at its 
>> benchmarks compared to other languages: 
>> https://github.com/kostya/benchmarks
>
> Welp, I tried making it faster and I apparently made it slower: 
> https://github.com/kostya/benchmarks/pull/89
>
> Oops.

Fixed: https://github.com/kostya/benchmarks/pull/91

This should be enough to make D the fastest in bench.b and 
second/third after C++ Gcc / Crystal, without changing the 
algorithm, which is not allowed.

Request to future contributors: please benchmark the code and 
make sure there's an improvement in the majority of compilers and 
most importantly in the fastest case (LDC in this instance) 
before submitting changes. Code style / refactoring changes are 
clearly welcome, as long as they don't decrease the performance.

In this particular case `@safe` is a performance pessimization in 
release mode, because it introduces bounds checks. To remedy 
that, one has to compile with `-boundscheck=off`. See 
https://dlang.org/dmd-linux.html#switch-boundscheck for more info.

A note about my changes: as for this piece of code we are only 
interested in performance and code brevity, I decided to omit 
attributes as no combination of them could bring performance 
improvement (and @safe was a pessimization in all of my tests, 
given the build flags). I have more information about the changes 
in the pull request.

Overall DMD completes mandel.b for 75.5% of the time of the 
previous version, LDC for 62.6% and GDC for 88.1%. The code is 
64.9% of the original (in terms of LOC).


More information about the Digitalmars-d mailing list