Path: blob/master/test/micro/org/openjdk/bench/java/lang/StringEncode.java
66646 views
/*1* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/22package org.openjdk.bench.java.lang;2324import org.openjdk.jmh.annotations.*;25import org.openjdk.jmh.infra.Blackhole;2627import java.nio.charset.Charset;28import java.util.concurrent.TimeUnit;2930@BenchmarkMode(Mode.AverageTime)31@OutputTimeUnit(TimeUnit.NANOSECONDS)32@Fork(value = 3)33@Warmup(iterations = 5, time = 2)34@Measurement(iterations = 5, time = 3)35@State(Scope.Thread)36public class StringEncode {3738@Param({"US-ASCII", "ISO-8859-1", "UTF-8", "MS932", "ISO-8859-6"})39private String charsetName;40private Charset charset;41private String asciiString;42private String utf16String;43private String longUtf16String;44private String longUtf16StartString;4546@Setup47public void setup() {48charset = Charset.forName(charsetName);49asciiString = "ascii string";50utf16String = "UTF-\uFF11\uFF16 string";51longUtf16String = """52Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ac sem eu53urna egestas placerat. Etiam finibus ipsum nulla, non mattis dolor cursus a.54Nulla nec nisl consectetur, lacinia neque id, accumsan ante. Curabitur et55sapien in magna porta ultricies. Sed vel pellentesque nibh. Pellentesque dictum56dignissim diam eu ultricies. Class aptent taciti sociosqu ad litora torquent57per conubia nostra, per inceptos himenaeos. Suspendisse erat diam, fringilla58sed massa sed, posuere viverra orci. Suspendisse tempor libero non gravida59efficitur. Vivamus lacinia risus non orci viverra, at consectetur odio laoreet.60Suspendisse potenti.6162Phasellus vel nisi iaculis, accumsan quam sed, bibendum eros. Sed venenatis63nulla tortor, et eleifend urna sodales id. Nullam tempus ac metus sit amet64sollicitudin. Nam sed ex diam. Praesent vitae eros et neque condimentum65consectetur eget non tortor. Praesent bibendum vel felis nec dignissim.66Maecenas a enim diam. Suspendisse quis ligula at nisi accumsan lacinia id67hendrerit sapien. Donec aliquam mattis lectus eu ultrices. Duis eu nisl68euismod, blandit mauris vel, placerat urna. Etiam malesuada enim purus,69tristique mollis odio blandit quis. Vivamus posuere.70\uFF1171""";72longUtf16StartString = """73\uFF1174Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ac sem eu75urna egestas placerat. Etiam finibus ipsum nulla, non mattis dolor cursus a.76Nulla nec nisl consectetur, lacinia neque id, accumsan ante. Curabitur et77sapien in magna porta ultricies. Sed vel pellentesque nibh. Pellentesque dictum78dignissim diam eu ultricies. Class aptent taciti sociosqu ad litora torquent79per conubia nostra, per inceptos himenaeos. Suspendisse erat diam, fringilla80sed massa sed, posuere viverra orci. Suspendisse tempor libero non gravida81efficitur. Vivamus lacinia risus non orci viverra, at consectetur odio laoreet.82Suspendisse potenti.8384Phasellus vel nisi iaculis, accumsan quam sed, bibendum eros. Sed venenatis85nulla tortor, et eleifend urna sodales id. Nullam tempus ac metus sit amet86sollicitudin. Nam sed ex diam. Praesent vitae eros et neque condimentum87consectetur eget non tortor. Praesent bibendum vel felis nec dignissim.88Maecenas a enim diam. Suspendisse quis ligula at nisi accumsan lacinia id89hendrerit sapien. Donec aliquam mattis lectus eu ultrices. Duis eu nisl90euismod, blandit mauris vel, placerat urna. Etiam malesuada enim purus,91tristique mollis odio blandit quis. Vivamus posuere.92""";93}9495@Benchmark96public byte[] encodeAsciiCharsetName() throws Exception {97return asciiString.getBytes(charset);98}99100@Benchmark101public byte[] encodeAscii() throws Exception {102return asciiString.getBytes(charset);103}104105@Benchmark106public void encodeMix(Blackhole bh) throws Exception {107bh.consume(asciiString.getBytes(charset));108bh.consume(utf16String.getBytes(charset));109}110111@Benchmark112public byte[] encodeUTF16LongEnd() throws Exception {113return longUtf16String.getBytes(charset);114}115116@Benchmark117public byte[] encodeUTF16LongStart() throws Exception {118return longUtf16StartString.getBytes(charset);119}120121@Benchmark122public byte[] encodeUTF16() throws Exception {123return utf16String.getBytes(charset);124}125}126127128