On Thursday, 22 February 2018 at 08:04:19 UTC, Timothee Cour wrote:
it actually does reduce compilation times if the imports go directly to the module in
question rather than to a module that publicly imports the symbols

time1=compilation time of `import std.algorithm : find;` before split time21=compilation time of `import std.algorithm : find;` after split time22=compilation time of `import std.algorithm.searching : find;` after split

my understand is that we have:
time22 < time1 but time21 ~= time1
so we're in no way worse than before the split
unless time21 > time1 (noticably) in which case you have a strong argument


On Wed, Feb 21, 2018 at 11:57 PM, Jonathan M Davis via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
On Wednesday, February 21, 2018 23:48:32 Timothee Cour via Digitalmars-d wrote:
```
import std.algorithm.searching : find;

not

import std.algorithm : find;
```

that's just a missed opportunity to benefit from the split; we're in no way worse after the split than before the split in that regard. We can just leave it as `import std.algorithm : find;` with no adverse effect.

Maybe, but the CI stuff for Phobos doesn't like that, and it actually does reduce compilation times if the imports go directly to the module in question rather than to a module that publicly imports the symbols.

- Jonathan M Davis

Regarding import time:

Apart from the fact that you usually end up importing almost entire Phobos anyways, the import cost for importing entire Phobos is about 0.2s on my system with the upcoming 2.079 and we are working on getting it even further towards 0 which shouldn't be too hard (there's still a lot of unnecessary work being done by default).

I'm really looking forward to the point where we can just tell people to use `import std;` because there's almost no overhead. (I am aware that there are downsides to importing everything but that's not what this discussion is about)

Reply via email to