Faster Command Line Tools in D
John Colvin via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri May 26 07:41:39 PDT 2017
On Wednesday, 24 May 2017 at 13:39:57 UTC, Mike Parker wrote:
> Some of you may remember Jon Degenhardt's talk from one of the
> Silicon Valley D meetups, where he described the performance
> improvements he saw when he rewrote some of eBay's command line
> tools in D. He has now put the effort into crafting a blog post
> on the same topic, where he takes D version of a command-line
> tool written in Python and incrementally improves its
> performance.
>
> The blog:
> https://dlang.org/blog/2017/05/24/faster-command-line-tools-in-d/
>
> Reddit:
> https://www.reddit.com/r/programming/comments/6d25mg/faster_command_line_tools_in_d/
I spent some time fiddling with my own manual approaches to
making this as fast, wasn't satisfied and so decided to try using
Steven's iopipe (https://github.com/schveiguy/iopipe) instead.
Results were excellent.
https://gist.github.com/John-Colvin/980b11f2b7a7e23faf8dfb44bd9f1242
On my machine:
python takes a little over 20s, pypy wobbles around 3.5s, v1 from
the blog takes about 3.9s, v4b took 1.45s, a version of my own
that is hideous* manages 0.78s at best, the above version with
iopipe hits below 0.67s most runs.
Not bad for a process that most people would call "IO-bound"
(code for "I don't want to have to write fast code & it's all the
disk's fault").
Obviously this version is a bit more code than is ideal, iopipe
is currently quite "barebones", but I don't see why with some
clever abstractions and wrappers it couldn't be the default thing
that one does even for small scripts.
*using byChunk and manually managing linesplits over chunks, very
nasty.
More information about the Digitalmars-d-announce
mailing list