内部の処理方法を選択可能なメルセンヌツイスタ


[std::mersenne\_twister\_engine](https://cpprefjp.github.io/reference/random/mersenne_twister_engine.html) に内部の処理方法をテンプレート引数に追加したものを作ってみました。

https://github.com/ikiuo/rngmte

[std::mt19937](https://cpprefjp.github.io/reference/random/mt19937.html) と [std::mt19937\_64](https://cpprefjp.github.io/reference/random/mt19937_64.html) に対応する型を namespace RngMTE に定義してあります。

| std::mt19937 | std::mt19937_64 |
|:--|:--|
| RngMT19937SeqB32 | RngMT19937SeqB64 |
| RngMT19937SeqC32 | RngMT19937SeqC64 |
| RngMT19937SeqBP32 | RngMT19937SeqBP64 |
| RngMT19937SeqCP32 | RngMT19937SeqCP64 |
| RngMT19937SeqSB32 | RngMT19937SeqSB64 |
| RngMT19937SeqSC32 | RngMT19937SeqSC64 |
| RngMT19937BlkB32 | RngMT19937BlkB64 |
| RngMT19937BlkC32 | RngMT19937BlkC64 |
| RngMT19937BlkBV32 | RngMT19937BlkBV64 |
| RngMT19937BlkCV32 | RngMT19937BlkCV64 |
| RngMT19937BlkBT32 | RngMT19937BlkBT64 |
| RngMT19937BlkCT32 | RngMT19937BlkCT64 |
| RngMT19937BlkSB32 | RngMT19937BlkSB64 |
| RngMT19937BlkSC32 | RngMT19937BlkSC64 |
| RngMT19937BlkSBV32 | RngMT19937BlkSBV64 |
| RngMT19937BlkSCV32 | RngMT19937BlkSCV64 |
| RngMT19937BlkSBT32 | RngMT19937BlkSBT64 |
| RngMT19937BlkSCT32 | RngMT19937BlkSCT64 |

# 実行速度測定

32ビット版乱数生成 100,000 回(※)を 1000 回テストして最速だったものを選択した。計測は処理(※)を Intel プロセッサでは RDTSC でサイクル数を、他 CPU では clock\_gettime のナノ秒を 100,000 で割っています。

テストした実行環境は以下のとおり。

| CPU | OS |
|:--|:--|
| Core i3-13100 | Ubuntu 22.04 |
| Core i7-8700B | Ubuntu 24.04, macOS 15.4, Windows 11 |
| Apple M4 | Ubuntu 24.04 |
| Arm Cortex A76 | Raspberry Pi OS (Debian 12) |

| コンパイラ | 最適化オプション |
|:--|:--|
| Clang | <code>-O3 -march=native</code> |
| GNU C/C++ | <code>-O3 -march=native</code> <br> Intel プロセッサでは <code>-mtune=intel</code> を追加 |
| Microsoft C/C++ | <code>/O2 /Ob2 /Oi /Ot /Oy- /arch:AVX2</code> |


表は <code>std::mt19937</code> → <code>std</code> 、<code>RngMT19937{Type}32</code> → <code>{Type}</code> と省略しています。


## CPU: Core i3-13100

### コンパイラ: Clang

| Version | 11.1 | 12.0 | 13.0 | 14.0 | 15.0 |
|:--|--:|--:|--:|--:|--:|
| <code>std</code> | <code>5.331</code> | <code>5.350</code> | <code>5.313</code> | <code>5.304</code> | <code>5.323</code> |
| <code>SeqB</code> | <code>5.523</code> | <code>5.508</code> | <code>5.475</code> | <code>5.470</code> | <code>5.434</code> |
| <code>SeqC</code> | <code>5.743</code> | <code>5.743</code> | <code>5.728</code> | <code>5.728</code> | <code>5.716</code> |
| <code>SeqBP</code> | <code>5.915</code> | <code>5.915</code> | <code>5.572</code> | <code>5.575</code> | <code>5.572</code> |
| <code>SeqCP</code> | <code>6.102</code> | <code>6.102</code> | <code>5.720</code> | <code>5.721</code> | <code>5.720</code> |
| <code>SeqSB</code> | <code>5.500</code> | <code>5.236</code> | <code>5.185</code> | <code>5.411</code> | <code>5.549</code> |
| <code>SeqSC</code> | <code>5.462</code> | <code>5.595</code> | <code>5.373</code> | <code>5.377</code> | <code>5.484</code> |
| <code>BlkB</code> | <code>5.308</code> | <code>5.256</code> | <code>5.008</code> | <code>5.008</code> | <code>4.926</code> |
| <code>BlkC</code> | <code>5.255</code> | <code>5.382</code> | <code>5.010</code> | <code>5.010</code> | <code>4.928</code> |
| <code>BlkBV</code> | <code>6.087</code> | <code>6.099</code> | <code>5.544</code> | <code>5.561</code> | <code>4.305</code> |
| <code>BlkCV</code> | <code>6.086</code> | <code>6.102</code> | <code>5.552</code> | <code>5.544</code> | <code>4.258</code> |
| <code>BlkBT</code> | <code>5.133</code> | <code>5.110</code> | <code>5.130</code> | <code>5.050</code> | <code>4.546</code> |
| <code>BlkCT</code> | <code>5.115</code> | <code>5.155</code> | <code>5.112</code> | <code>5.103</code> | <code>4.531</code> |
| <code>BlkSB</code> | <code>5.446</code> | <code>5.581</code> | <code>5.125</code> | <code>5.144</code> | <code>4.768</code> |
| <code>BlkSC</code> | <code>5.436</code> | <code>5.548</code> | <code>5.129</code> | <code>5.125</code> | <code>4.779</code> |
| <code>BlkSBV</code> | <code>5.482</code> | <code>5.547</code> | <code>5.335</code> | <code>5.351</code> | <code>4.950</code> |
| <code>BlkSCV</code> | <code>5.450</code> | <code>5.570</code> | <code>5.375</code> | <code>5.333</code> | <code>4.964</code> |
| <code>BlkSBT</code> | <code>5.088</code> | <code>5.002</code> | <code>5.062</code> | <code>4.996</code> | <code>5.024</code> |
| <code>BlkSCT</code> | <code>5.051</code> | <code>5.000</code> | <code>5.079</code> | <code>5.055</code> | <code>4.993</code> |

### コンパイラ: GNU C/C++

| Version | 9.5 | 10.5 | 11.4 | 12.3 |
|:--|--:|--:|--:|--:|
| <code>std</code> | <code>5.077</code> | <code>5.203</code> | <code>5.191</code> | <code>5.053</code> |
| <code>SeqB</code> | <code>6.330</code> | <code>5.569</code> | <code>5.576</code> | <code>5.533</code> |
| <code>SeqC</code> | <code>6.125</code> | <code>5.744</code> | <code>6.122</code> | <code>6.118</code> |
| <code>SeqBP</code> | <code>6.915</code> | <code>6.361</code> | <code>6.592</code> | <code>6.565</code> |
| <code>SeqCP</code> | <code>6.880</code> | <code>6.522</code> | <code>6.883</code> | <code>6.879</code> |
| <code>SeqSB</code> | <code>7.863</code> | <code>6.033</code> | <code>6.026</code> | <code>7.451</code> |
| <code>SeqSC</code> | <code>8.010</code> | <code>5.626</code> | <code>5.495</code> | <code>7.564</code> |
| <code>BlkB</code> | <code>5.720</code> | <code>5.809</code> | <code>6.169</code> | <code>6.131</code> |
| <code>BlkC</code> | <code>5.792</code> | <code>5.792</code> | <code>6.165</code> | <code>6.140</code> |
| <code>BlkBV</code> | <code>3.262</code> | <code>3.260</code> | <code>3.504</code> | <code>3.536</code> |
| <code>BlkCV</code> | <code>3.258</code> | <code>3.314</code> | <code>3.553</code> | <code>3.543</code> |
| <code>BlkBT</code> | <code>2.906</code> | <code>2.941</code> | <code>3.200</code> | <code>3.416</code> |
| <code>BlkCT</code> | <code>2.943</code> | <code>2.893</code> | <code>3.200</code> | <code>3.311</code> |
| <code>BlkSB</code> | <code>5.187</code> | <code>5.411</code> | <code>5.421</code> | <code>5.854</code> |
| <code>BlkSC</code> | <code>5.167</code> | <code>5.400</code> | <code>5.425</code> | <code>5.852</code> |
| <code>BlkSBV</code> | <code>5.075</code> | <code>5.258</code> | <code>5.309</code> | <code>5.280</code> |
| <code>BlkSCV</code> | <code>5.059</code> | <code>5.295</code> | <code>5.201</code> | <code>5.356</code> |
| <code>BlkSBT</code> | <code>5.247</code> | <code>5.288</code> | <code>5.305</code> | <code>5.240</code> |
| <code>BlkSCT</code> | <code>5.282</code> | <code>5.303</code> | <code>5.291</code> | <code>5.307</code> |

## CPU: Core i7-8700B

### コンパイラ: Clang

| Version | 17.0(※) | 14.0 | 15.0 | 16.0 | 17.0 | 18.1 | 19.1 |
|:--|--:|--:|--:|--:|--:|--:|--:|
| <code>std</code> | <code>14.714</code> | <code>9.301</code> | <code>9.604</code> | <code>8.593</code> | <code>9.124</code> | <code>8.795</code> | <code>8.107</code> |
| <code>SeqB</code> | <code>9.925</code> | <code>7.738</code> | <code>7.714</code> | <code>9.386</code> | <code>8.710</code> | <code>7.713</code> | <code>10.000</code> |
| <code>SeqC</code> | <code>8.934</code> | <code>8.458</code> | <code>8.462</code> | <code>8.455</code> | <code>8.394</code> | <code>8.394</code> | <code>8.397</code> |
| <code>SeqBP</code> | <code>10.333</code> | <code>10.197</code> | <code>10.196</code> | <code>9.454</code> | <code>8.455</code> | <code>10.159</code> | <code>10.736</code> |
| <code>SeqCP</code> | <code>9.680</code> | <code>8.951</code> | <code>8.969</code> | <code>8.951</code> | <code>8.951</code> | <code>8.951</code> | <code>8.950</code> |
| <code>SeqSB</code> | <code>8.866</code> | <code>8.934</code> | <code>8.026</code> | <code>8.691</code> | <code>8.658</code> | <code>10.562</code> | <code>10.898</code> |
| <code>SeqSC</code> | <code>7.461</code> | <code>8.215</code> | <code>8.961</code> | <code>8.697</code> | <code>8.962</code> | <code>11.237</code> | <code>11.259</code> |
| <code>BlkB</code> | <code>5.803</code> | <code>7.181</code> | <code>7.169</code> | <code>7.168</code> | <code>7.199</code> | <code>6.500</code> | <code>6.484</code> |
| <code>BlkC</code> | <code>5.807</code> | <code>7.161</code> | <code>7.190</code> | <code>7.307</code> | <code>7.161</code> | <code>6.454</code> | <code>6.458</code> |
| <code>BlkBV</code> | <code>5.496</code> | <code>7.601</code> | <code>7.455</code> | <code>6.703</code> | <code>7.447</code> | <code>6.039</code> | <code>6.043</code> |
| <code>BlkCV</code> | <code>5.501</code> | <code>7.588</code> | <code>8.177</code> | <code>6.714</code> | <code>5.923</code> | <code>5.355</code> | <code>6.694</code> |
| <code>BlkBT</code> | <code>5.845</code> | <code>8.374</code> | <code>7.371</code> | <code>7.180</code> | <code>6.685</code> | <code>6.496</code> | <code>6.504</code> |
| <code>BlkCT</code> | <code>5.852</code> | <code>8.293</code> | <code>7.744</code> | <code>7.202</code> | <code>6.721</code> | <code>7.225</code> | <code>5.828</code> |
| <code>BlkSB</code> | <code>6.134</code> | <code>7.546</code> | <code>7.624</code> | <code>7.211</code> | <code>7.612</code> | <code>7.629</code> | <code>7.328</code> |
| <code>BlkSC</code> | <code>6.124</code> | <code>7.651</code> | <code>7.212</code> | <code>7.215</code> | <code>7.614</code> | <code>7.632</code> | <code>7.020</code> |
| <code>BlkSBV</code> | <code>6.116</code> | <code>7.509</code> | <code>7.179</code> | <code>7.937</code> | <code>7.437</code> | <code>8.131</code> | <code>7.817</code> |
| <code>BlkSCV</code> | <code>6.121</code> | <code>7.553</code> | <code>8.682</code> | <code>7.926</code> | <code>8.610</code> | <code>7.452</code> | <code>6.849</code> |
| <code>BlkSBT</code> | <code>4.928</code> | <code>8.159</code> | <code>8.144</code> | <code>8.138</code> | <code>7.638</code> | <code>7.393</code> | <code>7.391</code> |
| <code>BlkSCT</code> | <code>4.950</code> | <code>7.752</code> | <code>8.194</code> | <code>8.141</code> | <code>7.765</code> | <code>8.126</code> | <code>8.127</code> |

※は macOS Xcode の Apple clang version 17.0.0 (clang-1700.0.13.3)
他は Ubuntu 24.04 の apt でインストール

### コンパイラ: GNU C/C++

| Version | 14.2(※) | 9.5 | 10.5 | 11.4 | 12.3 | 13.3 | 14.2 |
|:--|--:|--:|--:|--:|--:|--:|--:|
| <code>std</code> | <code>6.099</code> | <code>8.068</code> | <code>8.071</code> | <code>7.087</code> | <code>7.074</code> | <code>6.791</code> | <code>7.776</code> |
| <code>SeqB</code> | <code>9.662</code> | <code>9.100</code> | <code>10.468</code> | <code>10.199</code> | <code>8.210</code> | <code>10.195</code> | <code>10.202</code> |
| <code>SeqC</code> | <code>9.696</code> | <code>11.931</code> | <code>8.563</code> | <code>11.188</code> | <code>8.955</code> | <code>8.589</code> | <code>8.588</code> |
| <code>SeqBP</code> | <code>8.723</code> | <code>10.268</code> | <code>9.240</code> | <code>9.466</code> | <code>11.426</code> | <code>9.468</code> | <code>11.425</code> |
| <code>SeqCP</code> | <code>9.040</code> | <code>9.717</code> | <code>9.702</code> | <code>9.943</code> | <code>11.190</code> | <code>9.744</code> | <code>11.189</code> |
| <code>SeqSB</code> | <code>7.675</code> | <code>11.408</code> | <code>10.406</code> | <code>10.507</code> | <code>12.300</code> | <code>12.296</code> | <code>11.995</code> |
| <code>SeqSC</code> | <code>7.175</code> | <code>11.613</code> | <code>9.062</code> | <code>8.577</code> | <code>12.028</code> | <code>11.335</code> | <code>10.161</code> |
| <code>BlkB</code> | <code>8.530</code> | <code>8.198</code> | <code>8.596</code> | <code>9.298</code> | <code>8.842</code> | <code>8.894</code> | <code>8.538</code> |
| <code>BlkC</code> | <code>8.560</code> | <code>8.197</code> | <code>8.563</code> | <code>9.306</code> | <code>8.823</code> | <code>8.629</code> | <code>8.478</code> |
| <code>BlkBV</code> | <code>4.699</code> | <code>5.623</code> | <code>5.604</code> | <code>5.618</code> | <code>5.705</code> | <code>5.655</code> | <code>5.786</code> |
| <code>BlkCV</code> | <code>4.640</code> | <code>5.606</code> | <code>5.602</code> | <code>5.727</code> | <code>5.134</code> | <code>5.611</code> | <code>5.778</code> |
| <code>BlkBT</code> | <code>4.077</code> | <code>5.477</code> | <code>5.464</code> | <code>5.455</code> | <code>5.621</code> | <code>5.495</code> | <code>5.551</code> |
| <code>BlkCT</code> | <code>4.725</code> | <code>5.473</code> | <code>5.454</code> | <code>5.463</code> | <code>5.604</code> | <code>5.496</code> | <code>6.280</code> |
| <code>BlkSB</code> | <code>7.347</code> | <code>7.789</code> | <code>7.787</code> | <code>7.411</code> | <code>9.282</code> | <code>7.411</code> | <code>8.347</code> |
| <code>BlkSC</code> | <code>6.346</code> | <code>7.380</code> | <code>7.404</code> | <code>7.786</code> | <code>9.282</code> | <code>7.414</code> | <code>8.347</code> |
| <code>BlkSBV</code> | <code>5.672</code> | <code>8.051</code> | <code>7.821</code> | <code>7.761</code> | <code>7.058</code> | <code>7.184</code> | <code>8.330</code> |
| <code>BlkSCV</code> | <code>6.035</code> | <code>7.291</code> | <code>7.795</code> | <code>7.812</code> | <code>7.817</code> | <code>8.562</code> | <code>8.331</code> |
| <code>BlkSBT</code> | <code>5.554</code> | <code>6.897</code> | <code>8.288</code> | <code>8.285</code> | <code>7.558</code> | <code>7.638</code> | <code>7.344</code> |
| <code>BlkSCT</code> | <code>5.548</code> | <code>8.303</code> | <code>8.294</code> | <code>8.283</code> | <code>7.647</code> | <code>7.547</code> | <code>7.575</code> |

※は macOS 上でレポジトリから clone してビルドしたもの
他は Ubuntu 24.04 の apt でインストール

### コンパイラ: Microsoft C/C++

| Version | 19.43 |
|:--|--:|
| <code>std</code> | <code>11.064</code> |
| <code>SeqB</code> | <code>9.424</code> |
| <code>SeqC</code> | <code>12.032</code> |
| <code>SeqBP</code> | <code>10.445</code> |
| <code>SeqCP</code> | <code>11.506</code> |
| <code>SeqSB</code> | <code>7.145</code> |
| <code>SeqSC</code> | <code>6.182</code> |
| <code>BlkB</code> | <code>10.726</code> |
| <code>BlkC</code> | <code>9.363</code> |
| <code>BlkBV</code> | <code>13.111</code> |
| <code>BlkCV</code> | <code>11.824</code> |
| <code>BlkBT</code> | <code>14.377</code> |
| <code>BlkCT</code> | <code>11.827</code> |
| <code>BlkSB</code> | <code>8.269</code> |
| <code>BlkSC</code> | <code>7.905</code> |
| <code>BlkSBV</code> | <code>8.669</code> |
| <code>BlkSCV</code> | <code>7.975</code> |
| <code>BlkSBT</code> | <code>7.851</code> |
| <code>BlkSCT</code> | <code>7.086</code> |

## CPU: Apple M4

### コンパイラ: Clang

| Version | 14.0 | 15.0 | 16.0 | 17.0 | 18.1 | 19.1 |
|:--|--:|--:|--:|--:|--:|--:|
| <code>std</code> | <code>1.413</code> | <code>1.412</code> | <code>1.634</code> | <code>1.636</code> | <code>1.413</code> | <code>1.413</code> |
| <code>SeqB</code> | <code>1.126</code> | <code>1.151</code> | <code>1.231</code> | <code>1.178</code> | <code>1.160</code> | <code>1.222</code> |
| <code>SeqC</code> | <code>1.138</code> | <code>1.151</code> | <code>1.145</code> | <code>1.182</code> | <code>1.152</code> | <code>1.061</code> |
| <code>SeqBP</code> | <code>1.135</code> | <code>1.202</code> | <code>1.202</code> | <code>1.244</code> | <code>1.245</code> | <code>1.245</code> |
| <code>SeqCP</code> | <code>1.296</code> | <code>1.376</code> | <code>1.187</code> | <code>1.251</code> | <code>1.242</code> | <code>1.408</code> |
| <code>SeqSB</code> | <code>1.398</code> | <code>1.552</code> | <code>1.434</code> | <code>1.414</code> | <code>1.636</code> | <code>1.666</code> |
| <code>SeqSC</code> | <code>1.360</code> | <code>1.550</code> | <code>1.582</code> | <code>1.450</code> | <code>1.616</code> | <code>1.617</code> |
| <code>BlkB</code> | <code>1.222</code> | <code>1.192</code> | <code>1.198</code> | <code>1.216</code> | <code>1.241</code> | <code>1.290</code> |
| <code>BlkC</code> | <code>1.216</code> | <code>1.207</code> | <code>1.195</code> | <code>1.202</code> | <code>1.244</code> | <code>1.255</code> |
| <code>BlkBV</code> | <code>1.685</code> | <code>1.556</code> | <code>1.559</code> | <code>1.569</code> | <code>1.353</code> | <code>1.389</code> |
| <code>BlkCV</code> | <code>1.678</code> | <code>1.562</code> | <code>1.565</code> | <code>1.563</code> | <code>1.350</code> | <code>1.388</code> |
| <code>BlkBT</code> | <code>1.424</code> | <code>1.342</code> | <code>1.362</code> | <code>1.388</code> | <code>1.315</code> | <code>1.357</code> |
| <code>BlkCT</code> | <code>1.410</code> | <code>1.332</code> | <code>1.355</code> | <code>1.360</code> | <code>1.308</code> | <code>1.344</code> |
| <code>BlkSB</code> | <code>1.281</code> | <code>1.288</code> | <code>1.281</code> | <code>1.307</code> | <code>1.310</code> | <code>1.323</code> |
| <code>BlkSC</code> | <code>1.504</code> | <code>1.286</code> | <code>1.281</code> | <code>1.282</code> | <code>1.314</code> | <code>1.331</code> |
| <code>BlkSBV</code> | <code>1.425</code> | <code>1.432</code> | <code>1.425</code> | <code>1.425</code> | <code>1.427</code> | <code>1.467</code> |
| <code>BlkSCV</code> | <code>1.425</code> | <code>1.425</code> | <code>1.425</code> | <code>1.425</code> | <code>1.426</code> | <code>1.467</code> |
| <code>BlkSBT</code> | <code>1.440</code> | <code>1.442</code> | <code>1.434</code> | <code>1.441</code> | <code>1.442</code> | <code>1.425</code> |
| <code>BlkSCT</code> | <code>1.440</code> | <code>1.434</code> | <code>1.441</code> | <code>1.434</code> | <code>1.442</code> | <code>1.426</code> |

### コンパイラ: GNU C/C++

| Version | 9.5 | 10.5 | 11.4 | 12.3 | 13.3 | 14.2 |
|:--|--:|--:|--:|--:|--:|--:|
| <code>std</code> | <code>1.165</code> | <code>1.169</code> | <code>1.165</code> | <code>1.168</code> | <code>1.168</code> | <code>1.282</code> |
| <code>SeqB</code> | <code>1.338</code> | <code>1.183</code> | <code>1.182</code> | <code>1.182</code> | <code>1.182</code> | <code>1.182</code> |
| <code>SeqC</code> | <code>1.242</code> | <code>1.357</code> | <code>1.178</code> | <code>1.418</code> | <code>1.425</code> | <code>1.486</code> |
| <code>SeqBP</code> | <code>1.339</code> | <code>1.337</code> | <code>1.296</code> | <code>1.317</code> | <code>1.337</code> | <code>1.309</code> |
| <code>SeqCP</code> | <code>1.244</code> | <code>1.242</code> | <code>1.242</code> | <code>1.445</code> | <code>1.487</code> | <code>1.434</code> |
| <code>SeqSB</code> | <code>2.291</code> | <code>1.670</code> | <code>1.655</code> | <code>1.603</code> | <code>1.796</code> | <code>1.616</code> |
| <code>SeqSC</code> | <code>1.458</code> | <code>1.778</code> | <code>1.537</code> | <code>1.568</code> | <code>1.524</code> | <code>1.457</code> |
| <code>BlkB</code> | <code>1.262</code> | <code>1.260</code> | <code>1.214</code> | <code>1.255</code> | <code>1.312</code> | <code>1.214</code> |
| <code>BlkC</code> | <code>1.243</code> | <code>1.246</code> | <code>1.212</code> | <code>1.256</code> | <code>1.260</code> | <code>1.210</code> |
| <code>BlkBV</code> | <code>1.352</code> | <code>1.357</code> | <code>1.319</code> | <code>1.352</code> | <code>1.391</code> | <code>1.330</code> |
| <code>BlkCV</code> | <code>1.352</code> | <code>1.352</code> | <code>1.319</code> | <code>1.349</code> | <code>1.396</code> | <code>1.319</code> |
| <code>BlkBT</code> | <code>1.264</code> | <code>1.279</code> | <code>1.276</code> | <code>1.265</code> | <code>1.307</code> | <code>1.263</code> |
| <code>BlkCT</code> | <code>1.272</code> | <code>1.297</code> | <code>1.260</code> | <code>1.262</code> | <code>1.328</code> | <code>1.257</code> |
| <code>BlkSB</code> | <code>1.226</code> | <code>1.224</code> | <code>1.182</code> | <code>1.206</code> | <code>1.187</code> | <code>1.207</code> |
| <code>BlkSC</code> | <code>1.235</code> | <code>1.185</code> | <code>1.183</code> | <code>1.269</code> | <code>1.229</code> | <code>1.207</code> |
| <code>BlkSBV</code> | <code>1.378</code> | <code>1.347</code> | <code>1.317</code> | <code>1.453</code> | <code>1.390</code> | <code>1.345</code> |
| <code>BlkSCV</code> | <code>1.380</code> | <code>1.347</code> | <code>1.324</code> | <code>1.453</code> | <code>1.392</code> | <code>1.345</code> |
| <code>BlkSBT</code> | <code>1.420</code> | <code>1.405</code> | <code>1.371</code> | <code>1.415</code> | <code>1.419</code> | <code>1.423</code> |
| <code>BlkSCT</code> | <code>1.441</code> | <code>1.459</code> | <code>1.431</code> | <code>1.414</code> | <code>1.457</code> | <code>1.443</code> |

## CPU: Arm Cortex A76

### コンパイラ: Clang

| Version | 13.0 | 14.0 | 15.0 | 16.0 | 19.1 |
|:--|--:|--:|--:|--:|--:|
| <code>std</code> | <code>4.422</code> | <code>4.363</code> | <code>4.316</code> | <code>4.318</code> | <code>4.169</code> |
| <code>SeqB</code> | <code>4.992</code> | <code>5.350</code> | <code>5.104</code> | <code>4.946</code> | <code>4.608</code> |
| <code>SeqC</code> | <code>5.493</code> | <code>5.592</code> | <code>5.188</code> | <code>5.019</code> | <code>4.646</code> |
| <code>SeqBP</code> | <code>5.323</code> | <code>5.471</code> | <code>5.589</code> | <code>5.485</code> | <code>5.062</code> |
| <code>SeqCP</code> | <code>5.704</code> | <code>5.659</code> | <code>5.642</code> | <code>5.557</code> | <code>5.076</code> |
| <code>SeqSB</code> | <code>6.572</code> | <code>6.468</code> | <code>6.542</code> | <code>6.552</code> | <code>8.416</code> |
| <code>SeqSC</code> | <code>6.494</code> | <code>6.379</code> | <code>6.589</code> | <code>6.454</code> | <code>8.313</code> |
| <code>BlkB</code> | <code>4.672</code> | <code>4.636</code> | <code>4.473</code> | <code>4.473</code> | <code>4.229</code> |
| <code>BlkC</code> | <code>4.665</code> | <code>4.633</code> | <code>4.471</code> | <code>4.471</code> | <code>4.232</code> |
| <code>BlkBV</code> | <code>6.309</code> | <code>5.904</code> | <code>5.610</code> | <code>5.351</code> | <code>5.499</code> |
| <code>BlkCV</code> | <code>5.922</code> | <code>5.852</code> | <code>5.578</code> | <code>5.393</code> | <code>5.487</code> |
| <code>BlkBT</code> | <code>6.641</code> | <code>6.722</code> | <code>6.031</code> | <code>6.029</code> | <code>5.562</code> |
| <code>BlkCT</code> | <code>6.695</code> | <code>6.729</code> | <code>6.122</code> | <code>6.091</code> | <code>5.617</code> |
| <code>BlkSB</code> | <code>4.943</code> | <code>5.022</code> | <code>5.011</code> | <code>5.011</code> | <code>4.670</code> |
| <code>BlkSC</code> | <code>4.979</code> | <code>5.021</code> | <code>5.011</code> | <code>5.012</code> | <code>4.670</code> |
| <code>BlkSBV</code> | <code>6.102</code> | <code>6.109</code> | <code>6.147</code> | <code>6.146</code> | <code>6.093</code> |
| <code>BlkSCV</code> | <code>5.917</code> | <code>6.147</code> | <code>6.148</code> | <code>6.148</code> | <code>6.034</code> |
| <code>BlkSBT</code> | <code>6.147</code> | <code>6.148</code> | <code>6.084</code> | <code>6.148</code> | <code>5.860</code> |
| <code>BlkSCT</code> | <code>6.194</code> | <code>6.238</code> | <code>6.148</code> | <code>6.150</code> | <code>5.658</code> |

### コンパイラ: GNU C/C++

| Version | 11.3 | 12.2 |
|:--|--:|--:|
| <code>std</code> | <code>4.647</code> | <code>4.757</code> |
| <code>SeqB</code> | <code>4.328</code> | <code>4.328</code> |
| <code>SeqC</code> | <code>4.627</code> | <code>4.503</code> |
| <code>SeqBP</code> | <code>5.060</code> | <code>5.064</code> |
| <code>SeqCP</code> | <code>5.230</code> | <code>5.137</code> |
| <code>SeqSB</code> | <code>8.098</code> | <code>8.228</code> |
| <code>SeqSC</code> | <code>5.975</code> | <code>8.309</code> |
| <code>BlkB</code> | <code>4.227</code> | <code>4.218</code> |
| <code>BlkC</code> | <code>4.213</code> | <code>4.217</code> |
| <code>BlkBV</code> | <code>5.329</code> | <code>5.375</code> |
| <code>BlkCV</code> | <code>5.369</code> | <code>5.317</code> |
| <code>BlkBT</code> | <code>5.465</code> | <code>5.462</code> |
| <code>BlkCT</code> | <code>5.464</code> | <code>5.464</code> |
| <code>BlkSB</code> | <code>4.072</code> | <code>4.841</code> |
| <code>BlkSC</code> | <code>4.075</code> | <code>4.841</code> |
| <code>BlkSBV</code> | <code>5.313</code> | <code>6.319</code> |
| <code>BlkSCV</code> | <code>5.383</code> | <code>6.319</code> |
| <code>BlkSBT</code> | <code>6.421</code> | <code>6.500</code> |
| <code>BlkSCT</code> | <code>6.422</code> | <code>6.523</code> |

---

メルセンヌツイスタ規模のプログラムだと、高速な生成が必要ならば目的に応じたターゲット専用コードを書いた方がいいでしょう。