Wednesday, 9 February 2011

Size of industrial F# code bases

Almost exactly a year ago, we published a blog post stating that we had 345kLOC of production OCaml code and 171kLOC of production F# code. Today, we have 261kLOC of production F# code!


Arseny Kapoulkine said...

How much is that in megabytes - 10 or so?

I'm very much interested in the compilation characteristics. Namely:

- How long does the full rebuild take?
- How many projects (assemblies?) is this split into; how many executables and how many DLLs?
- How long does the build take on average (i.e. while you're working)?
- What's the build parallelism ratio - i.e. how many cores are used when doing a full rebuild, avg/max?
- What's the average implementation file length? Do you use interface files?

Arseny Kapoulkine said...

The reason I'm asking is - my tiny codebase (44 files, 3.5 KLOC) already takes 4 seconds to compile, so I wonder if F# scales to large projects (4 seconds are bad, but I can live with that; I wonder how I'll feel when I reach 10 seconds or more...).

On large C++ codebases you can get huge gains with parallelism (i.e. IncrediBuild), and incremental builds are quite fast as long as link time is not a problem; but F# has neither incremental nor parallel building within an assembly, which is sad.

Michael said...

4 *seconds*? Or 10? Or even 120?
Take the time to have a look out the window, or go grab a cup of relaxing herbal tea! :)