title: OCaml modules and performance
body: <p>Some functions are really easy to implement in OCaml (for example, map from a list) but you may use the map of the OCaml library: List.map</p>
  
  <p>However, we can wonder which code will be more efficient. Calling a module of a separate compilation unit (a library) may void some possible optimizations. I read in the news group fa.caml that when calling functions from libraries, closures are used.</p>
  
  <p>I have OCaml code in production that use Modules and Functors for doing generic programming. For historical reason my code is monolitic: all in one file. Now I have more time, I'm willing to separate the code into files for such modules. However, I'm afraid I can lost performance, as it took me a while to get it right. For example, I   have modules for wrapping complex objects with numbers, so I enforce unique representation and fast   comparison. I use those wrapped objects with generic Maps, Sets, and build caches upon them.</p>
  
  <p>The questions are: </p>
  
  <ul>
  <li>Am I going to loose performance if I move to separate files?</li>
  <li>Is OCaml doing many optimizations on my code full of modules, functors, etc?</li>
  </ul>
  
  <p>In C++, if you define class method in a .h, the compiler may end up inlining short methods, etc. Is it possible to achieve that in OCaml using separated files?</p>