Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/jdk17u
Path: blob/master/test/micro/org/openjdk/bench/java/lang/StringEncode.java
66646 views
1
/*
2
* Copyright (c) 2021, 2022, 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
package org.openjdk.bench.java.lang;
24
25
import org.openjdk.jmh.annotations.*;
26
import org.openjdk.jmh.infra.Blackhole;
27
28
import java.nio.charset.Charset;
29
import java.util.concurrent.TimeUnit;
30
31
@BenchmarkMode(Mode.AverageTime)
32
@OutputTimeUnit(TimeUnit.NANOSECONDS)
33
@Fork(value = 3)
34
@Warmup(iterations = 5, time = 2)
35
@Measurement(iterations = 5, time = 3)
36
@State(Scope.Thread)
37
public class StringEncode {
38
39
@Param({"US-ASCII", "ISO-8859-1", "UTF-8", "MS932", "ISO-8859-6"})
40
private String charsetName;
41
private Charset charset;
42
private String asciiString;
43
private String utf16String;
44
private String longUtf16String;
45
private String longUtf16StartString;
46
47
@Setup
48
public void setup() {
49
charset = Charset.forName(charsetName);
50
asciiString = "ascii string";
51
utf16String = "UTF-\uFF11\uFF16 string";
52
longUtf16String = """
53
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ac sem eu
54
urna egestas placerat. Etiam finibus ipsum nulla, non mattis dolor cursus a.
55
Nulla nec nisl consectetur, lacinia neque id, accumsan ante. Curabitur et
56
sapien in magna porta ultricies. Sed vel pellentesque nibh. Pellentesque dictum
57
dignissim diam eu ultricies. Class aptent taciti sociosqu ad litora torquent
58
per conubia nostra, per inceptos himenaeos. Suspendisse erat diam, fringilla
59
sed massa sed, posuere viverra orci. Suspendisse tempor libero non gravida
60
efficitur. Vivamus lacinia risus non orci viverra, at consectetur odio laoreet.
61
Suspendisse potenti.
62
63
Phasellus vel nisi iaculis, accumsan quam sed, bibendum eros. Sed venenatis
64
nulla tortor, et eleifend urna sodales id. Nullam tempus ac metus sit amet
65
sollicitudin. Nam sed ex diam. Praesent vitae eros et neque condimentum
66
consectetur eget non tortor. Praesent bibendum vel felis nec dignissim.
67
Maecenas a enim diam. Suspendisse quis ligula at nisi accumsan lacinia id
68
hendrerit sapien. Donec aliquam mattis lectus eu ultrices. Duis eu nisl
69
euismod, blandit mauris vel, placerat urna. Etiam malesuada enim purus,
70
tristique mollis odio blandit quis. Vivamus posuere.
71
\uFF11
72
""";
73
longUtf16StartString = """
74
\uFF11
75
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ac sem eu
76
urna egestas placerat. Etiam finibus ipsum nulla, non mattis dolor cursus a.
77
Nulla nec nisl consectetur, lacinia neque id, accumsan ante. Curabitur et
78
sapien in magna porta ultricies. Sed vel pellentesque nibh. Pellentesque dictum
79
dignissim diam eu ultricies. Class aptent taciti sociosqu ad litora torquent
80
per conubia nostra, per inceptos himenaeos. Suspendisse erat diam, fringilla
81
sed massa sed, posuere viverra orci. Suspendisse tempor libero non gravida
82
efficitur. Vivamus lacinia risus non orci viverra, at consectetur odio laoreet.
83
Suspendisse potenti.
84
85
Phasellus vel nisi iaculis, accumsan quam sed, bibendum eros. Sed venenatis
86
nulla tortor, et eleifend urna sodales id. Nullam tempus ac metus sit amet
87
sollicitudin. Nam sed ex diam. Praesent vitae eros et neque condimentum
88
consectetur eget non tortor. Praesent bibendum vel felis nec dignissim.
89
Maecenas a enim diam. Suspendisse quis ligula at nisi accumsan lacinia id
90
hendrerit sapien. Donec aliquam mattis lectus eu ultrices. Duis eu nisl
91
euismod, blandit mauris vel, placerat urna. Etiam malesuada enim purus,
92
tristique mollis odio blandit quis. Vivamus posuere.
93
""";
94
}
95
96
@Benchmark
97
public byte[] encodeAsciiCharsetName() throws Exception {
98
return asciiString.getBytes(charset);
99
}
100
101
@Benchmark
102
public byte[] encodeAscii() throws Exception {
103
return asciiString.getBytes(charset);
104
}
105
106
@Benchmark
107
public void encodeMix(Blackhole bh) throws Exception {
108
bh.consume(asciiString.getBytes(charset));
109
bh.consume(utf16String.getBytes(charset));
110
}
111
112
@Benchmark
113
public byte[] encodeUTF16LongEnd() throws Exception {
114
return longUtf16String.getBytes(charset);
115
}
116
117
@Benchmark
118
public byte[] encodeUTF16LongStart() throws Exception {
119
return longUtf16StartString.getBytes(charset);
120
}
121
122
@Benchmark
123
public byte[] encodeUTF16() throws Exception {
124
return utf16String.getBytes(charset);
125
}
126
}
127
128