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