備忘録的にベンチマークの結果を記録します。
サンプルベンチマークプログラム
https://github.com/zeam-vm/pelemay_sample
現時点では Pelemay はシングルコアで CPU の SIMD 命令を生成しての実行ですので,GPU は性能に関係ないと思います。
実行方法
$ git clone https://github.com/zeam-vm/pelemay_sample.git
$ cd pelemay_sample
$ mix deps.get
$ mix bench
MacBook Air (11-inch, Mid 2013)
Elixir 1.9.1 / OTP 22 / Mojave / Apple Clang 10.0.1
- Processor: 1.3 GHz Intel Core i5 (プロセッサ数 1,物理コア数 2,論理コア数 4)
- Memory: 4 GB 1600 MHz DDR3
- Graphics: Intel HD Graphics 5000 1536 MB
- SSD (BlackMagic)
- Write 669.6MB/s
- Read 711.3MB/s
- OS
- macOS Mojave 10.14.6
- Elixir 1.9.1 / OTP 22
- Apple clang 10.0.1
## LogisticMapBench
benchmar iterations average time
Pelemay 1000 1375.37 µs/op
Enum 500 3175.05 µs/op
Flow 500 6565.97 µs/op
- Enum → Pelemay: 2.31倍
- Flow → Pelemay: 4.77倍
Elixir 1.9.1 / OTP 22 / Mojave / Apple Clang 11.0.0
- Processor: 1.3 GHz Intel Core i5 (プロセッサ数 1,物理コア数 2,論理コア数 4)
- Memory: 4 GB 1600 MHz DDR3
- Graphics: Intel HD Graphics 5000 1536 MB
- SSD (BlackMagic)
- Write 669.6MB/s
- Read 711.3MB/s
- OS
- macOS Mojave 10.14.6
- Elixir 1.9.1 / OTP 22
- Apple clang 11.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 1000 1181.16 µs/op
Enum 1000 2981.84 µs/op
Flow 500 6689.50 µs/op
- Enum → Pelemay: 2.52倍
- Flow → Pelemay: 5.66倍
iMac Pro (2017)
Elixir 1.9.1 / OTP 22 / High Sierra / Clang 7.0.0
- Processor: 2.3 GHz Intel Xeon W (プロセッサ数 1,物理コア18,論理コア36)
- Memory: 32 GB 2666 MHz DDR4
- Graphics: Radeon Pro Vega 64 16368MB
- SSD (BlackMagic)
- Write 2980.3MB/s
- Read 2465.1MB/s
- OS
- macOS High Sierra 10.13.6
- Elixir 1.9.1 / OTP 22
- Clang 7.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 607.79 µs/op
Enum 1000 1359.19 µs/op
Flow 500 4164.03 µs/op
- Enum → Pelemay: 2.24倍
- Flow → Pelemay: 6.85倍
Elixir 1.9.1 / OTP 22 / Mojave / Apple clang 11.0.0
- Processor: 2.3 GHz Intel Xeon W (プロセッサ数 1,物理コア18,論理コア36)
- Memory: 32 GB 2666 MHz DDR4
- Graphics: Radeon Pro Vega 64 16368MB
- SSD (BlackMagic)
- Write 2980.3MB/s
- Read 2465.1MB/s
- OS
- macOS Mojave 10.14.6
- Elixir 1.9.1 / OTP 22
- Apple clang 11.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 561.45 µs/op
Enum 1000 1369.03 µs/op
Flow 500 3987.21 µs/op
- Enum → Pelemay: 2.44倍
- Flow → Pelemay: 7.10倍
Elixir 1.9.2 / OTP 22 / Mojave / Apple clang 11.0.0
- Processor: 2.3 GHz Intel Xeon W (プロセッサ数 1,物理コア18,論理コア36)
- Memory: 32 GB 2666 MHz DDR4
- Graphics: Radeon Pro Vega 64 16368MB
- SSD (BlackMagic)
- Write 2980.3MB/s
- Read 2465.1MB/s
- OS
- macOS Mojave 10.14.6
- Elixir 1.9.2 / OTP 22
- Apple clang 11.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 547.16 µs/op
Enum 1000 1360.44 µs/op
Flow 500 3970.23 µs/op
- Enum → Pelemay: 2.49倍
- Flow → Pelemay: 7.26倍
Elixir 1.9.2 / OTP 22 / Mojave / Clang 10.0.0
- Processor: 2.3 GHz Intel Xeon W (プロセッサ数 1,物理コア18,論理コア36)
- Memory: 32 GB 2666 MHz DDR4
- Graphics: Radeon Pro Vega 64 16368MB
- SSD (BlackMagic)
- Write 2980.3MB/s
- Read 2465.1MB/s
- OS
- macOS Mojave 10.14.6
- Elixir 1.9.2 / OTP 22
- Clang 10.0.0: clang version 10.0.0 (https://github.com/llvm/llvm-project.git 078bec6c48dd9d17ab9720897d2bb7ccbb886763)
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 554.50 µs/op
Enum 1000 1368.28 µs/op
Flow 500 4031.48 µs/op
- Enum → Pelemay: 2.47倍
- Flow → Pelemay: 7.27倍
Ryzen Threadripper IIyama STYLE-Q039-LCRT2W-LNA
Elixir 1.9.1 / OTP 22 / Ubuntu 18.04 / Clang 8.0.0
- Processor: 3.0-4.2GHz AMD Ryzen Threadripper 2990WX (プロセッサ数 1 物理コア 32 論理コア 64)
- Memory: 32 GB 2666MHz DDR4
- Graphics: NVIDIA TITAN RTX x2
- OS
- Ubuntu (18.04)
- Elixir 1.9.1 / OTP 22
- Clang 8.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 501.03 µs/op
Enum 1000 1060.01 µs/op
Flow 100 10661.63 µs/op
- Enum → Pelemay: 2.12倍
- Flow → Pelemay: 21.28倍
Elixir 1.9.1 / OTP 22 / Ubuntu 18.04 / Clang 10.0.0
- Processor: 3.0-4.2GHz AMD Ryzen Threadripper 2990WX (プロセッサ数 1 物理コア 32 論理コア 64)
- Memory: 32 GB 2666MHz DDR4
- Graphics: NVIDIA TITAN RTX x2
- OS
- Ubuntu (18.04)
- Elixir 1.9.1 / OTP 22
- Clang 10.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 515.81 µs/op
Enum 1000 1065.93 µs/op
Flow 100 10398.44 µs/op
- Enum → Pelemay: 2.07倍
- Flow → Pelemay: 20.16倍
Elixir 1.9.2 / OTP 22 / Ubuntu 18.04 / Clang 8.0.0
- Processor: 3.0-4.2GHz AMD Ryzen Threadripper 2990WX (プロセッサ数 1 物理コア 32 論理コア 64)
- Memory: 32 GB 2666MHz DDR4
- Graphics: NVIDIA TITAN RTX x2
- OS
- Ubuntu (18.04)
- Elixir 1.9.2 / OTP 22
- Clang 8.0.0
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 504.37 µs/op
Enum 1000 1076.51 µs/op
Flow 200 10196.66 µs/op
- Enum → Pelemay: 2.13倍
- Flow → Pelemay: 20.22倍
Elixir 1.9.2 / OTP 22 / Ubuntu 18.04 / Clang 10.0.0
- Processor: 3.0-4.2GHz AMD Ryzen Threadripper 2990WX (プロセッサ数 1 物理コア 32 論理コア 64)
- Memory: 32 GB 2666MHz DDR4
- Graphics: NVIDIA TITAN RTX x2
- OS
- Ubuntu (18.04)
- Elixir 1.9.2 / OTP 22
- Clang 10.0.0 (https://github.com/llvm/llvm-project.git 078bec6c48dd9d17ab9720897d2bb7ccbb886763)
## LogisticMapBench
benchmar iterations average time
Pelemay 5000 497.10 µs/op
Enum 1000 1061.66 µs/op
Flow 100 10643.21 µs/op
- Enum → Pelemay: 2.14倍
- Flow → Pelemay: 21.41倍