入出力がネックになる場合
メインロジックの7倍以上重い
ナイーブ 876 ms #5941704
var TX = ReadLine().Split().Select(int.Parse).ToArray();
var T = TX[0];
var X = TX[1];
いや、C/C++の速い提出は60 ms切ってるけど・・・ 10^5入出力だからそこが遅そう
AutoFlush
を切る 327 ms #5941729
SetOut(new System.IO.StreamWriter(OpenStandardOutput()) { AutoFlush = false });
//...
Out.Flush();
AutoFlush = true
の10^5出力はfalse
より500 ms遅い。ほかの問題でもそう
入力はLINQとToArray
が遅そう
Select
、ToArray
をやめる 229 ms #5941784
var TX = ReadLine().Split();
var X = int.Parse(TX[1]);
if (TX[0] == "1")
Split
も配列生成してるが
Split
をやめる 185 ms #5941872
var TX = ReadLine();
var X = int.Parse(TX.Substring(2));
if (TX[0] == '1')
Substring
もstring
の新しいインスタンスを生成してる。
AsSpan
できねぇ
.NETの標準ライブラリ 、内部で例外の変数チェックとか多重のメソッド呼び出しとかいっぱいあって、自分で書いた方が速いのでは
自前IO 103 ms #8097556
public static class FastIO
{
...
ストリームの管理とかパースとかを自分でやる
入出力の改善で 870 ms -> 100 ms
実質 80 ms だから C/C++ に追いついたか
自前出力は面倒なのでAutoFlush
切るだけで十分