Merge: Fast docunits
authorJean Privat <jean@pryen.org>
Wed, 17 Dec 2014 04:54:15 +0000 (23:54 -0500)
committerJean Privat <jean@pryen.org>
Wed, 17 Dec 2014 04:54:15 +0000 (23:54 -0500)
nitunit use the trick of #947 to optimize the execution of simple docunits.

There is now two execution modes: the *single* one and the *simple* one.

*simple* is for docunits that contains only some statements (without importation, classes or functions)
All *simple* docunits of a single module are regrouped into the same program with a switch that calls the correct docunit.

*single* is for docunits that contains importations, classes, functions, etc.
It the the old mode, that compiles and executes each docunit individually.

In case of compilation error with the *simple* mode, the *single* mode is used as a fallback.
Therefore the precise compilation error is assigned to the correct docunit and the other docunits can still be tested.

For numbers, I used `string` that contains 65 simple docunits:

* before: 1m16.564s
* after: 0m1.664s (so a gain of 97.80%)

Close #947

Pull-Request: #1029
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>


Trivial merge