The case I am thinking of is small programs. Here the amount of time on the basis library is (I assume) the vast majority. As an example, the program fun f (x: int): unit = () val _ = f "dog" takes, after everything is in the cache, 2 CPU seconds (and 2.74 real) to print out the error.