[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Request for Clarification on Rationale



 * From: William D Clinger <will@xxxxxxxxxxx>
 | Petite Chez Scheme is quite slow compared to Chez Scheme.
 | If you want to know how values and call-with-values compare
 | to mu in Chez Scheme, you have to compare using Chez Scheme,
 | not Petite Chez Scheme.

 | Unless you are benchmarking a slow interpreter (and what's
 | the point of that?), Joo ChurlSoo's original benchmark runs
 | too quickly to time accurately, so I changed the 100000 to
 | 10000000 (ten million).

 | With that change, I measured the following on a SunBlade
 | 1500 with no other users.  All times are in seconds:

                Chez    Larceny MzScheme
                v6.1    v0.90   v301

 | bm1:            10.9     6.5    25.4
 | bm2:            12.0    10.1    24.7
 | bm3:            11.2     6.4    22.6
 | bm4:            10.4    10.7    36.0

 | bm5:            10.5     6.0    17.3
 | bm6:            10.0     9.9    25.2
 | bm7:            10.8     6.8    25.5
 | bm8:            11.2    11.2    35.1

 | bm9:             1.6     3.6    12.3
 | bm10:            1.7     7.6    15.7
 | bm11:            2.1     4.7    17.2
 | bm12:            1.8     8.6    22.5

 | bm1: ten million uses of mu
 | bm2: ten million uses of values
 | bm3: ten million calls to a procedure that uses mu
 | bm4: ten million calls to a procedure that uses values

 | bm5: same as bm1, substituting 'one for 1, 'two for 2, and so on
 | bm6: same as bm2, substituting 'one for 1, 'two for 2, and so on
 | bm7: same as bm3, substituting 'one for 1, 'two for 2, and so on
 | bm8: same as bm4, substituting 'one for 1, 'two for 2, and so on

 | bm9:  same as bm5, using a counter instead of for-each
 | bm10: same as bm6, using a counter instead of for-each
 | bm11: same as bm7, using a counter instead of for-each
 | bm12: same as bm8, using a counter instead of for-each

 | On this machine, I see little if any evidence that mu is
 | faster than values in Chez Scheme.

 | One could argue that mu is faster than values in Larceny
 | and in MzScheme, but Larceny v0.90 does not even attempt
 | to implement values efficiently, and the same appears to
 | be true of MzScheme.  At any rate, it is clear that any
 | differences in the speed of mu and values are dwarfed by
 | differences in the speed of different implementations.

 | By the way, the effect of the minor changes between bm1
 | and bm5, and between bm5 and bm9, should warn us against
 | trying to draw firm conclusions from these micro-benchmarks.
 | With Joo's original benchmarks, most of the execution time
 | was spent in creating a long list and in traversing that
 | list via the for-each procedure, suffering many cache
 | misses along the way.  Only a small portion of the run
 | time was spent in mu or values.

Thank you so much for the laborious benchmarks that I couldn't do.
(I have neither Chez Scheme nor such a machine.)

If VALUES/CALL-WITH-VALUES is implemented more efficiently in several
implementations with MU as a momentum, I'm satisfied with that.

-- 
Joo ChurlSoo