Skip to content

Commit

Permalink
run benchmarks nightly
Browse files Browse the repository at this point in the history
  • Loading branch information
ruslandoga committed Dec 20, 2024
1 parent e8a4431 commit 432608d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 124 deletions.
15 changes: 7 additions & 8 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: bench

on: workflow_dispatch
on:
workflow_dispatch:
schedule:
- cron: "42 9 * * *"

jobs:
benchee:
Expand Down Expand Up @@ -41,10 +44,6 @@ jobs:
- run: mix deps.get --only $MIX_ENV
- run: mix compile --warnings-as-errors
- run: mkdir results
- run: mix run bench/insert.exs | tee results/insert.txt
- run: mix run bench/stream.exs | tee results/stream.txt
- uses: actions/upload-artifact@v4
with:
name: results
path: results/*.txt
- run: mix run bench/cast.exs
- run: mix run bench/insert.exs
- run: mix run bench/stream.exs
117 changes: 1 addition & 116 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,119 +272,4 @@ Ch.query!(pid, "INSERT INTO ch_datetimes(datetime) FORMAT RowBinary", [[naive],

## Benchmarks

<details>
<summary><code>INSERT</code> 1 million rows <a href="https://github.com/ClickHouse/clickhouse-go#benchmark">(original)</a></summary>

<pre><code>
$ MIX_ENV=bench mix run bench/insert.exs

This benchmark is based on https://github.com/ClickHouse/clickhouse-go#benchmark

Operating System: macOS
CPU Information: Apple M1
Number of Available Cores: 8
Available memory: 8 GB
Elixir 1.14.4
Erlang 25.3

Benchmark suite executing with the following configuration:
warmup: 2 s
time: 5 s
memory time: 0 ns
reduction time: 0 ns
parallel: 1
inputs: 1_000_000 rows
Estimated total run time: 28 s

Benchmarking encode with input 1_000_000 rows ...
Benchmarking encode stream with input 1_000_000 rows ...
Benchmarking insert with input 1_000_000 rows ...
Benchmarking insert stream with input 1_000_000 rows ...

##### With input 1_000_000 rows #####
Name ips average deviation median 99th %
encode stream 1.63 612.96 ms ±11.30% 583.03 ms 773.01 ms
insert stream 1.22 819.82 ms ±9.41% 798.94 ms 973.45 ms
encode 1.09 915.75 ms ±44.13% 750.98 ms 1637.02 ms
insert 0.73 1373.84 ms ±31.01% 1331.86 ms 1915.76 ms

Comparison:
encode stream 1.63
insert stream 1.22 - 1.34x slower +206.87 ms
encode 1.09 - 1.49x slower +302.79 ms
insert 0.73 - 2.24x slower +760.88 ms</code>
</pre>

</details>

<details>
<summary><code>SELECT</code> 500, 500 thousand, and 500 million rows <a href="https://github.com/ClickHouse/ch-bench">(original)</a></summary>

<pre><code>
$ MIX_ENV=bench mix run bench/stream.exs

This benchmark is based on https://github.com/ClickHouse/ch-bench

Operating System: macOS
CPU Information: Apple M1
Number of Available Cores: 8
Available memory: 8 GB
Elixir 1.14.4
Erlang 25.3

Benchmark suite executing with the following configuration:
warmup: 2 s
time: 5 s
memory time: 0 ns
reduction time: 0 ns
parallel: 1
inputs: 500 rows, 500_000 rows, 500_000_000 rows
Estimated total run time: 1.05 min

Benchmarking stream with decode with input 500 rows ...
Benchmarking stream with decode with input 500_000 rows ...
Benchmarking stream with decode with input 500_000_000 rows ...
Benchmarking stream with manual decode with input 500 rows ...
Benchmarking stream with manual decode with input 500_000 rows ...
Benchmarking stream with manual decode with input 500_000_000 rows ...
Benchmarking stream without decode with input 500 rows ...
Benchmarking stream without decode with input 500_000 rows ...
Benchmarking stream without decode with input 500_000_000 rows ...

##### With input 500 rows #####
Name ips average deviation median 99th %
stream with decode 4.69 K 213.34 μs ±12.49% 211.38 μs 290.94 μs
stream with manual decode 4.69 K 213.43 μs ±17.40% 210.96 μs 298.75 μs
stream without decode 4.65 K 215.08 μs ±10.79% 213.79 μs 284.66 μs

Comparison:
stream with decode 4.69 K
stream with manual decode 4.69 K - 1.00x slower +0.0838 μs
stream without decode 4.65 K - 1.01x slower +1.74 μs

##### With input 500_000 rows #####
Name ips average deviation median 99th %
stream without decode 234.58 4.26 ms ±13.99% 4.04 ms 5.95 ms
stream with manual decode 64.26 15.56 ms ±8.36% 15.86 ms 17.97 ms
stream with decode 41.03 24.37 ms ±6.27% 24.39 ms 26.60 ms

Comparison:
stream without decode 234.58
stream with manual decode 64.26 - 3.65x slower +11.30 ms
stream with decode 41.03 - 5.72x slower +20.11 ms

##### With input 500_000_000 rows #####
Name ips average deviation median 99th %
stream without decode 0.32 3.17 s ±0.20% 3.17 s 3.17 s
stream with manual decode 0.0891 11.23 s ±0.00% 11.23 s 11.23 s
stream with decode 0.0462 21.66 s ±0.00% 21.66 s 21.66 s

Comparison:
stream without decode 0.32
stream with manual decode 0.0891 - 3.55x slower +8.06 s
stream with decode 0.0462 - 6.84x slower +18.50 s</code>
</pre>

</details>

[CI Results](https://github.com/plausible/ch/actions/workflows/bench.yml) (click the latest workflow run and scroll down to "Artifacts")
Please see the results in the latest nightly [CI runs.](./actions/workflows/bench.yml)

0 comments on commit 432608d

Please sign in to comment.