
I decided to cleanup my program by splitting it in different modules. As I was curious about the cost of splitting it, or dually the efficiency of the intermodule optimization I timed it before and after the split. These are the results (ghc-6.6.20070129 on Linux AMD64): Original: 3 Modules with the computational one with an export list real 0m0.385s user 0m0.378s sys 0m0.003s time:100% Variant 1: split computational module in 6 submodules without export list, kept computational module reexporting the stuff with an export list real 0m0.467s user 0m0.464s sys 0m0.003s time: 122% Variant 2: like Variant 1 but removing the old computational module (no reexport list) 134% real 0m0.513s user 0m0.506s sys 0m0.003s All the functions in my modules have type specialized signatures, so non-specialization should almost never be an issue. The module with the Main function was not the exported one. So 20% speed hit, I had hoped for 0, but it is not unbearable (even if my code has to be as fast as possible, this was a very short run), probably I will keep it split to have cleaner code. Not I will have to write an export list for each module a see it the things improve, and how much. If someone has an idea on how else I can improve timings please tell me. Fawzi