I can't comment on the type-checker internals, but a general first
step would be to make sure that you don't recompile things that you
don't need to.

If you change the *implementation* of a module without changing its
interface, you should not have to recompile any other module, at least
when using bytecode compilation. You need not recompile even the
modules that depend on this -- there is only an
interface-dependency. With native compilation, the compiler can
inspect depending modules to perform some cross-module optimizations,
so there will be an implementation-dependency by default, but you can
disable it -- the .cmx for bar.ml won't depend on its dependency
foo.ml if foo.cmx is not available at compile time. It's simpler to
just use ocamlc for development. It's also faster at code generation,
but apparently your bottleneck is typing.

To fully benefit from separate compilation, you may want to have
a slightly more fine-grained separation of you program into
compilation units. If a given module interface can be split in two
parts, one that evolves slowly and on which a lot of modules depend,
and one that is little used outside but changes frequently, it's a big
win to split it into two separate module interfaces -- when you can,
eg. the whole thing is not encapsulated as a functor.

On Sun, Mar 11, 2012 at 9:11 AM, SerP <serp...@gmail.com> wrote:
> We encountered a problem of a slow compilation. When the project grew up,
> the time of compilation increased considerably. We have many classes and
> objects, and the type checking of objects and classes performs very slowly.
> I have Core i3 3GHz iMac, and the average compilation time of one module is
> 7-13 seconds. The entire projet is compiled within 10-15 minutes. The major
> part of the time is taken by "Typemod.type_implementation", which include
> many calls of Ctype.unify (80% of compilation time). Now, it is getting hard
> and slow to develop the projetct, are there any ways to accelarate it? It is
> difficult to get all fine points, but I wish I could make the process
> faster. Thanks for any help or comments. Looking forward to your reply


-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to