Skip to content

Commit 6d49622

Browse files
committed
除算・加算などをビット演算に
1 parent eb28f04 commit 6d49622

3 files changed

Lines changed: 41 additions & 31 deletions

File tree

src/jmh/java/net/eewbot/base32768j/Benchmark.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
@State(Scope.Benchmark)
99
public class Benchmark {
1010
private static final Base32768Encoder encoder = Base32768.getEncoder();
11-
private static final Base32768Decoder decoder = Base32768.getDecoder();
11+
// private static final Base32768Decoder decoder = Base32768.getDecoder();
1212
private static byte[] oneByteArray;
1313
private static byte[] tenKilobytesArray;
1414
private static byte[] oneMegabytesArray;
15-
private static String oneByteString;
16-
private static String tenKilobytesString;
17-
private static String oneMegabytesString;
15+
// private static String oneByteString;
16+
// private static String tenKilobytesString;
17+
// private static String oneMegabytesString;
1818

1919
@Setup
2020
public void setup() {
@@ -25,9 +25,9 @@ public void setup() {
2525
tenKilobytesArray[i % 100] = (byte) (i & 0xFF);
2626
oneMegabytesArray[i] = (byte) (i & 0xFF);
2727
}
28-
oneByteString = encoder.encodeToString(oneByteArray);
29-
tenKilobytesString = encoder.encodeToString(tenKilobytesArray);
30-
oneMegabytesString = encoder.encodeToString(oneMegabytesArray);
28+
// oneByteString = encoder.encodeToString(oneByteArray);
29+
// tenKilobytesString = encoder.encodeToString(tenKilobytesArray);
30+
// oneMegabytesString = encoder.encodeToString(oneMegabytesArray);
3131
}
3232

3333
@org.openjdk.jmh.annotations.Benchmark
@@ -51,24 +51,24 @@ public void encoderOneMegabytes(Blackhole blackhole) {
5151
blackhole.consume(encoder.encodeToString(oneMegabytesArray));
5252
}
5353

54-
@org.openjdk.jmh.annotations.Benchmark
55-
@BenchmarkMode(Mode.Throughput)
56-
@OutputTimeUnit(TimeUnit.SECONDS)
57-
public void decoderOneByte(Blackhole blackhole) {
58-
blackhole.consume(decoder.decode(oneByteString));
59-
}
60-
61-
@org.openjdk.jmh.annotations.Benchmark
62-
@BenchmarkMode(Mode.Throughput)
63-
@OutputTimeUnit(TimeUnit.SECONDS)
64-
public void decoderTenKilobytes(Blackhole blackhole) {
65-
blackhole.consume(decoder.decode(tenKilobytesString));
66-
}
67-
68-
@org.openjdk.jmh.annotations.Benchmark
69-
@BenchmarkMode(Mode.Throughput)
70-
@OutputTimeUnit(TimeUnit.SECONDS)
71-
public void decoderOneMegabytes(Blackhole blackhole) {
72-
blackhole.consume(decoder.decode(oneMegabytesString));
73-
}
54+
// @org.openjdk.jmh.annotations.Benchmark
55+
// @BenchmarkMode(Mode.Throughput)
56+
// @OutputTimeUnit(TimeUnit.SECONDS)
57+
// public void decoderOneByte(Blackhole blackhole) {
58+
// blackhole.consume(decoder.decode(oneByteString));
59+
// }
60+
//
61+
// @org.openjdk.jmh.annotations.Benchmark
62+
// @BenchmarkMode(Mode.Throughput)
63+
// @OutputTimeUnit(TimeUnit.SECONDS)
64+
// public void decoderTenKilobytes(Blackhole blackhole) {
65+
// blackhole.consume(decoder.decode(tenKilobytesString));
66+
// }
67+
//
68+
// @org.openjdk.jmh.annotations.Benchmark
69+
// @BenchmarkMode(Mode.Throughput)
70+
// @OutputTimeUnit(TimeUnit.SECONDS)
71+
// public void decoderOneMegabytes(Blackhole blackhole) {
72+
// blackhole.consume(decoder.decode(oneMegabytesString));
73+
// }
7474
}

src/main/java/net/eewbot/base32768j/Base32768.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.eewbot.base32768j;
22

3+
import org.openjdk.jmh.infra.Blackhole;
4+
35
import java.io.IOException;
46
import java.nio.file.Files;
57
import java.nio.file.Path;
@@ -31,6 +33,14 @@ public static Base32768Decoder getDecoder() {
3133
}
3234

3335
public static void main(String[] args) throws IOException {
34-
decoder.decode(Files.readAllBytes(Path.of("src/test/resources/pairs/caseDemo.txt")));
36+
Blackhole blackhole = new Blackhole("Today's password is swordfish. I understand instantiating Blackholes directly is dangerous.");
37+
byte[] testData = new byte[10_000];
38+
for (int i = 0; i < 10_000; i++) {
39+
testData[i] = (byte) (i & 0xFF);
40+
}
41+
42+
while (true) {
43+
blackhole.consume(encoder.encodeToString(testData));
44+
}
3545
}
3646
}

src/main/java/net/eewbot/base32768j/Base32768Encoder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public String encodeToString(byte[] src) {
162162
}
163163

164164
if (bufCount == 15) {
165-
codePoints[i++] = CODES_15[buf / 32] + buf % 32;
165+
codePoints[i++] = CODES_15[buf >> 5] | buf & 31;
166166
buf = 0;
167167
bufCount = 0;
168168
}
@@ -173,10 +173,10 @@ public String encodeToString(byte[] src) {
173173

174174
if (bufCount >= 8) {
175175
buf |= 0x7F >> bufCount - 8;
176-
codePoints[i] = CODES_15[buf / 32] + buf % 32;
176+
codePoints[i] = CODES_15[buf >> 5] | buf & 31;
177177
} else if (bufCount > 0) {
178178
buf = buf >> 8 | 0x3F >> bufCount - 1;
179-
codePoints[i] = CODES_7[buf / 32] + buf % 32;
179+
codePoints[i] = CODES_7[buf >> 5] | buf & 31;
180180
}
181181

182182
return new String(codePoints, 0, codePoints.length);

0 commit comments

Comments
 (0)