Skip to content

Commit ae240e3

Browse files
Add boxing benchmark for report
1 parent 17593a1 commit ae240e3

File tree

2 files changed

+197
-0
lines changed

2 files changed

+197
-0
lines changed

bench-micro/boxing.json

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
[
2+
{
3+
"jmhVersion" : "1.32",
4+
"benchmark" : "dotty.tools.benchmarks.inlinetraits.Boxing.noUnboxing",
5+
"mode" : "thrpt",
6+
"threads" : 3,
7+
"forks" : 3,
8+
"jvm" : "C:\\Program Files\\Eclipse Adoptium\\jdk-8.0.362.9-hotspot\\jre\\bin\\java.exe",
9+
"jvmArgs" : [
10+
"-XX:MaxJavaStackTraceDepth=1000000",
11+
"-DBENCH_COMPILER_CLASS_PATH=D:\\Bureau\\dotty\\scala3-bootstrapped\\..\\out\\bootstrap\\scala3-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\tasty\\..\\out\\bootstrap\\tasty-core-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\library\\..\\out\\bootstrap\\scala3-library-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\compiler\\..\\out\\bootstrap\\scala3-compiler-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\interfaces\\target\\classes;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\modules\\scala-asm\\9.5.0-scala-1\\scala-asm-9.5.0-scala-1.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-sbt\\compiler-interface\\1.3.5\\compiler-interface-1.3.5.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-reader\\3.19.0\\jline-reader-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-terminal\\3.19.0\\jline-terminal-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-terminal-jna\\3.19.0\\jline-terminal-jna-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\scala-library\\2.13.10\\scala-library-2.13.10.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\com\\google\\protobuf\\protobuf-java\\3.7.0\\protobuf-java-3.7.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-sbt\\util-interface\\1.3.0\\util-interface-1.3.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\net\\java\\dev\\jna\\jna\\5.3.1\\jna-5.3.1.jar",
12+
"-DBENCH_CLASS_PATH=D:\\Bureau\\dotty\\library\\..\\out\\bootstrap\\scala3-library-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\scala-library\\2.13.10\\scala-library-2.13.10.jar"
13+
],
14+
"jdkVersion" : "1.8.0_362",
15+
"vmName" : "OpenJDK 64-Bit Server VM",
16+
"vmVersion" : "25.362-b09",
17+
"warmupIterations" : 5,
18+
"warmupTime" : "10 s",
19+
"warmupBatchSize" : 1,
20+
"measurementIterations" : 10,
21+
"measurementTime" : "10 s",
22+
"measurementBatchSize" : 1,
23+
"primaryMetric" : {
24+
"score" : 162.88061150250263,
25+
"scoreError" : 2.990266993200497,
26+
"scoreConfidence" : [
27+
159.89034450930214,
28+
165.87087849570312
29+
],
30+
"scorePercentiles" : {
31+
"0.0" : 158.3581373751091,
32+
"50.0" : 160.28885591739254,
33+
"90.0" : 169.6676632568476,
34+
"95.0" : 169.8869985658039,
35+
"99.0" : 170.04377291450956,
36+
"99.9" : 170.04377291450956,
37+
"99.99" : 170.04377291450956,
38+
"99.999" : 170.04377291450956,
39+
"99.9999" : 170.04377291450956,
40+
"100.0" : 170.04377291450956
41+
},
42+
"scoreUnit" : "ops/s",
43+
"rawData" : [
44+
[
45+
159.9577132559345,
46+
160.820849607922,
47+
158.3581373751091,
48+
159.13670149401082,
49+
159.90507319387544,
50+
159.35157415269947,
51+
161.04014712956862,
52+
158.97091563147922,
53+
159.68412981003686,
54+
159.10201035759437
55+
],
56+
[
57+
169.69816685647166,
58+
169.75872864413566,
59+
169.3931308602309,
60+
168.84567408425647,
61+
168.68752669939073,
62+
168.01393345352642,
63+
168.43396265824845,
64+
169.24873341905266,
65+
168.1437959438598,
66+
170.04377291450956
67+
],
68+
[
69+
159.42176813732596,
70+
159.85707946987995,
71+
160.5072331177505,
72+
160.07047871703455,
73+
159.7747397173151,
74+
159.29500433917917,
75+
159.32565316619957,
76+
161.0217732116697,
77+
160.02757657473384,
78+
160.5223610820771
79+
]
80+
]
81+
},
82+
"secondaryMetrics" : {
83+
}
84+
},
85+
{
86+
"jmhVersion" : "1.32",
87+
"benchmark" : "dotty.tools.benchmarks.inlinetraits.Boxing.withUnboxing",
88+
"mode" : "thrpt",
89+
"threads" : 3,
90+
"forks" : 3,
91+
"jvm" : "C:\\Program Files\\Eclipse Adoptium\\jdk-8.0.362.9-hotspot\\jre\\bin\\java.exe",
92+
"jvmArgs" : [
93+
"-XX:MaxJavaStackTraceDepth=1000000",
94+
"-DBENCH_COMPILER_CLASS_PATH=D:\\Bureau\\dotty\\scala3-bootstrapped\\..\\out\\bootstrap\\scala3-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\tasty\\..\\out\\bootstrap\\tasty-core-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\library\\..\\out\\bootstrap\\scala3-library-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\compiler\\..\\out\\bootstrap\\scala3-compiler-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;D:\\Bureau\\dotty\\interfaces\\target\\classes;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\modules\\scala-asm\\9.5.0-scala-1\\scala-asm-9.5.0-scala-1.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-sbt\\compiler-interface\\1.3.5\\compiler-interface-1.3.5.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-reader\\3.19.0\\jline-reader-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-terminal\\3.19.0\\jline-terminal-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\jline\\jline-terminal-jna\\3.19.0\\jline-terminal-jna-3.19.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\scala-library\\2.13.10\\scala-library-2.13.10.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\com\\google\\protobuf\\protobuf-java\\3.7.0\\protobuf-java-3.7.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-sbt\\util-interface\\1.3.0\\util-interface-1.3.0.jar;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\net\\java\\dev\\jna\\jna\\5.3.1\\jna-5.3.1.jar",
95+
"-DBENCH_CLASS_PATH=D:\\Bureau\\dotty\\library\\..\\out\\bootstrap\\scala3-library-bootstrapped\\scala-3.3.2-RC1-bin-SNAPSHOT-nonbootstrapped\\classes;C:\\Users\\Tim\\AppData\\Local\\Coursier\\Cache\\v1\\https\\repo1.maven.org\\maven2\\org\\scala-lang\\scala-library\\2.13.10\\scala-library-2.13.10.jar"
96+
],
97+
"jdkVersion" : "1.8.0_362",
98+
"vmName" : "OpenJDK 64-Bit Server VM",
99+
"vmVersion" : "25.362-b09",
100+
"warmupIterations" : 5,
101+
"warmupTime" : "10 s",
102+
"warmupBatchSize" : 1,
103+
"measurementIterations" : 10,
104+
"measurementTime" : "10 s",
105+
"measurementBatchSize" : 1,
106+
"primaryMetric" : {
107+
"score" : 107.78403619364975,
108+
"scoreError" : 0.7631272570198755,
109+
"scoreConfidence" : [
110+
107.02090893662988,
111+
108.54716345066963
112+
],
113+
"scorePercentiles" : {
114+
"0.0" : 105.14904049054749,
115+
"50.0" : 107.85612745984966,
116+
"90.0" : 109.30252744044898,
117+
"95.0" : 109.61946698757238,
118+
"99.0" : 109.70077420709083,
119+
"99.9" : 109.70077420709083,
120+
"99.99" : 109.70077420709083,
121+
"99.999" : 109.70077420709083,
122+
"99.9999" : 109.70077420709083,
123+
"100.0" : 109.70077420709083
124+
},
125+
"scoreUnit" : "ops/s",
126+
"rawData" : [
127+
[
128+
109.00953072990166,
129+
108.50140704365302,
130+
106.79159035965387,
131+
108.1089641435479,
132+
106.46136711927547,
133+
105.9937398934388,
134+
105.8401380001939,
135+
106.14651450645843,
136+
105.14904049054749,
137+
106.49817456001642
138+
],
139+
[
140+
107.86202723477766,
141+
109.70077420709083,
142+
108.86938534959998,
143+
109.11877547416185,
144+
108.08157275978294,
145+
108.2784106655475,
146+
107.83824225340533,
147+
109.55294289887547,
148+
108.43692033784615,
149+
107.63180718013086
150+
],
151+
[
152+
108.00700643350362,
153+
107.04263353261555,
154+
107.51463533491946,
155+
108.36206364754942,
156+
109.322944325592,
157+
107.80799535416462,
158+
107.76136941477469,
159+
107.39985168504745,
160+
108.58103318849845,
161+
107.85022768492168
162+
]
163+
]
164+
},
165+
"secondaryMetrics" : {
166+
}
167+
}
168+
]
169+
170+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package dotty.tools.benchmarks.inlinetraits
2+
3+
import org.openjdk.jmh.annotations._
4+
import java.util.concurrent.TimeUnit.{SECONDS, MILLISECONDS}
5+
import scala.util.Random
6+
7+
// @BenchmarkMode(Array(Mode.SampleTime))
8+
@Fork(3)
9+
@Threads(3)
10+
@Warmup(iterations = 5, time = 10, timeUnit = SECONDS)
11+
@Measurement(iterations = 10, time = 10, timeUnit = SECONDS)
12+
// @OutputTimeUnit(MILLISECONDS)
13+
@State(Scope.Benchmark)
14+
class Boxing {
15+
class Wrapper[T](val x: T)
16+
class IntWrapper(val x: Int)
17+
18+
val numbers = 1 to 1000000
19+
val ws = numbers.map(Wrapper(_))
20+
val iws = numbers.map(IntWrapper(_))
21+
22+
@Benchmark
23+
def noUnboxing: Int = iws.map(w => IntWrapper(w.x*w.x + 2*w.x)).foldLeft(0)(_ + _.x)
24+
25+
@Benchmark
26+
def withUnboxing: Int = ws.map(w => Wrapper(w.x*w.x + 2*w.x)).foldLeft(0)(_ + _.x)
27+
}

0 commit comments

Comments
 (0)