私はこの記事を読んでいた=>http://mgutz.com/2010/10/01/check_gmail_with_node_js.html。 Shomromが言うコメントで以下本文+ =チャンクは、チャンクが到着するたびに応答文字列全体を再割り当てしますか?
:
ボディ+ =チャンクが 全体の応答文字列に チャンクが到着するたびに再割り当てされます。 配列に各チャンクを追加し、 必要なときに.join()を実行する方がはるかに良いと思います。
+ =チャンク 体は本当に全体の応答文字列にチャンクが到着するたびに再配分していますか?もしそうなら、body
を安く印刷することができるこのスニペットを改善する最良の方法は何ですか?
それは次のスニペットが含まれます。必ずしも
var http = require('http');
var user = '[email protected]';
var password = 'password';
var auth = new Buffer(user + ':' + password).toString('base64');
var google = http.createClient(443, 'mail.google.com', true);
var request = google.request('GET', '/mail/feed/atom/', {
'Host': 'mail.google.com',
'Authorization': 'Basic ' + auth
});
request.addListener('response', function(res) {
var body = '';
res.addListener('data', function(chunk) {
body += chunk;
});
res.addListener('end', function() {
console.log(body);
});
});
request.end();
JavaScript実装で文字列に素晴らしいロープデータ構造が使用されていても、誰もロープを使用しない場合、これは当てはまりません。 –
非常に良い。私は、バッファを使用しても、私が推測するような大きさの事前ハンドブックがわからないのに、より効率的になると思います。あるいは、最初のヘッダからそれを抽出することができますか?コンテンツの長さ? – Alfred
私はむしろ、バッファベースのアプローチを使い、必要に応じて、配列に参加するよりも速く、Node.jsをV8の土地で直接文字列ポインタを取得し、巨大な文字列を書くハックランドまで再割り当てします何かに出るのは非常に遅いです。 –