Использование volatile
должно избежать этой оптимизации:
for(i = 0; i < buffSize; i++)
{
byte volatile b = arr[i];
printf("%c", (b & ~key) | (key & ~b));
}
Но она останется неоптимизированной и для более высоких уровней оптимизации.
Второй имеет тенденцию быть быстрее в некоторых браузерах, но главное, что вы должны использовать его, потому что первый просто не является кроссбраузерным.Несмотря на то, что The Times They Are a-Changin '
@kangax ( IE 9 preview )
Array.prototype.slice теперь может преобразовывать определенные хост-объекты (например, NodeList's) в массивы - то, что большинство современные браузеры смогли сделать некоторое время.
Пример:
Array.prototype.slice.call(document.childNodes);
Принимая nodeList = document.querySelectorAll("div")
, это - краткая форма преобразования nodelist
для выстраивания.
var nodeArray = [].slice.call(nodeList);
Посмотрите, что я использую его здесь .
Результаты будут полностью зависеть от браузера, чтобы вынести объективный вердикт, мы должны провести несколько тестов производительности, вот некоторые результаты, вы можете запустить их здесь :
Chrome 6:
Firefox 3.6:
Firefox 4.0b2:
Safari 5:
IE9 Platform Preview 3:
Посмотрите этот пост в блоге здесь , в которой говорится об одном и том же. Из того, что я собираю, дополнительное время может быть связано с ходьбой вверх по цепочке прицела.