Denis Koroskin escribió:
On Sat, 20 Dec 2008 15:39:08 +0300, Bill Baxter <[email protected]> wrote:

On Sat, Dec 20, 2008 at 9:11 PM, Denis Koroskin <[email protected]> wrote:
On Mon, 15 Dec 2008 10:58:23 +0300, Bill Baxter <[email protected]> wrote:

For me, V1.038 compiles my code but takes a really really really long
time to do so.

It now takes  1 min 20 secs for a full build, when it used to compile
in 13 seconds.
Forget the 60% slowdown from LDC -- this is 515% slower!

(building with DSSS and tango)

--bb


I generally make all my imports private and run a command line tool that
strips unnecessary imports once in a while to minimize intermodular
dependencies. Maybe it could help in your case, too?


I'd love to have an unnecessary import finder tool.  How does that work?

--bb

It's easy: remove an import and try if it still works :)
I recompile that file only and since all the imports are private, it generally doesn't break other files.

The only exception - templates. They aren't fully analyzed until instanciated and therefore some imports may be removed even if they are necessary. A simple tag prevents an import from removal:

private import std.algorithm; // force

Works about 3 minutes to remove all redundant imports from DWT.

A problem with import removal in D is conditional compilation:

import foo;
import bar;

int lala() {
    version(FOO) {
        return somethingInModuleFoo();
    } else {
        return somethingInModuleBar();
    }
}

Now you need to compile your file twice, each time with a different version, and see if any import can be removed (in the example, if you remove foo, and FOO is not declared as a version, your file still compiles).

Reply via email to