Skip to content

Commit 1e26fbb

Browse files
authored
Merge pull request #2204 from ClickHouse/jmh_component_benchmarking
[perf] Added component performance tests
2 parents 72dcb30 + 586a4a7 commit 1e26fbb

4 files changed

Lines changed: 53 additions & 2 deletions

File tree

performance/src/test/com/clickhouse/benchmark/BenchmarkRunner.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.clickhouse.benchmark;
22

3+
4+
import com.clickhouse.benchmark.clients.Components;
35
import com.clickhouse.benchmark.clients.InsertClient;
46
import com.clickhouse.benchmark.clients.QueryClient;
57
import org.openjdk.jmh.annotations.Mode;
@@ -30,6 +32,7 @@ public static void main(String[] args) throws Exception {
3032
Options opt = new OptionsBuilder()
3133
.include(QueryClient.class.getSimpleName())
3234
.include(InsertClient.class.getSimpleName())
35+
.include(Components.class.getSimpleName())
3336
.forks(1) // must be a fork. No fork only for debugging
3437
.mode(Mode.SampleTime)
3538
.timeUnit(TimeUnit.MILLISECONDS)

performance/src/test/com/clickhouse/benchmark/clients/BenchmarkBase.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ public static class DataState {
7979
String tableNameFilled;
8080
@Param({"data_empty"})
8181
String tableNameEmpty;
82+
83+
@Param({"true"})
84+
boolean useClientCompression = true;
8285
DataSet dataSet;
8386

8487
public void setDataSet(DataSet dataSet) {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.clickhouse.benchmark.clients;
2+
3+
import com.clickhouse.benchmark.data.DataSet;
4+
import com.clickhouse.client.api.internal.ClickHouseLZ4OutputStream;
5+
import com.clickhouse.data.ClickHouseOutputStream;
6+
import com.clickhouse.data.stream.Lz4OutputStream;
7+
import net.jpountz.lz4.LZ4Factory;
8+
import org.openjdk.jmh.annotations.Benchmark;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
12+
import java.io.ByteArrayOutputStream;
13+
14+
public class Components extends BenchmarkBase {
15+
private static final Logger LOGGER = LoggerFactory.getLogger(Components.class);
16+
17+
@Benchmark
18+
public void CompressingOutputStreamV1(DataState dataState) {
19+
DataSet dataSet = dataState.dataSet;
20+
try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); ClickHouseOutputStream out =
21+
new Lz4OutputStream(baos, 8196, null)) {
22+
for (byte[] bytes : dataSet.getBytesList(dataSet.getFormat())) {
23+
out.write(bytes);
24+
}
25+
} catch (Exception e) {
26+
LOGGER.error("Error: ", e);
27+
}
28+
}
29+
30+
private static final LZ4Factory factory = LZ4Factory.fastestInstance();
31+
32+
@Benchmark
33+
public void CompressingOutputStreamV2(DataState dataState) {
34+
DataSet dataSet = dataState.dataSet;
35+
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
36+
ClickHouseLZ4OutputStream out = new ClickHouseLZ4OutputStream(baos,
37+
factory.fastCompressor(), 8196)) {
38+
for (byte[] bytes : dataSet.getBytesList(dataSet.getFormat())) {
39+
out.write(bytes);
40+
}
41+
} catch (Exception e) {
42+
LOGGER.error("Error: ", e);
43+
}
44+
}
45+
}

performance/src/test/com/clickhouse/benchmark/clients/InsertClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public void insertV1(DataState dataState) {
4242
try (ClickHouseResponse response = clientV1.read(getServer())
4343
.write()
4444
.option(ClickHouseClientOption.ASYNC, false)
45+
.option(ClickHouseClientOption.COMPRESS, dataState.useClientCompression)
4546
.format(format)
4647
.query(BenchmarkRunner.getInsertQuery(dataState.tableNameEmpty))
4748
.data(out -> {
@@ -63,10 +64,9 @@ public void insertV2(DataState dataState) {
6364
try (InsertResponse response = clientV2.insert(dataState.tableNameEmpty, out -> {
6465
for (byte[] bytes: dataState.dataSet.getBytesList(format)) {
6566
out.write(bytes);
66-
6767
}
6868
out.close();
69-
}, format, new InsertSettings()).get()) {
69+
}, format, new InsertSettings().compressClientRequest(dataState.useClientCompression)).get()) {
7070
response.getWrittenRows();
7171
}
7272
} catch (Exception e) {

0 commit comments

Comments
 (0)