On Sun, Jul 22, 2012 at 4:33 PM, Jon Zeppieri <zeppi...@gmail.com> wrote:
>
> However, it's possible that I was wrong about the cause of the bold
> time difference. Today I updated my 'case-v3' branch with the changes
> that have been committed to the plt master branch since the two
> diverged, and I separately cloned the current plt master to a
> different directory. (Previously, I had been using a tarball as the
> control.) And I started running the build tests again. That's still
> going on, but so far, the preliminary results are the opposite of the
> ones from the other day. My 'case-v3' branch tends to build slightly
> faster.
>
> Obviously, there are any number of things that can account for the
> build time difference: background processes eating up CPU, physical
> file location on disk, etc. If the numbers continue to come out as
> they are now, I'll just conclude that the build time really isn't
> significantly affected one way or the other.


The Numbers

Summary: it's a wash, as far as I can tell. I no longer think that the
new case implementation is a performance problem for building racket
code. I would like to test runtime performance on real-world programs,
too, as Eli suggests.

A. raco setup

time raco setup [with a "raco setup -c" between each build, of course]
========================
Current 'case'

Build #1
real    21m48.942s
user    42m3.813s
sys     24m19.049s

Build #2
real    21m59.107s
user    41m41.311s
sys     24m25.283s

Build #4
real    21m44.930s
user    41m33.061s
sys     23m52.597s

Build #5
real    21m41.810s
user    41m44.639s
sys     23m49.387s

Build #6
real    21m53.944s
user    41m48.191s
sys     23m57.606s
------------------------------
Current 'case' summary

Average
real   21m49.75s
user  41m46.2s
sys   24m04.78s

Max
real   21m59.11s
user  42m03.81s
sys   24m25.28s

Min
real   21m41.81s
user  41m33.06s
sys   23m49.39s

Deviation
real   17.3s
user  30.75s
sys   35.9s


========================
Clinger 'case'

Build #1
real    21m47.926s
user    41m42.205s
sys     24m10.360s

Build #2
real    22m4.643s
user    41m36.205s
sys     24m20.108s

Build #3
real    22m1.669s
user    41m45.768s
sys     24m18.989s

Build #4
real    21m52.921s
user    41m51.076s
sys     24m11.115s

Build #5
real    21m51.656s
user    41m37.121s
sys     23m56.040s
------------------------------
Clinger 'case' summary

Average
real  21:55.76
user 41:32.68
sys  24:11.32

Max
real  22:04.93
user 41:51.08
sys  24:20.11

Min
real  21:47.93
user 40:43.73
sys  23:56.04

Deviation
real  17
user 1:07.34
sys  24.07


B. raco build

** for the tests below, I took the times of the second run of the test
for each implementation to prime the FS cache

1) time ( for i in {1..10} ; do  rm compiler/compiled/zo-parse_rkt.zo;
raco make compiler/zo-parse.rkt ; done )

current
real    0m9.684s
user    0m7.533s
sys     0m1.696s

clinger
real    0m9.556s
user    0m7.376s
sys     0m1.670s


2) time ( for i in {1..10} ; do  rm
racket/private/compiled/serialize_rkt.zo; raco make
racket/private/serialize.rkt ; done )

current
real    0m6.142s
user    0m4.668s
sys     0m1.166s

clinger
real    0m6.132s
user    0m4.607s
sys     0m1.161s


3) time ( for i in {1..10} ; do  rm racket/compiled/pretty_rkt.zo;
raco make racket/pretty.rkt ; done )

current
real    0m7.582s
user    0m6.029s
sys     0m1.143s

clinger
real    0m7.527s
user    0m6.093s
sys     0m1.158s

4) time ( for i in {1..10} ; do  rm racket/compiled/unit_rkt.zo; raco
make racket/unit.rkt ; done )

current
real    0m26.014s
user    0m22.865s
sys     0m2.679s

clinger
real    0m26.073s
user    0m22.904s
sys     0m2.698s

5) time ( for i in {1..10} ; do  rm
scribble/compiled/latex-render_rkt.zo; raco make
scribble/latex-render.rkt ; done )
[ comparatively heavy use of 'case']

current
real    0m9.070s
user    0m7.255s
sys     0m1.550s

clinger
real    0m8.705s
user    0m6.959s
sys     0m1.467s


6) time ( for i in {1..10} ; do  rm
plot/plot2d/compiled/plot-area_rkt.zo; raco make
plot/plot2d/plot-area.rkt ; done )
[no case expressions in source]

current
real    0m14.172s
user    0m11.326s
sys     0m2.516s

clinger
real    0m13.910s
user    0m11.088s
sys     0m2.480s


C. Runtime performance

I only have one test so far: a test of a partial markdown parser. The
parser is implemented in typed racket. The test of the parser is in
untyped racket.
_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to