От чего такая разница?
Почему массив в опере обрабатывается в 100 раз медленне чем в Firefox и chrome?
var arr = [] for (i=0;i<1000000;i++) arr[i] = i console.time('test1') for (i=0;i<arr.length;i++) arr[i] console.timeEnd('test1') // * Opera 12: ~700ms * Firefoz 14: 6-8 ms, ~7ms * Google Chrome 19: 7ms |
9xakep,
Он в консоле поди медленней, посколь там Dragonfly параллельно тестит все переходы и ошибки пробуй через document.write или appendChild в div выводить |
потестим :
var arr = [], i, started, len; for (i=0; i < 1e6; i += 1) arr[i] = i; started = Date.now(); for (i=0 ;i < arr.length; i += 1) arr[i]; alert("Прошли массив с проверкой св-а length : " + (Date.now() - started) + " ms"); /* FF : 9 CH: 36 OP : 220 */ started = Date.now(); for (i=0 ;i in arr; i += 1) arr[i]; alert("Прошли массив с проверкой in : " + (Date.now() - started) + " ms"); /* FF : 11 CH : 100 OP : 409 */ started = Date.now(); for (i=0, len = arr.length;i < len; i += 1) arr[i]; alert("Прошли массив с кешированием length : " + (Date.now() - started) + " ms"); /* FF : 9 CH : 33 OP : 237 */ что за фигня? Linux x86_64. |
А я сейчас читаю Стояна Стефанова, по твоему совету ктстати) Там сказано, что гораздо оптимальнее делать так:
var arr = [], length, time; for (i=0;i<1e7;i++) arr[i] length = arr.length // объявить длину вначале, а не обращаться к ней каждый раз time = Date.now(); for (i=0;i<length;i++) arr[i] alert(Date.now() - time+'ms') Deff, var arr = [], time for (i=0;i<1000000;i++) arr[i] = i time = Date.now(); for (i=0;i<arr.length;i++) arr[i] alert(Date.now()-time+'ms') /* * Opera 12: 202 ms * Chrome 20: 22 ms * FireFox 14: 6 ms * O_O_O_O * */ Я почему-то всегда считал, что она лидирует в скорости обработки js |
круто-круто)) а какая опера, melky?
|
Цитата:
http://2012.jsconf.us/ Vyacheslav Egorov - One day of life in V8 ну да, как минимум для в8) |
Цитата:
Цитата:
Цитата:
|
melky,
Cовет тот жа - выведи не через алерт а в div |
Цитата:
ссыль Deff, <div id='res'> </div> <script> var arr = [], time for (i=0;i<1000000;i++) arr[i] = i time = Date.now(); for (i=0;i<arr.length;i++) arr[i] document.getElementById('res').innerHTML = (Date.now()-time) /* омг * Opera: ~600ms * Chrome: ~6ms * Firefox: ~6 ms */ </script> |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:01. |