|
CLOS Detailed Benchmarks
October 1, 1996 |
|
|
MCL-PPC
4.0
9500 |
MCL-PPC
3.9
9500 |
MCL-68k
3.0p2k2
9500 |
MCL-68k
3.0p2k2
7100 |
MCL-6k8
3.0p2k2
950 |
MCL-68k
2.0.1
950 |
|
| Call a function with no arguments that just returns NIL: |
1.00 |
1.01 |
1.66 |
6.29 |
3.30 |
2.68 |
|
| Call a function with one argument that just returns its argument: |
1.00 |
1.01 |
1.70 |
6.58 |
3.31 |
2.85 |
|
| Call a function with one argument that just does an AREF on a simple-vector: |
1.00 |
1.72 |
3.14 |
12.95 |
6.60 |
6.35 |
|
| Call a function with one argument that just does an AREF on a string: |
1.00 |
1.82 |
3.35 |
13.94 |
7.09 |
6.80 |
|
| Call a function with one argument that just does an SVREF on a simple-vector: |
1.00 |
1.02 |
3.09 |
14.85 |
7.36 |
6.40 |
|
| Call a default method (the only method for the generic) with one argument: |
1.00 |
1.62 |
1.40 |
7.16 |
3.34 |
3.13 |
|
| Call a generic function with one method with one argument: a standard-object: |
1.00 |
1.63 |
1.42 |
7.10 |
3.32 |
3.11 |
|
| Call a generic function with three methods with one argument: a standard-object: |
1.00 |
1.64 |
1.36 |
7.13 |
3.33 |
3.11 |
|
| Call a generic function with three methods with one argument, a fixnum: |
1.00 |
1.58 |
2.01 |
8.96 |
4.19 |
4.01 |
|
| Call a reader method (the only method for the generic) with one argument: |
1.00 |
2.49 |
1.47 |
7.04 |
3.03 |
2.92 |
|
| Call a writer method (the only method for the generic) with two arguments: |
1.00 |
2.52 |
1.34 |
7.32 |
3.06 |
3.07 |
|
| Call one EQL-specialized method out of 1: |
1.00 |
1.42 |
1.02 |
5.16 |
2.55 |
2.57 |
|
| Call default method after missing one EQL-specialized method out of 1: |
1.00 |
1.42 |
1.04 |
4.95 |
2.41 |
2.44 |
|
| Call one EQL-specialized method out of 10: |
1.00 |
1.41 |
1.15 |
6.93 |
3.25 |
3.28 |
|
| Call default method after missing one EQL-specialized method out of 10: |
1.00 |
1.50 |
1.39 |
8.88 |
4.06 |
4.15 |
|
| Call one EQL-specialized method out of 100: |
1.00 |
1.58 |
2.12 |
18.87 |
8.59 |
8.62 |
|
| Call default method after missing one EQL-specialized method out of 100: |
1.00 |
1.64 |
2.66 |
23.96 |
14.90 |
13.33 |
|
| Call one EQL-specialized multimethod out of 10: |
1.00 |
1.46 |
0.98 |
5.68 |
2.61 |
2.62 |
|
| Call default method after missing one EQL-specialized multimethod out of 10: |
1.00 |
1.52 |
1.14 |
7.04 |
3.18 |
3.21 |
|
| Call the same method (out of 100) one hundred times: |
1.00 |
1.82 |
2.63 |
10.26 |
5.12 |
4.99 |
|
| Call one hundred different methods: |
1.00 |
1.73 |
3.34 |
9.08 |
4.86 |
5.06 |
|
| Call the same generic function with one method one hundred times: |
1.00 |
1.78 |
2.63 |
10.74 |
5.38 |
5.23 |
|
| Call one hundred different generic functions each with one method: |
1.00 |
1.81 |
4.02 |
10.42 |
6.03 |
5.92 |
|
| Call a two-argument-specialized method (the less specific of two on the generic function): |
1.00 |
1.36 |
0.90 |
4.39 |
2.06 |
1.95 |
|
| Call a two-argument-specialized method (the more specific of two on the generic function): |
1.00 |
1.31 |
1.00 |
4.48 |
2.09 |
1.84 |
|
| Call an ordinary function with five arguments: |
1.00 |
1.00 |
1.72 |
9.55 |
4.32 |
4.48 |
|
| Call a generic function with five arguments: method specializes all five: |
1.00 |
1.37 |
0.83 |
4.25 |
1.91 |
1.85 |
|
| Call a generic function with five arguments: last arg leads to default method: |
1.00 |
1.38 |
0.95 |
4.60 |
2.09 |
2.05 |
|
| Call an ordinary function with ten arguments: |
1.00 |
1.01 |
1.65 |
9.97 |
4.66 |
4.80 |
|
| Call a generic function with ten arguments: method specializes all ten: |
1.00 |
1.37 |
0.79 |
4.20 |
1.88 |
1.80 |
|
| Call a generic function with ten arguments: last arg leads to default method: |
1.00 |
1.38 |
0.85 |
4.42 |
1.97 |
1.92 |
|
| Call a generic function with one method with one argument and read one slot: |
1.00 |
1.38 |
2.80 |
11.92 |
5.06 |
4.62 |
|
| Call a generic function with one method with one argument that calls a reader method: |
1.00 |
2.27 |
1.60 |
7.49 |
3.44 |
3.31 |
|
| Call a generic function with one method with two arguments and write one slot: |
1.00 |
1.38 |
1.97 |
8.55 |
3.90 |
3.46 |
|
| Call SLOT-VALUE not in a method: |
1.00 |
1.03 |
4.12 |
15.87 |
7.70 |
6.86 |
|
| Call a lexical closure created by a method: |
1.00 |
1.06 |
2.77 |
10.82 |
5.41 |
5.15 |
|
| Read a slot in a lexical closure created by a method: |
1.00 |
1.05 |
3.92 |
13.86 |
6.77 |
6.19 |
|
| Call SLOT-VALUE not in a method to read first slot of thirty: |
1.00 |
1.04 |
4.11 |
15.84 |
7.68 |
6.87 |
|
| Call SLOT-VALUE not in a method to read last slot of thirty: |
1.00 |
1.01 |
2.52 |
12.41 |
5.43 |
5.17 |
|
| CLASS-OF a standard-object: |
1.00 |
2.96 |
4.41 |
14.88 |
7.94 |
7.00 |
|
| CLASS-OF a fixnum: |
1.00 |
2.32 |
4.98 |
15.08 |
8.13 |
7.63 |
|
| Call a shared slot reader method (the only method for the generic) with one argument: |
1.00 |
2.23 |
1.83 |
8.30 |
3.57 |
3.38 |
|
| Call a shared slot writer method (the only method for the generic) with two arguments: |
1.00 |
2.33 |
1.47 |
7.73 |
3.28 |
3.25 |
|
| Call a generic function with one method with one argument and read one shared slot: |
1.00 |
1.34 |
2.65 |
12.06 |
4.96 |
4.59 |
|
| Call a generic function with one method with one argument and write one shared slot: |
1.00 |
1.32 |
1.53 |
8.77 |
3.78 |
3.41 |
|
| Call SLOT-VALUE of a shared slot not in a method: |
1.00 |
1.02 |
3.59 |
14.54 |
6.88 |
6.32 |
|
| MAKE-INSTANCE of a constant class with two slots and no initialization methods: |
1.00 |
1.06 |
6.22 |
14.93 |
7.33 |
7.78 |
|
| MAKE-INSTANCE of a constant class with four slots and no initialization methods: |
1.00 |
1.05 |
5.48 |
13.57 |
6.70 |
7.04 |
|
| MAKE-INSTANCE of a constant class with four slots and one initialization method: |
1.00 |
1.08 |
5.38 |
12.94 |
6.39 |
6.61 |
|
| MAKE-INSTANCE of a variable class by name with two slots and no initialization methods: |
1.00 |
1.10 |
6.39 |
13.52 |
6.76 |
7.24 |
|
| MAKE-INSTANCE of a variable class by object with two slots and no initialization methods: |
1.00 |
1.04 |
6.11 |
15.12 |
7.31 |
7.92 |
|
| SLOT-UNBOUND trap for a local slot accessed from a method: |
1.00 |
1.51 |
2.22 |
8.94 |
4.11 |
3.77 |
|
| SLOT-UNBOUND trap for a local slot accessed from a reader: |
1.00 |
1.84 |
1.29 |
5.96 |
2.74 |
2.62 |
|
| SLOT-UNBOUND trap for a local slot accessed from SLOT-VALUE: |
1.00 |
1.45 |
2.28 |
9.18 |
4.36 |
3.96 |
|
| SLOT-UNBOUND trap for a shared slot accessed from a method: |
1.00 |
1.62 |
2.12 |
8.66 |
3.97 |
3.68 |
|
| SLOT-UNBOUND trap for a shared slot accessed from a reader: |
1.00 |
1.85 |
1.27 |
5.98 |
2.75 |
2.62 |
|
| SLOT-UNBOUND trap for a shared slot accessed from SLOT-VALUE: |
1.00 |
1.59 |
2.27 |
8.85 |
4.19 |
3.82 |
|
| Call a generic function with one applicable method: a primary: |
1.00 |
1.63 |
1.37 |
7.10 |
3.32 |
3.11 |
|
| Call a generic function with two applicable primary methods: only one runs: |
1.00 |
1.87 |
1.52 |
7.28 |
3.35 |
3.00 |
|
| Call a generic function with two primary (one runs) one before method: |
1.00 |
1.10 |
1.72 |
8.91 |
3.95 |
3.95 |
|
| Call a generic function with two primary (one runs) one before one after method: |
1.00 |
1.19 |
1.73 |
7.43 |
3.44 |
3.48 |
|
| Call a generic function with one around one primary method: |
1.00 |
1.10 |
1.78 |
8.33 |
3.44 |
3.25 |
|
| Call a generic function with one around one primary one before method: |
1.00 |
1.20 |
2.07 |
10.69 |
4.39 |
4.09 |
|
| Call a generic function with one around one primary one before one after method: |
1.00 |
1.27 |
1.93 |
9.52 |
4.01 |
3.81 |
|
| Call a generic function with two around two primary (one runs) two before two after methods: |
1.00 |
1.07 |
2.04 |
9.31 |
4.02 |
3.92 |
|
| Call a generic function with two around three primary (two run via call-next-method) two before two after methods: |
1.00 |
1.09 |
2.04 |
9.72 |
4.28 |
4.17 |
|