備忘録 Pelemay 0.0.4 ベンチマーク

備忘録的にベンチマークの結果を記録します。

サンプルベンチマークプログラム
https://github.com/zeam-vm/pelemay_sample

現時点では Pelemay はシングルコアで CPU の SIMD 命令を生成しての実行ですので，GPU は性能に関係ないと思います。

# 実行方法

```bash
$ 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倍