When working with ocamlduce (a few years ago) the same problem was raised. A simple thing that can greatly reduce typing time is putting explicit type annotations. Although the verbosity is increased it is not that much of a burden if the annotated parts do not evolve too much.
The same probably applies with plain ocaml. (It might be that objects/classes typing is more complicated due to sub-typing, although someone with insider knowledge would know better.) On Sun, Mar 11, 2012 at 9:39 AM, Gabriel Scherer <gabriel.sche...@gmail.com> wrote: > 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 > -- _______ Raphael -- 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