私は文字列から符号なし16ビット値を抽出するためにいくつかのコードを使用してきました。 FirefoxのでJavascript - String.prototypeに追加された関数のV8でパフォーマンスが悪いですか?
var UInt16 = function(s, n) {
return s.charCodeAt(n) + 256 * s.charCodeAt(n + 1);
};
違い:
String.prototype.UInt16 = function(n) {
return this.charCodeAt(n) + 256 * this.charCodeAt(n + 1);
};
だけパラメータとしてString
をとる機能を備えたよりもはるかに遅いです:
は私がString
のプロトタイプにこの機能を追加することを発見しました2の唯一の要因ですが、Chrome 15では百1回遅くなります!
はhttp://jsperf.com/string-to-uint16
での結果は、誰もがこのために説明を差し出す、および/またはパフォーマンスヒットなしプロトタイプを使用して別の方法を提供することができますか?
http://groups.google.com/group/nodejs/browse_thread/thread/45d6dc32250c0ad3は、いくつかの光を放つかもしれません。それはちょっと心配です。 –
@CrescentFresh、私の答えを参照してください、それはまだ非常に遅く、オブジェクトを使用してスレッドで主張されている "1%以内" ...または多分私は間違っていますか? – Esailija
@エサリジャ:質問に対するあなたの答えの関係はわかりません。テストケースへの追加は、単に(String型のオブジェクトへの参照を保存すると、同じメソッドをプリミティブで呼び出すよりも、そのオブジェクトでプロトタイプ付きのメソッドを呼び出すときの結果がより速くなることをGoogleグループの議論が示す)。 OPが対処しようとしている根本的な問題は、プリミティブをオブジェクトに繰り返しボクシングするときに暗黙の型強制と関係していることです。 –