私はnode.jsとファイル(48KB)のpythonとの同期をとってプロファイリングしています。node.jsがファイルの読み込み時にpythonより速いのはなぜですか?
Node.jsのコード
var fs = require('fs');
var stime = new Date().getTime()/1000;
for (var i=0; i<1000; i++){
var content = fs.readFileSync('npm-debug.log');
}
console.log("Total time took is: " + ((new Date().getTime()/1000) - stime));
Pythonのコードは次のよう
import time
stime = time.time()
for i in range(1000):
with open('npm-debug.log', mode='r') as infile:
ax = infile.read();
print("Total time is: " + str(time.time() - stime));
タイミングは以下のとおりです。
$ python test.py
Total time is: 0.5195660591125488
$ node test.js
Total time took is: 0.25799989700317383
どこに違いがありますか?ファイルIOで
- または
- PythonのリストのDS割り当て
または私はリンゴにリンゴを比較していないのですか?
EDIT:
:- 更新Pythonのreadlines()(読んで)良い比較のために
- は500
目的から1000年までの反復を変更
node.jsの真実を理解するにはPythonがCよりも遅いこのような状況でどのような場所にいるのかが遅い場合、
これは、正確にリンゴとリンゴの比較ではありません。 node.jsでは、ファイル全体を一度に読むために最適化された関数を呼び出しています。 Pythonでは、ファイルを1行ずつ処理しています。また同じファイルを何度も読んでいるのは、ファイルが最初に読み込まれた後にOSによってキャッシュされるため、実際にファイルI/Oをテストすることではありません。一般的な結論を導き出すために、全体的にみても、驚くほどの比較があります。 – jfriend00
@ jfriend00ねえ、あなたのコメントが理にかなっていました。そして私はinfile.read()で試しました。それでもオーバーヘッドは2倍です(0.28 python対0.15ノード)。ノードファイルの読み込み機能が最適化されている可能性があります – user3151330
結論:そのような比較のための質問からのテストは「代表」ではありません – RomanPerekhrest