Speeding up text file parser (BLAST tabular format)

Fredrik Boulund via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Sep 14 07:54:32 PDT 2015


On Monday, 14 September 2015 at 14:40:29 UTC, H. S. Teoh wrote:
> If performance is a problem, the first thing I'd recommend is 
> to use a profiler to find out where the hotspots are. (More 
> often than not, I have found that the hotspots are not where I 
> expected them to be; sometimes a 1-line change to an 
> unanticipated hotspot can result in a huge performance boost.)

I agree with you on that. I used Python's cProfile module to find 
the performance bottleneck in the Python version I posted, and 
shaved off 8-10 seconds of runtime on an extraneous str.split() I 
had missed.
I tried using the built-in profiler in DMD on the D program but 
to no avail. I couldn't really make any sense of the output other 
than that were enormous amounts of calls to lots of functions I 
couldn't find a way to remove from the code. Here's a paste of 
the trace output from the version I posted in the original post: 
http://dpaste.com/1AXPK9P

> The next thing I'd try is to use gdc instead of dmd. ;-)  IME, 
> code produced by `gdc -O3` is at least 20-30% faster than code 
> produced by `dmd -O -inline`. Sometimes the difference can be 
> up to 40-50%, depending on the kind of code you're compiling.

Yes, it really seems that gdc or ldc is the way to go.


More information about the Digitalmars-d-learn mailing list