Modern C++ Lamentations

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Dec 30 14:45:11 UTC 2018


On 12/29/18 7:18 PM, Ivan Kazmenko wrote:
> On Saturday, 29 December 2018 at 15:34:19 UTC, H. S. Teoh wrote:
>> On Sat, Dec 29, 2018 at 10:35:05AM +0000, JN via Digitalmars-d wrote:
>>> On Saturday, 29 December 2018 at 09:29:30 UTC, Walter Bright wrote:
>>> > http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
>>> > > Time to show off your leet D skilz and see how good we can > do 
>>> it in D!
>>>
>>> I don't know if D is a role model here, considering just importing 
>>> std.regex adds three seconds to compile time - 
>>> https://issues.dlang.org/show_bug.cgi?id=18378 .
>> [...]
>>
>> Yeah no kidding, recently I rewrote a whole bunch of code to get *rid* 
>> of dependency on std.regex because it was too slow, and project 
>> compilation time improved from about 7+ seconds to 2+ seconds.
>>
>> Let me say that again.  Removing dependency on std.regex (by writing 
>> equivalent functionality by hand) improved compilation times from more 
>> than SEVEN seconds to just over TWO seconds. That's almost TRIPLE the 
>> compilation speed.  The mere act of using std.regex causes compilation 
>> times to TRIPLE.
>>
>> Let that sink in for a moment.
> 
> I thought I'd chime in with a similar experience.  I have this small 
> library, testlib.d, used to check text outputs for programming contest 
> problems (used internally, no public repository right now).  As one can 
> imagine, a regular expression is sometimes handy to parse simple 
> alphanumeric constructs and check their format.  But after using 
> std.regex a bit, I put the import down into one function and templated 
> it, and mostly stopped using the function in new checkers' code, 
> developing some not-so-nice workarounds instead.  A typical checker is 
> very short, a couple dozen to a couple hundred lines, and this change 
> brings compile times from 5+ seconds to 2+ seconds.
> 
> Sorry, I just can't stand having to wait 5+ seconds to compile a 
> 50-liner, repeatedly, when the development time for a single checker is 
> on the scale of minutes, not hours.  The C++ analog library 
> (https://github.com/MikeMirzayanov/testlib) is currently 4500+ lines 
> long, and so also takes 5+ seconds to compile a trivial checker.  This 
> was actually one of the incentives for me to switch to D with a homebrew 
> library for writing checkers.
> 
> I know there was a move to make Phobos compilation faster a few months 
> ago, and things seemed to improve a little then, but std.regex still 
> adds seconds of compilation time.

Hmmm, I thought Dmitry was successful at eliminating most overheads of 
importing and not using std.regex. Perhaps a second pass would be needed?



More information about the Digitalmars-d mailing list