1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.lang3;
19
20 import java.text.NumberFormat;
21 import java.util.Calendar;
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public class CharUtilsPerfRun {
59
60 private static final int WARM_UP = 100;
61
62 private static final int COUNT = 5000;
63
64 private static final char[] ALL_CHARS;
65
66 static {
67 ALL_CHARS = new char[Character.MAX_VALUE];
68 for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i++) {
69 ALL_CHARS[i] = i;
70 }
71 }
72
73 public static void main(final String[] args) {
74 new CharUtilsPerfRun().run();
75 }
76
77 private void printlnTotal(final String prefix, final long startMillis) {
78 final long totalMillis = System.currentTimeMillis() - startMillis;
79 System.out.println(prefix + ": " + NumberFormat.getInstance().format(totalMillis) + " milliseconds.");
80 }
81
82 private void printSysInfo() {
83 System.out.println("Now: " + Calendar.getInstance().getTime());
84 System.out.println(SystemProperties.getJavaVendor()
85 + " "
86 + SystemProperties.getJavaRuntimeName()
87 + " "
88 + SystemProperties.getJavaRuntimeVersion());
89 System.out.println(SystemProperties.getJavaVmVendor()
90 + " "
91 + SystemProperties.getJavaVmName()
92 + " "
93 + SystemProperties.getJavaVmVersion());
94 System.out.println(SystemProperties.getOsName()
95 + " "
96 + SystemProperties.getOsVersion()
97 + " "
98 + SystemProperties.getOsArch()
99 + " "
100 + System.getProperty("sun.cpu.isalist"));
101 }
102
103 private void run() {
104 this.printSysInfo();
105 long startMillis;
106 startMillis = System.currentTimeMillis();
107 this.printlnTotal("Do nothing", startMillis);
108 run_CharUtils_isAsciiNumeric(WARM_UP);
109 startMillis = System.currentTimeMillis();
110 run_CharUtils_isAsciiNumeric(COUNT);
111 this.printlnTotal("run_CharUtils_isAsciiNumeric", startMillis);
112 run_inlined_CharUtils_isAsciiNumeric(WARM_UP);
113 startMillis = System.currentTimeMillis();
114 run_inlined_CharUtils_isAsciiNumeric(COUNT);
115 this.printlnTotal("run_inlined_CharUtils_isAsciiNumeric", startMillis);
116 run_CharSet(WARM_UP);
117 startMillis = System.currentTimeMillis();
118 run_CharSet(COUNT);
119 this.printlnTotal("run_CharSet", startMillis);
120 }
121
122 private int run_CharSet(final int loopCount) {
123 int t = 0;
124 for (int i = 0; i < loopCount; i++) {
125 for (final char ch : ALL_CHARS) {
126 final boolean b = CharSet.ASCII_NUMERIC.contains(ch);
127 t += b ? 1 : 0;
128 }
129 }
130 return t;
131 }
132
133 private int run_CharUtils_isAsciiNumeric(final int loopCount) {
134 int t = 0;
135 for (int i = 0; i < loopCount; i++) {
136 for (final char ch : ALL_CHARS) {
137 final boolean b = CharUtils.isAsciiNumeric(ch);
138 t += b ? 1 : 0;
139 }
140 }
141 return t;
142 }
143
144 private int run_inlined_CharUtils_isAsciiNumeric(final int loopCount) {
145 int t = 0;
146 for (int i = 0; i < loopCount; i++) {
147 for (final char ch : ALL_CHARS) {
148 final boolean b = ch >= '0' && ch <= '9';
149 t += b ? 1 : 0;
150 }
151 }
152 return t;
153 }
154 }