awsのc7gインスタンスがどの程度速いか気になって、いろいろなインスタンスタイプをベンチマークで比較してみました。
比較したシナリオは、9KB程度のJsonファイルをUtf8jsonでデシリアライズします。細かいデシリアライズは自作で端折っていて、ほとんどReadNextBlockで最後まで読み飛ばす感じになっています。
共通環境は、DotNetの6.0.7くらいでしょうか。
同じバイナリで実行しています。
まずは、結果を。
| c6i.large | x64 | linux | 25,313 ns | 0.085 USD |
| m6i.large | x64 | linux | 25,412 ns | 0.096 USD |
| c6i.large | x64 | windows | 25,528 ns | 0.177 USD |
| c7g.large | arm64 | linux | 28,732 ns | 0.0725 USD |
| t3.micro | x64 | linux | 33,531 ns | 0.0104 USD |
| t3a.micro | x64 | linux | 45,032 ns | 0.0094 USD |
| t4g.nano | arm64 | linux | 45,965 ns | 0.0042 USD |
| c6g.large | arm64 | linux | 45,972 ns | 0.068 USD |
| t4g.medium | arm64 | linux | 46,658 ns | 0.0336 USD |
| t3a.large | x64 | windows | 51,035 ns | 0.1028 USD |
まず、linuxとWindowsでは、速度差は殆どありませんでした。
c7gは東京にはないので、バージニア北部で実行しましたが、一つ前のc6gよりは全体的に速くなっていますね。
シナリオが、単独スレッドでの実行で、バーストタイプはバースト無制限にしてあるため、インスタンスのサイズを変えても、ほとんど速度差はありませんでした。
意外だったのが、intelの速さです。今回はcpuとメモリアクセス速度だけに影響されそうなシナリオだったのですが、intelの圧勝でした。
金額については、サイズの影響もあるので、そのまま比較はできませんが参考まで。バージニア北部のオンデマンド、1時間単価です。
私の用途を考えると、速度優先で、c6iかm6i、もしくはコスパ優先でc7gってところでしょうか。早くc7gが東京に来ないかな。