Bye bye, fast compilation times

Dmitry Olshansky dmitry.olsh at gmail.com
Tue Feb 6 05:35:44 UTC 2018


On Tuesday, 6 February 2018 at 04:35:42 UTC, Steven Schveighoffer 
wrote:
> On 2/5/18 11:09 PM, psychoticRabbit wrote:
>> On Monday, 5 February 2018 at 21:27:57 UTC, H. S. Teoh wrote:
>>>
>>> Comment out the call to `regex()`, and I get:
>>>
>>> ------
>>> real    0m0.285s
>>> user    0m0.262s
>>> sys     0m0.023s
>>> ------
>>>
>> 
>> regex is not the only one I avoid..
>> 
>> how long you think this takes to compile?
>> (try ldc2 too ..just for laughs ;-)
>> 
>> ----
>> import std.net.isemail;
>> 
>> void main()
>> {
>>      auto checkEmail = "someone at somewhere.com".isEmail();
>> }
>> ----
>
> I was surprised at this, then I looked at the first line of 
> isEmail:
>
>     static ipRegex = 
> ctRegex!(`\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}`~
>
> `(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`.to!(const(Char)[]));
>
> So it's really still related to regex.


That’s really bad idea - isEmail is template so the burden of 
freaking slow ctRegex
is paid on per instantiation basis. Could be horrible with 
separate compilation.

> -Steve




More information about the Digitalmars-d mailing list