• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2009 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package examples;
18 
19 import com.google.caliper.Benchmark;
20 import com.google.caliper.Param;
21 
22 /**
23  * Measures the various ways the JDK converts doubles to strings.
24  */
25 public class DoubleToStringBenchmark2 {
26   @Param boolean useWrapper;
27 
28   enum Value {
29     Pi(Math.PI),
30     NegativeZero(-0.0),
31     NegativeInfinity(Double.NEGATIVE_INFINITY),
32     NaN(Double.NaN);
33 
34     final double d;
35 
Value(double d)36     Value(double d) {
37       this.d = d;
38     }
39   }
40 
41   @Param Value value;
42 
toString(int reps)43   @Benchmark int toString(int reps) {
44     int dummy = 0;
45     if (useWrapper) {
46       Double d = value.d;
47       for (int i = 0; i < reps; i++) {
48         dummy += d.toString().length();
49       }
50     } else {
51       double d = value.d;
52       for (int i = 0; i < reps; i++) {
53         dummy += ((Double) d).toString().length();
54       }
55     }
56     return dummy;
57   }
58 
stringValueOf(int reps)59   @Benchmark int stringValueOf(int reps) {
60     int dummy = 0;
61     if (useWrapper) {
62       Double d = value.d;
63       for (int i = 0; i < reps; i++) {
64         dummy += String.valueOf(d).length();
65       }
66     } else {
67       double d = value.d;
68       for (int i = 0; i < reps; i++) {
69         dummy += String.valueOf(d).length();
70       }
71     }
72     return dummy;
73   }
74 
stringFormat(int reps)75   @Benchmark int stringFormat(int reps) {
76     int dummy = 0;
77     if (useWrapper) {
78       Double d = value.d;
79       for (int i = 0; i < reps; i++) {
80         dummy += String.format("%f", d).length();
81       }
82     } else {
83       double d = value.d;
84       for (int i = 0; i < reps; i++) {
85         dummy += String.format("%f", d).length();
86       }
87     }
88     return dummy;
89   }
90 
quoteTrick(int reps)91   @Benchmark int quoteTrick(int reps) {
92     int dummy = 0;
93     if (useWrapper) {
94       Double d = value.d;
95       for (int i = 0; i < reps; i++) {
96         dummy += ("" + d).length();
97       }
98     } else {
99       double d = value.d;
100       for (int i = 0; i < reps; i++) {
101         dummy += ("" + d).length();
102       }
103     }
104     return dummy;
105   }
106 }
107