stdin(10^5のスペースで区切られた数字)から大きな入力を読み取ることができなければなりません。 10^3以上の入力とreadlineはそれを読み取るのに200秒かかりますが、5秒以内に入力できるようにする必要があります。 readline以外のものを使うべきか、readlineのバッファなどを増やす方法がありますか?あなたがさえprocess.stdin
に書き込み可能なストリームを添付するpipe()
を使用することができます何をしたいのかに応じて、ノードで標準入力から大きな入力を読み取る
2
A
答えて
0
チェックprocess.stdin
。
2
readlineは、錫に書かれているように、行を読むように設計されています。あなたのスペースで区切られた数字は(おそらく)1つの非常に長い行にあるので、readlineが問題を抱えているのは驚くことではありません。
これはTransform streamで解決するのはかなり簡単ですが、誰かがすでにあなたのために仕事をしているので、あなたがする必要はありません。 split2モジュールを見てみましょう。モジュールはデータストリームを受け取り、指定された区切り文字で分割します。あなたはこのようにそれを使用します。私のマシン上で
const split2 = require('split2');
process.stdin
.pipe(split2(' '))
.pipe(process.stdout);
(MacBook Proの、インテルCore i7プロセッサー)を、上記0.41s10万ためのスペースで区切られた数字および1,000,000数字のために2.06sを要します。
もちろん、それはひどく役に立たない。
const split2 = require('split2');
let sum = 0;
process.stdin.pipe(split2(' '))
.on('data', data => sum += parseInt(data, 10))
.on('end',() => console.log('Sum: %d', sum));
私のマシンでは0.28秒、1.87秒では1e5の合計をとっています。 (おそらくそれは出力が1行しか書かれておらず、STDOUTへの書き込みはintを解析して追加するよりも明らかに高価です)
関連する問題
- 1. 標準入力から大量のデータを読み取る
- 2. 標準入力ストリームからHadoopを読み取る
- 3. Python:標準入力から膨大な数の行を読む
- 4. inkscapeのエクスポートファイルを標準出力に出力する方法と標準入力から読み取る方法
- 5. )(freopenは後に標準入力からの入力を取る
- 6. 標準入力の読み取りは、いくつかの入力
- 7. 擬似端末 - 標準入力から読み込まない
- 8. 標準入力を連続的に読み取る方法は?
- 9. CodeChef IDEを標準入力から読み込む方法
- 10. ノンブロッキング標準入力から読み込む方法は?
- 11. Pythonの標準入力から行列を読み取る方法
- 12. Javaの標準入力から標準出力へのGZIP
- 13. 標準入力から解析する
- 14. 標準入力からの変数へのプリミティブ型の値の読み取り
- 15. 標準入力と標準出力を.Netでリダイレクトする
- 16. ファイルを読むか標準的なユーザー入力を読む
- 17. C言語のncursesアプリ - 標準入力の読み込み
- 18. は読み使用方法()これまで標準入力
- 19. 行の長さPythonは標準入力から読み込みます
- 20. C - 文字としての標準入力からの読み込み
- 21. 標準入出力をファイルに読み込むスクリプト
- 22. 標準入力と出力を
- 23. 標準入力のカスタマイズ
- 24. 標準入力[Pythonの]
- 25. C#リダイレクト標準入力/エラー
- 26. 標準出力、標準入出力オプション[ヌルヌル、ヌル、]「継承」
- 27. パラメータ付きの標準入力リダイレクト
- 28. 入力をプロセスの標準入力に繰り返し入力する
- 29. 標準入力から定義されていない行数を読み取る
- 30. 標準入力またはファイル入力のいずれかC
process.stdinを直接使って疲れましたか? 'readline'は仕事の間違ったツールに見えます。 –