On the performance of building D programs

Andrej Mitrovic andrej.mitrovich at gmail.com
Sat Apr 6 10:52:25 PDT 2013


On 4/6/13, bearophile <bearophileHUGS at lycos.com> wrote:
> I think the recursive scan is mostly meant for small projects. I
> think large projects will usually use some kind of build scripts.

A gtkD benchmark:

$ C:\dev\projects\GtkD\demos\gtk>timeit rdmd --build-only --force
-IC:\dev\projects\GtkD\src HelloWorld.d
> Done in 26_247_732 usecs.

$ C:\dev\projects\GtkD\demos\gtk>timeit dmd -rb
-IC:\dev\projects\GtkD\src HelloWorld.d
> Done in 22_826_820 usecs.

4 seconds shaved off. Now let's try with a prebuilt static library:

timeit rdmd C:\dev\projects\GtkD\src\GtkD.lib --exclude=atk
--exclude=cairo --exclude=gthread --exclude=gobject --exclude=glib
--exclude=gio --exclude=gdk --exclude=gdkpixbuf --exclude=gtk
--exclude=gtkc --exclude=gtkD --exclude=pango --build-only --force
-IC:\dev\projects\GtkD\src HelloWorld.d

Done in 3_100_329 usecs.

timeit dmd -rb C:\dev\projects\GtkD\src\GtkD.lib -rxatk.* -rxcairo.*
-rxgthread.* -rxgobject.* -rxglib.* -rxgio.* -rxgdk.* -rxgdkpixbuf.*
-rxgtk.* -rxgtkc.* -rxgtkD.* -rxpango.* -IC:\dev\projects\GtkD\src
HelloWorld.d

Done in 1_663_442 usecs.

It definitely helps when you're building something from scratch.

But RDMD can track changes to dependencies, which DMD still can't do.
I want to try implementing this feature in DMD and see the speed
difference for incremental builds.


More information about the Digitalmars-d mailing list