Я использовал некоторый код для извлечения 16-битных значений без знака из строки.
Я обнаружил, что добавление этой функции в прототип для String
:
String.prototype.UInt16 = function(n) {
return this.charCodeAt(n) + 256 * this.charCodeAt(n + 1);
};
являетсянамного медленнее, чем просто наличие функции, которая принимает String
в качестве параметра:
var UInt16 = function(s, n) {
return s.charCodeAt(n) + 256 * s.charCodeAt(n + 1);
};
В Firefox разница только в два раза, но в Chrome 15 это сто в разы медленнее!
См. результаты на http://jsperf.com/string-to-uint16
Может кто-нибудь предложить объяснение этому и / или предложить альтернативный способ использования прототипа без снижения производительности?