Supershipの名畑です。8月19日はなんの日かご存知ですか? もちろんハイキュー!!の日ですね。そんな8月19日に劇団「ハイキュー!!」の旗揚げ公演初日を訪れたのですが、演出も役者陣もとても素晴らしかったのですが、特に影山役の若林星弥さんが記憶に残りました。
はじめに
前の記事にも書きましたが、AtCoderで使用できるプログラミング言語とライブラリが3年振りにアップデートされました。どのようにアップデートされたかは使用できる言語とライブラリの一覧をご覧ください。
せっかくの機会なので、それぞれの言語の速度比較を記事にしてみようと思いました。
ただ、果たして何をもってして速度を比較するべきなのかと。
当然、行う処理によってそれにかかる時間は変わります。過去にPythonとPyPyの言語比較をしたことがありますが、問題によって結果は様々でした。
一般的なベンチマークで比べるという手もありますが、それでAtCoderにおける速度比較となるのかは疑問です。
ということで、今回は「提出結果の実行時間の比較」をしてみることとしました。
やや思考放棄感はありますが「AtCoderの提出結果において実行時間が短い言語ほどAtCoder的には速い言語である」という理屈で。
実際のところ、選ぶコードの差よりも書いたコードの質による部分が大きいため「その言語に優秀なユーザがいるか」に左右されそうですし、言語によって提出数に差があり問題によっては1や2ばかりですし、参考値には止まってしまいますが。
AtCoderについて調べてみたシリーズの主な過去記事
条件
- AtCoder Beginner Contest 314の提出であること
- コンテスト開催時間中の提出であること(2023-08-12(土) 21:00 ~ 22:40)
- AC(正答)の提出であること
- 各ユーザが同一の問題で複数回のACをとった場合は、そのうちの最後の提出であること
以上の条件をすべて満たしているものを対象とします。
結果について
各問題毎、各言語毎に下記の5つの値を表形式で記します。
- 中央値
- 平均値
- 最小値
- 最大値
- 提出数
表内における言語の並び順は、この5つについて上から評価して決めています。
つまり下記の流れです。
- 中央値の昇順(小さい順)に並べる
- 中央値が同じ場合は平均値の昇順とする
- 平均値も同じ場合は最小値の昇順とする
- 最小値も同じ場合は最大値の昇順とする
- 最大値も同じ場合は提出数の降順(大きい順)とする
「最小値を最優先すべきではないか」「提出数が1や2のものが上に来るのはおかしいのではないか」などなどかなりご意見あるかとは思いますが、偏りがあることは承知の上で、本記事はこのルールで進めさせていただきます。
また、平均値は小数点下2桁での表記としているため、表においては同じ値でも正確には異なるケースもございます。
結果一覧
詳細は後に回し、まずは先んじて、各言語が各問題において何番目かを一覧としてみました。
この表は平均の昇順です。本記事のルールにおいては速い順番と言えます。C、Rust、C++……の並びなので、違和感はない、ですかね?
数字に引かれている下線は、その問題でACの提出が一つもないことを示しています。
A | B | C | D | E | F | G | Ex | 平均 | ||
---|---|---|---|---|---|---|---|---|---|---|
1 | C (gcc 12.2.0) | 2 | 2 | 1 | 2 | 1 | 7 | 1 | 6 | 2.75 |
2 | Rust (rustc 1.70.0) | 12 | 4 | 4 | 1 | 4 | 2 | 2 | 2 | 3.88 |
3 | C++ 17 (Clang 16.0.5) | 11 | 6 | 9 | 8 | 2 | 3 | 6 | 1 | 5.75 |
4 | C++ 20 (Clang 16.0.5) | 4 | 8 | 5 | 12 | 3 | 1 | 10 | 6 | 6.13 |
5 | Go (go 1.20.6) | 3 | 11 | 8 | 5 | 6 | 10 | 10 | 6 | 7.38 |
6 | C++ 23 (gcc 12.2) | 14 | 9 | 12 | 11 | 7 | 4 | 3 | 3 | 7.88 |
7 | C++ 20 (gcc 12.2) | 17 | 10 | 10 | 7 | 9 | 5 | 4 | 4 | 8.25 |
7 | Crystal (Crystal 1.9.1) | 15 | 5 | 6 | 3 | 11 | 13 | 7 | 6 | 8.25 |
9 | Pascal (fpc 3.2.2) | 1 | 1 | 2 | 4 | 24 | 20 | 10 | 6 | 8.50 |
10 | C++ 17 (gcc 12.2) | 18 | 12 | 7 | 9 | 8 | 6 | 5 | 6 | 8.88 |
11 | C++ 23 (Clang 16.0.5) | 13 | 7 | 20 | 10 | 5 | 11 | 10 | 6 | 10.25 |
12 | C# 11.0 AOT (.NET 7.0.7) | 19 | 15 | 11 | 6 | 13 | 12 | 10 | 6 | 11.50 |
13 | D (DMD 2.104.0) | 5 | 13 | 16 | 16 | 10 | 20 | 10 | 6 | 12.00 |
14 | D (LDC 1.32.2) | 7 | 3 | 14 | 13 | 24 | 20 | 10 | 6 | 12.13 |
15 | Lua (LuaJIT 2.1.0-beta3) | 8 | 14 | 18 | 22 | 12 | 9 | 10 | 6 | 12.38 |
16 | Scala 3.3.0 (Scala Native 0.4.14) | 9 | 18 | 13 | 18 | 24 | 20 | 10 | 6 | 14.75 |
17 | Fortran (gfortran 12.2) | 6 | 25 | 17 | 15 | 24 | 20 | 10 | 6 | 15.38 |
18 | PHP (php 8.2.8) | 27 | 23 | 15 | 14 | 15 | 20 | 10 | 6 | 16.25 |
19 | OCaml (ocamlopt 5.0.0) | 20 | 17 | 3 | 31 | 24 | 20 | 10 | 6 | 16.38 |
20 | C# 11.0 (.NET 7.0.7) | 32 | 30 | 21 | 17 | 16 | 8 | 10 | 6 | 17.50 |
21 | Common Lisp (SBCL 2.3.6) | 22 | 19 | 19 | 21 | 24 | 20 | 10 | 6 | 17.63 |
22 | Haskell (GHC 9.4.5) | 16 | 16 | 34 | 33 | 14 | 20 | 10 | 6 | 18.63 |
23 | Swift (swift 5.8.1) | 23 | 20 | 22 | 28 | 24 | 20 | 10 | 6 | 19.13 |
24 | Python (CPython 3.11.4) | 24 | 22 | 26 | 32 | 20 | 19 | 10 | 6 | 19.88 |
24 | Python (PyPy 3.10-v7.3.12) | 35 | 32 | 23 | 23 | 18 | 15 | 8 | 5 | 19.88 |
26 | Ruby (ruby 3.2.2) | 31 | 28 | 24 | 29 | 21 | 14 | 9 | 6 | 20.25 |
27 | TypeScript 5.1 (Deno 1.35.1) | 38 | 33 | 27 | 19 | 17 | 18 | 10 | 6 | 21.00 |
28 | TypeScript 5.1 (Node.js 18.16.1) | 30 | 26 | 29 | 25 | 24 | 20 | 10 | 6 | 21.25 |
29 | JavaScript (Node.js 18.16.1) | 29 | 27 | 30 | 27 | 23 | 20 | 10 | 6 | 21.50 |
29 | Python (Cython 0.29.34) | 25 | 21 | 31 | 35 | 24 | 20 | 10 | 6 | 21.50 |
31 | Python (Mambaforge / CPython 3.10.10) | 28 | 24 | 28 | 34 | 24 | 20 | 10 | 6 | 21.75 |
32 | Visual Basic 16.9 (.NET 7.0.7) | 33 | 29 | 25 | 30 | 24 | 20 | 10 | 6 | 22.13 |
33 | Java (OpenJDK 17) | 37 | 35 | 33 | 24 | 19 | 16 | 10 | 6 | 22.50 |
33 | Whitespace (whitespacers 1.0.0) | 10 | 37 | 36 | 37 | 24 | 20 | 10 | 6 | 22.50 |
35 | F# 7.0 (.NET 7.0.7) | 34 | 31 | 36 | 20 | 24 | 20 | 10 | 6 | 22.63 |
36 | Julia (Julia 1.9.2) | 39 | 36 | 32 | 26 | 24 | 17 | 10 | 6 | 23.75 |
37 | Perl (perl 5.34) | 21 | 37 | 36 | 37 | 24 | 20 | 10 | 6 | 23.88 |
38 | Vim (vim 9.0.0242) | 26 | 37 | 36 | 37 | 24 | 20 | 10 | 6 | 24.50 |
39 | Kotlin (Kotlin/JVM 1.8.20) | 36 | 34 | 35 | 36 | 22 | 20 | 10 | 6 | 24.88 |
問題毎の詳細
以降、AtCoder Beginner Contest 314(ABC314)のA問題から順番に、グラフ(箱ひげ図)と表で結果を示していきます。
A - 3.14
- 問題:A - 3.14
- 提出言語数:39
グラフの並びは言語のアルファベット順です。
言語数が多いので小さくて見づらいので、拡大してご覧ください。
表にしたものが下記です。1msを競うデッドヒート。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | Pascal (fpc 3.2.2) | 0 | 0.00 | 0 | 0 | 2 |
2 | C (gcc 12.2.0) | 1 | 0.51 | 0 | 1 | 173 |
3 | Go (go 1.20.6) | 1 | 0.93 | 0 | 2 | 30 |
4 | C++ 20 (Clang 16.0.5) | 1 | 1.00 | 1 | 1 | 13 |
5 | D (DMD 2.104.0) | 1 | 1.00 | 1 | 1 | 3 |
6 | Fortran (gfortran 12.2) | 1 | 1.00 | 1 | 1 | 2 |
7 | D (LDC 1.32.2) | 1 | 1.00 | 1 | 1 | 1 |
8 | Lua (LuaJIT 2.1.0-beta3) | 1 | 1.00 | 1 | 1 | 1 |
9 | Scala 3.3.0 (Scala Native 0.4.14) | 1 | 1.00 | 1 | 1 | 1 |
10 | Whitespace (whitespacers 1.0.0) | 1 | 1.00 | 1 | 1 | 1 |
11 | C++ 17 (Clang 16.0.5) | 1 | 1.04 | 1 | 2 | 55 |
12 | Rust (rustc 1.70.0) | 1 | 1.04 | 0 | 6 | 104 |
13 | C++ 23 (Clang 16.0.5) | 1 | 1.05 | 1 | 2 | 22 |
14 | C++ 23 (gcc 12.2) | 1 | 1.05 | 1 | 8 | 244 |
15 | Crystal (Crystal 1.9.1) | 1 | 1.20 | 1 | 2 | 5 |
16 | Haskell (GHC 9.4.5) | 1 | 1.22 | 1 | 2 | 9 |
17 | C++ 20 (gcc 12.2) | 1 | 1.23 | 0 | 241 | 5144 |
18 | C++ 17 (gcc 12.2) | 1 | 1.29 | 0 | 89 | 320 |
19 | C# 11.0 AOT (.NET 7.0.7) | 2 | 2.25 | 2 | 3 | 8 |
20 | OCaml (ocamlopt 5.0.0) | 3 | 3.00 | 1 | 5 | 2 |
21 | Perl (perl 5.34) | 3 | 3.00 | 3 | 3 | 1 |
22 | Common Lisp (SBCL 2.3.6) | 4 | 3.67 | 3 | 4 | 3 |
23 | Swift (swift 5.8.1) | 5 | 8.17 | 3 | 28 | 6 |
24 | Python (CPython 3.11.4) | 10 | 12.31 | 8 | 674 | 997 |
25 | Python (Cython 0.29.34) | 10 | 15.52 | 9 | 134 | 23 |
26 | Vim (vim 9.0.0242) | 12 | 12.00 | 12 | 12 | 1 |
27 | PHP (php 8.2.8) | 13 | 13.08 | 11 | 15 | 13 |
28 | Python (Mambaforge / CPython 3.10.10) | 14 | 15.55 | 13 | 41 | 44 |
29 | JavaScript (Node.js 18.16.1) | 39 | 38.80 | 35 | 42 | 20 |
30 | TypeScript 5.1 (Node.js 18.16.1) | 39 | 39.00 | 38 | 40 | 7 |
31 | Ruby (ruby 3.2.2) | 44 | 74.20 | 41 | 1061 | 54 |
32 | C# 11.0 (.NET 7.0.7) | 46 | 47.53 | 39 | 64 | 59 |
33 | Visual Basic 16.9 (.NET 7.0.7) | 46.5 | 46.50 | 46 | 47 | 2 |
34 | F# 7.0 (.NET 7.0.7) | 48 | 48.00 | 48 | 48 | 1 |
35 | Python (PyPy 3.10-v7.3.12) | 57 | 67.34 | 52 | 1057 | 896 |
36 | Kotlin (Kotlin/JVM 1.8.20) | 67 | 71.83 | 45 | 128 | 12 |
37 | Java (OpenJDK 17) | 71 | 72.82 | 38 | 140 | 332 |
38 | TypeScript 5.1 (Deno 1.35.1) | 116 | 116.00 | 116 | 116 | 1 |
39 | Julia (Julia 1.9.2) | 187 | 217.20 | 149 | 349 | 5 |
B - Roulette
- 問題:B - Roulette
- 提出言語数:36
グラフは下記です。
表は下記です。やはりかなりの接戦です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | Pascal (fpc 3.2.2) | 0 | 0.00 | 0 | 0 | 2 |
2 | C (gcc 12.2.0) | 1 | 1.00 | 1 | 1 | 58 |
3 | D (LDC 1.32.2) | 1 | 1.00 | 1 | 1 | 1 |
4 | Rust (rustc 1.70.0) | 1 | 1.07 | 1 | 5 | 107 |
5 | Crystal (Crystal 1.9.1) | 1 | 1.25 | 1 | 2 | 4 |
6 | C++ 17 (Clang 16.0.5) | 1 | 1.32 | 1 | 3 | 47 |
7 | C++ 23 (Clang 16.0.5) | 1 | 1.47 | 1 | 2 | 19 |
8 | C++ 20 (Clang 16.0.5) | 1 | 1.55 | 1 | 3 | 11 |
9 | C++ 23 (gcc 12.2) | 1 | 1.55 | 1 | 36 | 238 |
10 | C++ 20 (gcc 12.2) | 1 | 1.58 | 1 | 247 | 4279 |
11 | Go (go 1.20.6) | 1 | 1.96 | 1 | 7 | 28 |
12 | C++ 17 (gcc 12.2) | 1 | 2.09 | 1 | 107 | 300 |
13 | D (DMD 2.104.0) | 2 | 1.67 | 1 | 2 | 3 |
14 | Lua (LuaJIT 2.1.0-beta3) | 2 | 2.00 | 2 | 2 | 1 |
15 | C# 11.0 AOT (.NET 7.0.7) | 2 | 2.20 | 2 | 3 | 5 |
16 | Haskell (GHC 9.4.5) | 2 | 2.38 | 1 | 6 | 8 |
17 | OCaml (ocamlopt 5.0.0) | 2 | 3.00 | 2 | 5 | 3 |
18 | Scala 3.3.0 (Scala Native 0.4.14) | 4 | 4.00 | 4 | 4 | 1 |
19 | Common Lisp (SBCL 2.3.6) | 5 | 5.00 | 5 | 5 | 3 |
20 | Swift (swift 5.8.1) | 5 | 5.80 | 5 | 8 | 5 |
21 | Python (Cython 0.29.34) | 11 | 11.06 | 10 | 13 | 16 |
22 | Python (CPython 3.11.4) | 11 | 12.39 | 9 | 343 | 667 |
23 | PHP (php 8.2.8) | 14.5 | 14.33 | 13 | 15 | 6 |
24 | Python (Mambaforge / CPython 3.10.10) | 15 | 18.38 | 14 | 83 | 29 |
25 | Fortran (gfortran 12.2) | 37.5 | 37.50 | 1 | 74 | 2 |
26 | TypeScript 5.1 (Node.js 18.16.1) | 40 | 40.25 | 39 | 42 | 8 |
27 | JavaScript (Node.js 18.16.1) | 41 | 67.06 | 38 | 290 | 16 |
28 | Ruby (ruby 3.2.2) | 46 | 70.02 | 43 | 1009 | 50 |
29 | Visual Basic 16.9 (.NET 7.0.7) | 51 | 51.00 | 48 | 54 | 2 |
30 | C# 11.0 (.NET 7.0.7) | 59 | 58.37 | 42 | 94 | 49 |
31 | F# 7.0 (.NET 7.0.7) | 63 | 63.00 | 63 | 63 | 1 |
32 | Python (PyPy 3.10-v7.3.12) | 63 | 73.09 | 56 | 517 | 753 |
33 | TypeScript 5.1 (Deno 1.35.1) | 88 | 88.00 | 88 | 88 | 1 |
34 | Kotlin (Kotlin/JVM 1.8.20) | 100 | 113.09 | 79 | 214 | 11 |
35 | Java (OpenJDK 17) | 144 | 133.64 | 42 | 203 | 333 |
36 | Julia (Julia 1.9.2) | 384 | 363.00 | 245 | 521 | 5 |
37 | 上記以外の言語はACなし |
C - Rotate Colored Subsequence
- 問題:C - Rotate Colored Subsequence
- 提出言語数:35
グラフは下記です。問題の複雑度が増してきたからか、同一言語でも実行時間に幅が出てきました。
実行時間短縮のためには、どんなコードを書けるかどうかが重要ということですかね。
表は下記です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | C (gcc 12.2.0) | 20.5 | 22.29 | 18 | 33 | 14 |
2 | Pascal (fpc 3.2.2) | 22 | 22.00 | 22 | 22 | 1 |
3 | OCaml (ocamlopt 5.0.0) | 36 | 36.00 | 30 | 42 | 2 |
4 | Rust (rustc 1.70.0) | 36 | 41.70 | 10 | 229 | 99 |
5 | C++ 20 (Clang 16.0.5) | 38 | 56.64 | 28 | 129 | 11 |
6 | Crystal (Crystal 1.9.1) | 39 | 43.80 | 21 | 83 | 5 |
7 | C++ 17 (gcc 12.2) | 48 | 98.87 | 12 | 1997 | 300 |
8 | Go (go 1.20.6) | 48.5 | 138.27 | 17 | 763 | 22 |
9 | C++ 17 (Clang 16.0.5) | 51 | 120.44 | 13 | 1159 | 48 |
10 | C++ 20 (gcc 12.2) | 52 | 112.02 | 6 | 1908 | 3699 |
11 | C# 11.0 AOT (.NET 7.0.7) | 52 | 123.80 | 46 | 274 | 5 |
12 | C++ 23 (gcc 12.2) | 55 | 145.28 | 7 | 1992 | 223 |
13 | Scala 3.3.0 (Scala Native 0.4.14) | 61 | 61.00 | 61 | 61 | 1 |
14 | D (LDC 1.32.2) | 62 | 62.00 | 62 | 62 | 1 |
15 | PHP (php 8.2.8) | 66 | 75.50 | 46 | 124 | 4 |
16 | D (DMD 2.104.0) | 67 | 91.33 | 55 | 152 | 3 |
17 | Fortran (gfortran 12.2) | 75 | 75.00 | 75 | 75 | 1 |
18 | Lua (LuaJIT 2.1.0-beta3) | 75 | 75.00 | 75 | 75 | 1 |
19 | Common Lisp (SBCL 2.3.6) | 88.5 | 88.50 | 28 | 149 | 2 |
20 | C++ 23 (Clang 16.0.5) | 94.5 | 251.95 | 35 | 1939 | 20 |
21 | C# 11.0 (.NET 7.0.7) | 109.5 | 150.61 | 59 | 591 | 36 |
22 | Swift (swift 5.8.1) | 201 | 179.00 | 122 | 214 | 3 |
23 | Python (PyPy 3.10-v7.3.12) | 206 | 427.04 | 93 | 1999 | 645 |
24 | Ruby (ruby 3.2.2) | 213 | 426.94 | 131 | 1986 | 35 |
25 | Visual Basic 16.9 (.NET 7.0.7) | 237 | 237.00 | 237 | 237 | 1 |
26 | Python (CPython 3.11.4) | 256.5 | 405.07 | 72 | 1766 | 586 |
27 | TypeScript 5.1 (Deno 1.35.1) | 285 | 285.00 | 285 | 285 | 1 |
28 | Python (Mambaforge / CPython 3.10.10) | 308 | 307.84 | 171 | 525 | 19 |
29 | TypeScript 5.1 (Node.js 18.16.1) | 311 | 368.86 | 127 | 640 | 7 |
30 | JavaScript (Node.js 18.16.1) | 311.5 | 312.10 | 257 | 373 | 10 |
31 | Python (Cython 0.29.34) | 457 | 593.46 | 179 | 1937 | 13 |
32 | Julia (Julia 1.9.2) | 482 | 425.60 | 259 | 508 | 5 |
33 | Java (OpenJDK 17) | 536 | 593.14 | 107 | 1979 | 102 |
34 | Haskell (GHC 9.4.5) | 601 | 540.86 | 92 | 1033 | 7 |
35 | Kotlin (Kotlin/JVM 1.8.20) | 607 | 584.57 | 293 | 804 | 7 |
36 | 上記以外の言語はACなし |
D - LOWER
- 問題:D - LOWER
- 提出言語数:36
グラフは下記です。
表は下記です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | Rust (rustc 1.70.0) | 52 | 97.00 | 22 | 1167 | 91 |
2 | C (gcc 12.2.0) | 71 | 80.86 | 56 | 149 | 14 |
3 | Crystal (Crystal 1.9.1) | 81 | 95.80 | 73 | 157 | 5 |
4 | Pascal (fpc 3.2.2) | 86 | 86.00 | 86 | 86 | 1 |
5 | Go (go 1.20.6) | 108 | 159.53 | 28 | 996 | 17 |
6 | C# 11.0 AOT (.NET 7.0.7) | 119 | 208.20 | 65 | 622 | 5 |
7 | C++ 20 (gcc 12.2) | 132 | 162.93 | 18 | 1983 | 3076 |
8 | C++ 17 (Clang 16.0.5) | 153 | 128.21 | 35 | 407 | 43 |
9 | C++ 17 (gcc 12.2) | 155 | 160.70 | 24 | 1120 | 288 |
10 | C++ 23 (Clang 16.0.5) | 159 | 196.69 | 47 | 559 | 13 |
11 | C++ 23 (gcc 12.2) | 160 | 217.45 | 12 | 1336 | 185 |
12 | C++ 20 (Clang 16.0.5) | 162 | 178.89 | 45 | 400 | 9 |
13 | D (LDC 1.32.2) | 185 | 185.00 | 185 | 185 | 1 |
14 | PHP (php 8.2.8) | 201 | 247.40 | 141 | 378 | 5 |
15 | Fortran (gfortran 12.2) | 216 | 216.00 | 216 | 216 | 1 |
16 | D (DMD 2.104.0) | 237 | 236.33 | 235 | 237 | 3 |
17 | C# 11.0 (.NET 7.0.7) | 246 | 273.23 | 81 | 983 | 30 |
18 | Scala 3.3.0 (Scala Native 0.4.14) | 284 | 284.00 | 284 | 284 | 1 |
19 | TypeScript 5.1 (Deno 1.35.1) | 305 | 305.00 | 305 | 305 | 1 |
20 | F# 7.0 (.NET 7.0.7) | 407 | 407.00 | 407 | 407 | 1 |
21 | Common Lisp (SBCL 2.3.6) | 413 | 413.00 | 399 | 427 | 2 |
22 | Lua (LuaJIT 2.1.0-beta3) | 423 | 423.00 | 423 | 423 | 1 |
22 | Python (PyPy 3.10-v7.3.12) | 423 | 458.06 | 189 | 1942 | 509 |
24 | Java (OpenJDK 17) | 483.5 | 709.19 | 128 | 1964 | 72 |
25 | TypeScript 5.1 (Node.js 18.16.1) | 490.5 | 501.25 | 365 | 659 | 4 |
26 | Julia (Julia 1.9.2) | 536 | 662.20 | 487 | 950 | 5 |
27 | JavaScript (Node.js 18.16.1) | 564.5 | 560.17 | 485 | 653 | 6 |
28 | Swift (swift 5.8.1) | 567 | 567.00 | 567 | 567 | 1 |
29 | Ruby (ruby 3.2.2) | 817 | 895.24 | 516 | 1645 | 29 |
30 | Visual Basic 16.9 (.NET 7.0.7) | 841 | 841.00 | 828 | 854 | 2 |
31 | OCaml (ocamlopt 5.0.0) | 842.5 | 842.50 | 134 | 1551 | 2 |
32 | Python (CPython 3.11.4) | 884 | 900.13 | 303 | 1711 | 210 |
33 | Haskell (GHC 9.4.5) | 912 | 858.43 | 52 | 1949 | 7 |
34 | Python (Mambaforge / CPython 3.10.10) | 945 | 1039.13 | 724 | 1699 | 15 |
35 | Python (Cython 0.29.34) | 1169 | 1291.00 | 951 | 1674 | 5 |
36 | Kotlin (Kotlin/JVM 1.8.20) | 1254 | 1150.40 | 682 | 1417 | 5 |
37 | 上記以外の言語はACなし |
E - Roulettes
- 問題:E - Roulettes
- 提出言語数:23
グラフは下記です。
A問題と比べるとプログラミング言語数がかなり減りましたね。ただ、速度のばらつきは小さくなっているように見えます。
表は下記です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | C (gcc 12.2.0) | 1.5 | 1.50 | 1 | 2 | 2 |
2 | C++ 17 (Clang 16.0.5) | 2 | 2.00 | 2 | 2 | 1 |
3 | C++ 20 (Clang 16.0.5) | 2 | 2.00 | 2 | 2 | 1 |
4 | Rust (rustc 1.70.0) | 2 | 3.15 | 1 | 12 | 20 |
5 | C++ 23 (Clang 16.0.5) | 3 | 3.00 | 3 | 3 | 3 |
6 | Go (go 1.20.6) | 3 | 3.67 | 3 | 5 | 3 |
7 | C++ 23 (gcc 12.2) | 3 | 4.13 | 2 | 38 | 55 |
8 | C++ 17 (gcc 12.2) | 3 | 5.67 | 2 | 124 | 48 |
9 | C++ 20 (gcc 12.2) | 3 | 8.09 | 1 | 623 | 489 |
10 | D (DMD 2.104.0) | 4 | 4.00 | 4 | 4 | 1 |
11 | Crystal (Crystal 1.9.1) | 5 | 4.33 | 3 | 5 | 3 |
12 | Lua (LuaJIT 2.1.0-beta3) | 5 | 5.00 | 5 | 5 | 1 |
13 | C# 11.0 AOT (.NET 7.0.7) | 5 | 13.75 | 4 | 41 | 4 |
14 | Haskell (GHC 9.4.5) | 6 | 6.00 | 6 | 6 | 1 |
15 | PHP (php 8.2.8) | 31 | 31.00 | 31 | 31 | 1 |
16 | C# 11.0 (.NET 7.0.7) | 54 | 58.33 | 45 | 93 | 9 |
17 | TypeScript 5.1 (Deno 1.35.1) | 81 | 81.00 | 81 | 81 | 1 |
18 | Python (PyPy 3.10-v7.3.12) | 85 | 108.51 | 70 | 702 | 86 |
19 | Java (OpenJDK 17) | 88 | 97.36 | 55 | 164 | 11 |
20 | Python (CPython 3.11.4) | 101.5 | 136.31 | 39 | 542 | 16 |
21 | Ruby (ruby 3.2.2) | 124 | 124.00 | 124 | 124 | 1 |
22 | Kotlin (Kotlin/JVM 1.8.20) | 139 | 139.00 | 139 | 139 | 1 |
23 | JavaScript (Node.js 18.16.1) | 294 | 294.00 | 294 | 294 | 1 |
24 | 上記以外の言語はACなし |
F - A Certain Game
- 問題:F - A Certain Game
- 提出言語数:19
グラフは下記です。
表は下記です。言語毎の違いがかなり顕著ですね。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | C++ 20 (Clang 16.0.5) | 86 | 86.00 | 86 | 86 | 1 |
2 | Rust (rustc 1.70.0) | 107.5 | 183.25 | 63 | 876 | 16 |
3 | C++ 17 (Clang 16.0.5) | 119 | 122.75 | 70 | 183 | 4 |
4 | C++ 23 (gcc 12.2) | 133 | 162.80 | 64 | 467 | 46 |
5 | C++ 20 (gcc 12.2) | 144 | 175.71 | 53 | 950 | 526 |
6 | C++ 17 (gcc 12.2) | 147 | 172.24 | 34 | 561 | 45 |
7 | C (gcc 12.2.0) | 155 | 155.00 | 96 | 214 | 2 |
8 | C# 11.0 (.NET 7.0.7) | 195 | 253.33 | 149 | 408 | 6 |
9 | Lua (LuaJIT 2.1.0-beta3) | 249 | 249.00 | 249 | 249 | 1 |
10 | Go (go 1.20.6) | 280 | 426.00 | 257 | 741 | 3 |
11 | C++ 23 (Clang 16.0.5) | 338 | 374.67 | 172 | 614 | 3 |
12 | C# 11.0 AOT (.NET 7.0.7) | 350.5 | 350.50 | 230 | 471 | 2 |
13 | Crystal (Crystal 1.9.1) | 413.5 | 413.50 | 237 | 590 | 2 |
14 | Ruby (ruby 3.2.2) | 651 | 651.00 | 651 | 651 | 1 |
15 | Python (PyPy 3.10-v7.3.12) | 691 | 784.72 | 250 | 1809 | 65 |
16 | Java (OpenJDK 17) | 743 | 967.71 | 505 | 1979 | 7 |
17 | Julia (Julia 1.9.2) | 764 | 764.00 | 764 | 764 | 1 |
18 | TypeScript 5.1 (Deno 1.35.1) | 1103 | 1103.00 | 1103 | 1103 | 1 |
19 | Python (CPython 3.11.4) | 1346 | 1459.57 | 869 | 1979 | 7 |
20 | 上記以外の言語はACなし |
G - Amulets
- 問題:G - Amulets
- 提出言語数:9
グラフは下記です。
対象言語は一桁になりました。グラフがかなり見やすいです。
表は下記です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | C (gcc 12.2.0) | 183 | 183.00 | 183 | 183 | 1 |
2 | Rust (rustc 1.70.0) | 279.5 | 295.25 | 204 | 418 | 4 |
3 | C++ 23 (gcc 12.2) | 414 | 440.47 | 138 | 1034 | 17 |
4 | C++ 20 (gcc 12.2) | 453 | 528.04 | 79 | 1933 | 142 |
5 | C++ 17 (gcc 12.2) | 495.5 | 410.93 | 94 | 723 | 14 |
6 | C++ 17 (Clang 16.0.5) | 683 | 643.33 | 501 | 746 | 3 |
7 | Crystal (Crystal 1.9.1) | 782 | 782.00 | 782 | 782 | 1 |
8 | Python (PyPy 3.10-v7.3.12) | 1082 | 1058.50 | 736 | 1536 | 8 |
9 | Ruby (ruby 3.2.2) | 1731 | 1731.00 | 1731 | 1731 | 1 |
10 | 上記以外の言語はACなし |
Ex - Disk and Segments
- 問題:Ex - Disk and Segments
- 提出言語数:5
ACを記録した言語がそもそも5つしかありませんでした。
C++ 20 (gcc 12.2)以外はACとなった提出数が1もしくは2です。
グラフは下記でした。
表は下記です。
言語 | 中央値(ms) | 平均値(ms) | 最小値(ms) | 最大値(ms) | 提出数 | |
---|---|---|---|---|---|---|
1 | C++ 17 (Clang 16.0.5) | 15 | 15.00 | 15 | 15 | 1 |
2 | Rust (rustc 1.70.0) | 21 | 21.00 | 21 | 21 | 1 |
3 | C++ 23 (gcc 12.2) | 158 | 158.00 | 7 | 309 | 2 |
4 | C++ 20 (gcc 12.2) | 196 | 602.70 | 8 | 1952 | 27 |
5 | Python (PyPy 3.10-v7.3.12) | 902 | 902.00 | 902 | 902 | 1 |
6 | 上記以外の言語はACなし |
最後に
母数に偏りがあるのでどのように受け止めるか難しい部分もありますが、たとえば「最小値はその言語において工夫次第で実現できる速度である」ですとか「同じ言語でも書き方によってこれだけ差が出る」ですとか「自分が用いている言語内での中央値はこれぐらいなんだ」ですとか、数字から気付ける事実もかなりあるのかなと思ってもいます。
宣伝
SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。
Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。