言語別メモリ
各言語の参考提出(No.9000 Hello World!(テスト用)を解いた最小限の提出)を
本番と同じジャッジサーバで実行し、その使用メモリから
「この言語が通るために最低限必要なメモリ制限」を出しています。
メモリ制限をこの値より小さくすると、解法とは関係なくその言語では MLE になります。
いちばん要るのは 265 MB です。全言語を通したいなら、メモリ制限はこれに解法が使う分を足した値にしてください。
メモリ制限の上限は 1024 MB です。
※ 言語のバージョンを上げると変わるので、更新のたびに測り直しています。
| # | 言語 | 言語ID | 最低メモリ制限 | 計測値 | 参考提出 |
|---|---|---|---|---|---|
| 1 | Julia | julia | 265 MB | 264728 KB | #623552 |
| 2 | Raku | raku | 178 MB | 177988 KB | #13792 |
| 3 | PyPy2 | pypy2 | 81 MB | 80624 KB | #5667 |
| 4 | Clojure(Beta) | clojure | 70 MB | 69176 KB | #497489 |
| 5 | Elixir | elixir | 67 MB | 66956 KB | #109209 |
| 6 | PyPy3 | pypy3 | 56 MB | 55828 KB | #13315 |
| 7 | Scala(Beta) | scala | 52 MB | 51880 KB | #4296 |
| 8 | JavaScript | node | 51 MB | 50872 KB | #100 |
| 9 | TypeScript | typescript | 51 MB | 50488 KB | #506899 |
| 10 | Kotlin | kotlin | 46 MB | 45460 KB | #19471 |
| 11 | Java | java | 43 MB | 42984 KB | #418 |
| 12 | PHP | php | 39 MB | 38364 KB | #2088 |
| 13 | F# | fsharp | 33 MB | 32020 KB | #45593 |
| 14 | Common Lisp | lisp | 30 MB | 29040 KB | #401877 |
| 15 | C# | csharp_dotnet | 29 MB | 28988 KB | #662779 |
| 16 | C#(csc) | csharp | 27 MB | 26280 KB | #633 |
| 17 | Scheme | scheme | 17 MB | 16384 KB | #45205 |
| 18 | Ruby | ruby | 15 MB | 14592 KB | #256 |
| 19 | Python3 | python3 | 12 MB | 11008 KB | #567 |
| 20 | OCaml | ocaml | 10 MB | 9800 KB | #33012 |
| 21 | C++11(old_compat) | cpp_gcc12_compat | 10 MB | 9796 KB | #684931 |
| 22 | C++23(gnu拡張gcc16) | cpp23_gnu_gcc16 | 10 MB | 9796 KB | #684931 |
| 23 | Crystal | crystal | 10 MB | 9796 KB | #38408 |
| 24 | Bash | sh | 10 MB | 9792 KB | #24746 |
| 25 | Lua | lua | 10 MB | 9792 KB | #85147 |
| 26 | C | c_latest | 10 MB | 9788 KB | #154796 |
| 27 | C++11 | cpp | 10 MB | 9788 KB | #554 |
| 28 | Fortran | fortran | 10 MB | 9788 KB | #7648 |
| 29 | Standard ML | sml | 10 MB | 9788 KB | #583404 |
| 30 | C++17 | cpp17 | 10 MB | 9784 KB | #168054 |
| 31 | C++17(gnu拡張) | cpp17_gnu | 10 MB | 9784 KB | #168054 |
| 32 | Brainfuck | bf | 10 MB | 9780 KB | #1008586 |
| 33 | C(gnu17) | c17 | 10 MB | 9780 KB | #138297 |
| 34 | Rust | rust | 10 MB | 9780 KB | #36808 |
| 35 | Perl | perl | 10 MB | 9776 KB | #260 |
| 36 | Assembler | nasm | 10 MB | 9768 KB | #84045 |
| 37 | C90 | c90_gcc15 | 10 MB | 9768 KB | #138297 |
| 38 | C++17(clang) | cpp-clang | 10 MB | 9764 KB | #228199 |
| 39 | C11(gcc12 gnu拡張) | c11_gcc12 | 10 MB | 9760 KB | #138297 |
| 40 | C++23 | cpp23 | 10 MB | 9740 KB | #684931 |
| 41 | Haskell | haskell | 10 MB | 9736 KB | #981 |
| 42 | Nim | nim | 10 MB | 9736 KB | #13891 |
| 43 | D | d | 10 MB | 9732 KB | #2716 |
| 44 | Text | text | 10 MB | 9728 KB | #22820 |
| 45 | C++14 | cpp14 | 10 MB | 9724 KB | #85025 |
| 46 | C90(gcc12) | c | 10 MB | 9716 KB | #4830 |
| 47 | cLay | clay | 10 MB | 9716 KB | #195393 |
| 48 | C++11(gcc12) | cpp_gcc12 | 10 MB | 9704 KB | #684931 |
| 49 | Whitespace | Whitespace | 10 MB | 9704 KB | #5837 |
| 50 | C++17(gcc12) | cpp17_gcc12 | 10 MB | 9700 KB | #611795 |
| 51 | C++23(gnu拡張) | cpp23_gnu | 10 MB | 9696 KB | #684931 |
| 52 | Swift | swift | 9 MB | 8960 KB | #259882 |
| 53 | Vim script | vim | 8 MB | 7936 KB | #137340 |
| 54 | C++23(gcc16) | cpp23_gcc16 | 8 MB | 7716 KB | #684931 |
| 55 | Go | go | 8 MB | 7716 KB | #3971 |
| 56 | Kuin | kuin | 8 MB | 7716 KB | #403993 |
この数字の読み方
-
判定に使うのは提出プロセスの使用メモリ(Maxrss)です。ジャッジは
使用メモリ(KB) >= 1000 × メモリ制限(MB)で MLE にするので、 「最低メモリ制限」は計測値を 1000 で割って切り上げた値ではなく、 それを超える最小の整数です。 例えば 43104 KB の言語は 43 MB では43104 >= 43000で MLE になるため、44 MB が要ります。 - どの言語も 8 MB 程度が下限になります。計測値には実行を包む仕組みの分が含まれるためで、 何もしないプログラムでもこれを下回りません。この付近に並んでいる言語は、 実質「言語による差が無い」と読んでください。
- コンパイルで使うメモリはメモリ制限の対象外なので、この表には入っていません。
- 計測値は実行ごとに多少ぶれます。