Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sun/nio/cs/StrCodingBenchmarkDB.java
41152 views
1
/*
2
* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.util.*;
25
import java.nio.*;
26
import java.nio.charset.*;
27
import java.util.concurrent.*;
28
import java.util.regex.Pattern;
29
30
public class StrCodingBenchmarkDB extends StrCodingBenchmark {
31
32
33
public static void main(String[] args) throws Throwable {
34
final int itrs = Integer.getInteger("iterations", 100000);
35
//final int itrs = Integer.getInteger("iterations", 12);
36
final int size = Integer.getInteger("size", 2048);
37
final int subsize = Integer.getInteger("subsize", 128);
38
final int maxchar = Integer.getInteger("maxchar", 128);
39
final String regex = System.getProperty("filter");
40
final Pattern filter = (regex == null) ? null : Pattern.compile(regex);
41
final boolean useSecurityManager = Boolean.getBoolean("SecurityManager");
42
if (useSecurityManager)
43
System.setSecurityManager(new PermissiveSecurityManger());
44
final Random rnd = new Random();
45
46
String[] csns = new String[] {
47
"Big5",
48
"Johab",
49
"EUC_CN",
50
"EUC_KR",
51
"MS932",
52
"MS936",
53
"MS949",
54
"MS950",
55
"GBK",
56
57
"Big5_HKSCS",
58
"Big5_HKSCS_2001",
59
"Big5_Solaris",
60
"MS950_HKSCS",
61
"MS950_HKSCS_XP",
62
"IBM1364",
63
"IBM1381",
64
"IBM1383",
65
"IBM930",
66
"IBM933",
67
"IBM935",
68
"IBM937",
69
"IBM939",
70
"IBM942",
71
"IBM943",
72
"IBM948",
73
"IBM949",
74
"IBM950",
75
"IBM970",
76
};
77
78
ArrayList<long[]> sum = new ArrayList<>();
79
80
for (final String csn : csns) {
81
final Charset cs = Charset.forName(csn);
82
List<Integer> cps = new ArrayList<>(0x4000);
83
int off = 0;
84
int cp = 0;
85
int n = 0;
86
CharsetEncoder enc = cs.newEncoder();
87
while (cp < 0x10000 && n < cps.size()) {
88
if (enc.canEncode((char)cp)) {
89
cps.add(cp);
90
n++;
91
}
92
cp++;
93
}
94
Collections.shuffle(cps);
95
char[] ca = new char[cps.size()];
96
for (int i = 0; i < cps.size(); i++)
97
ca[i] = (char)(int)cps.get(i);
98
99
100
System.out.printf("%n--------%s---------%n", csn);
101
for (int sz = 8; sz <= 2048; sz *= 2) {
102
System.out.printf(" [len=%d]%n", sz);
103
104
final char[] chars = Arrays.copyOf(ca, sz);
105
final String str = new String(chars);
106
final byte[] bs = str.getBytes(cs);
107
108
Job[] jobs = {
109
110
new Job("String decode: csn") {
111
public void work() throws Throwable {
112
for (int i = 0; i < itrs; i++)
113
new String(bs, csn);
114
}},
115
116
new Job("String decode: cs") {
117
public void work() throws Throwable {
118
for (int i = 0; i < itrs; i++)
119
new String(bs, cs);
120
}},
121
122
new Job("String encode: csn") {
123
public void work() throws Throwable {
124
for (int i = 0; i < itrs; i++)
125
str.getBytes(csn);
126
}},
127
128
new Job("String encode: cs") {
129
public void work() throws Throwable {
130
for (int i = 0; i < itrs; i++)
131
str.getBytes(cs);
132
}},
133
};
134
sum.add(time(jobs));
135
136
}
137
}
138
}
139
}
140
141