Comments 67
>У меня в Chrome было 4мс, а в FF4 четко на 10мс держалось.
Опера держит 2мс.
>На Windows он упирается в лимит VSync — 60 fps. Есть Issue об этом, за который можно проголосовать поставив звездочку.
Но зачем? Чтобы на изображении проступали вертикальные полосы несинхронизированной прорисовки?
Опера держит 2мс.
>На Windows он упирается в лимит VSync — 60 fps. Есть Issue об этом, за который можно проголосовать поставив звездочку.
Но зачем? Чтобы на изображении проступали вертикальные полосы несинхронизированной прорисовки?
И тогда вступает в силу особенности реализации очереди событий в броузерах. Есть вот такой интересный тест, который должен показать минимальную точность setTimeout. У меня в Chrome было 4мс, а в FF4 четко на 10мс держалось.
opera 2мс выдаёт (точнее 2,3мс)
Safari, OS X 10.6.6: 10 мс.
100 iterations of setZeroTimeout took 15 milliseconds.
100 iterations of setTimeout(0) took 1087 milliseconds.
Странные они, эти тесты.
100 iterations of setZeroTimeout took 15 milliseconds.
100 iterations of setTimeout(0) took 1087 milliseconds.
Странные они, эти тесты.
Да, понятно было, что что-то нечисто, но не было времени разобрать. Чутьё подтверждалось тем, что автор того топика в MS работает :) (написано на его странице xaoccps.habrahabr.ru/ ).
О, как всегда, MS в тестах сфейлили.
У меня с этими изменениями в IE9 производительность поднялась со 150 до 400
Типичный пример того, как безграмотность меняет смысл текста.
Как правильно хотел написать автор:
«О, тестирование скорости! „
или
“О тестированиИ скорости ...»
Как правильно хотел написать автор:
«О, тестирование скорости! „
или
“О тестированиИ скорости ...»
Типичный пример, как надо было писать в личку, потому что автор опечатку исправит, а ваш пост тут будет висеть тут ещё долго и безсмысленно.
Нет уж, пусть все видят и сами учатся на чужих ошибках
Чтоб ветка зря не пропадала, :) приставка без-/бес- пишется в зависимости от следующей за ней буквы: «без-» для гласных и звонких согласных, «бес-» для глухих согласных. Примеры: Безответственность, бездарность, беспечность.
Спасибо, поправил.
Действительно название я менял несколько раз не зная что выбрать, по этому в конце концов вышел средний вариант :)
Действительно название я менял несколько раз не зная что выбрать, по этому в конце концов вышел средний вариант :)
UFO just landed and posted this here
>Возможно это из-за гранулированности работы с таймером для Windows систем (без использования high-performance counter-ов или мультимедия расширений).
Все проще.
developer.mozilla.org/en/DOM/window.setInterval
As with setTimeout, there is a minimum delay enforced.
HTML 5 defines the minimum delay = 4 ms, starting with the second successive setTimeout().
Все проще.
developer.mozilla.org/en/DOM/window.setInterval
As with setTimeout, there is a minimum delay enforced.
HTML 5 defines the minimum delay = 4 ms, starting with the second successive setTimeout().
Я не нашел в спецификации W3C или WhatWG упоминания про 4мс (ссылки на setTimeout в посте есть), хотя в блог-постах действительно часто упоминается. Может раньше было?
Если найдете, скажите — я добавлю в текст.
Если найдете, скажите — я добавлю в текст.
www.whatwg.org/specs/web-apps/current-work/multipage/timers.html
The setInterval() method must run the following steps:
5. If timeout is less than 10, then increase timeout to 10
The setTimeout() method must run the following steps:
5. If the currently running task is a task that was created by the setTimeout() method, and timeout is less than 4, then increase timeout to 4.
The setInterval() method must run the following steps:
5. If timeout is less than 10, then increase timeout to 10
The setTimeout() method must run the following steps:
5. If the currently running task is a task that was created by the setTimeout() method, and timeout is less than 4, then increase timeout to 4.
Ха, забавно. Сейчас сделаю апдейт статьи.
Выходит что те браузера, которые делают setTimeout < 2мс уже не следуют стандарту WhatWG.
Но IE9 больше следует W3C-варианту HTML5, в котором вроде нет этого ограничения, что и объясняет огромные FPS на этом… гм, «тесте».
Выходит что те браузера, которые делают setTimeout < 2мс уже не следуют стандарту WhatWG.
Но IE9 больше следует W3C-варианту HTML5, в котором вроде нет этого ограничения, что и объясняет огромные FPS на этом… гм, «тесте».
Собственно, текущий вариант спецификации от W3C говорит то же самое, что и WHATWG: www.w3.org/TR/2011/WD-html5-20110113/timers.html#timers
У меня ваша версия показывает больший фпс (57 против 40), но при этом на вид не 57, а 20, все летит медленее и прерывистее, чем в оригинале, в котором все идет очень гладко и шустро.
Именно это я и хотел написать — что этот тест на самом деле «меряет» вообще непонятно что.
Смысл поста — критика подобных «тестов», которые непонятно что показывает, да еще в ракурсе «IE 9: 300+ fps, все остальные — меньше 100», в то время в тесте столько проблем, что даже мой пост только чуть затронул.
Я уверен, что если еще глубже копнуть можно еще много найти откуда взялись эти 300+ fps.
Смысл поста — критика подобных «тестов», которые непонятно что показывает, да еще в ракурсе «IE 9: 300+ fps, все остальные — меньше 100», в то время в тесте столько проблем, что даже мой пост только чуть затронул.
Я уверен, что если еще глубже копнуть можно еще много найти откуда взялись эти 300+ fps.
if (!IE) {
delay(100500);
}
delay(100500);
}
с переключениями табок это вы лихо — понятно что фф перестает отрисовывать неактивную табку и фпс скачет до небес.
может попробовать setInterval(moveIt,10); и будет все честно?
может попробовать setInterval(moveIt,10); и будет все честно?
тогда Вы ограничите результат до 100 fps (которых в реальных проектах хватает с головой), и не дадите IE9 набрать свои сотни fps :)
Создать сложную сцену, которую любой браузер гарантировано будет рендерить дольше 10мс?
кстати на моем макбук про хром показывает 30фпс. никак не «200+ под не-Windows платформами»
А включенны всякие там «GPU Accelerated Compositing/GPU Accelerated Canvas 2D»? У меня на Ubuntu без никаких трюков и на сравнительно среднем cpu/gpu — 250
насколько я понял в хроме 10.0.648.134 этого нет. вкладка about:labs — пустая.
В последних версиях Chrome about:labs переехало в about:flags
Буквально последний абзац перед «Вывод» — там про about:flags:)
У меня в FF 3.6 под windows 7 модифицированная версия работает чуть медленнее(15-20 фпс против 20-25) и визуально хуже (дерганней) чем оригинал
IE9 — показывает 3ms
Ну как то так…
MAC OS X 10.6.6
Firefox 4 — s41.radikal.ru/i091/1103/38/b797f9a68904.jpg
Safari 5 — s48.radikal.ru/i122/1103/23/28c662d980fe.png
Chrome 10 — s60.radikal.ru/i168/1103/0d/de6cd14a7b47.png
Opera 11 — s004.radikal.ru/i205/1103/14/16dab0c5b292.png
MAC OS X 10.6.6
Firefox 4 — s41.radikal.ru/i091/1103/38/b797f9a68904.jpg
Safari 5 — s48.radikal.ru/i122/1103/23/28c662d980fe.png
Chrome 10 — s60.radikal.ru/i168/1103/0d/de6cd14a7b47.png
Opera 11 — s004.radikal.ru/i205/1103/14/16dab0c5b292.png
win7, ff 3.6.x i7-950, hd4870 2gb.
100 iterations of setZeroTimeout took 8 milliseconds.
100 iterations of setTimeout(0) took 993 milliseconds.
Оригинальный тест — 30-34 фпс.
Модифицированный — 40 фпс. (табался, тоже самое)
setTimeout — 9.5
100 iterations of setZeroTimeout took 8 milliseconds.
100 iterations of setTimeout(0) took 993 milliseconds.
Оригинальный тест — 30-34 фпс.
Модифицированный — 40 фпс. (табался, тоже самое)
setTimeout — 9.5
Веб-кит под Андроид (2.3.3) — 11.2
Веб-кит под iPhone4 — около 12.
оО на довольно сильном камне (phenom II x2 550) в хроме 10 под вин с включенным ускорением канваса — всего 46фпс в обычной версии и 21 в версии с увеличенным числом полигонов оО
почему так мало?
почему так мало?
FF4, 180FPS, явные лаги прорисовки.
Люди — знайте — в ФФ нельзя использовать таймауты которые быстрее функции переносимой.
Получается просто — вы проапдейтили канвас, ФФ думает что можно бы и страницу обновить, а вы его опять начинайте апдейтить.
В итоге Браузер просто не обновляет картинку, генеря при этом жуткий ФПС( так как он попросту начинает пропускать фреймы)
Я всем сильно рекомендую вызывать аниматор «через-тик», тоесть гарантировать между двумя таймаутами один «пустой-таймауат-гарант» отрисовки( либо в одном таймауте поднимаете таймаут на отрисовку, либо просто только по четным фреймам работаете)
И не надо гнаться за ФПС, в реальность 25 кадра лично я не верю :)
Люди — знайте — в ФФ нельзя использовать таймауты которые быстрее функции переносимой.
Получается просто — вы проапдейтили канвас, ФФ думает что можно бы и страницу обновить, а вы его опять начинайте апдейтить.
В итоге Браузер просто не обновляет картинку, генеря при этом жуткий ФПС( так как он попросту начинает пропускать фреймы)
Я всем сильно рекомендую вызывать аниматор «через-тик», тоесть гарантировать между двумя таймаутами один «пустой-таймауат-гарант» отрисовки( либо в одном таймауте поднимаете таймаут на отрисовку, либо просто только по четным фреймам работаете)
И не надо гнаться за ФПС, в реальность 25 кадра лично я не верю :)
>не надо гнаться за ФПС
надо, еще как.
хотя-бы довести до 60-70 + синхронизировать с перерисовкой монитора.
вы когда-нибудь пробовали играть в какую-нибудь 3д игрушку, одновременно записывая фрапсом например? он искуственно снижает FPS до 30 — ощущения не из приятных. больше частоты синхронизации — при резких (и даже не очень) движениях игрока (поворотах) в разные стороны будут ощутимо заметны вертикальные полосы, разделяющий 2 кадра. т.е. какбы старый кадр на месте, поверх начал отрисовываться новый и дошел только до трети монитора. поэтому идеал — синхронизация с частотой монитора.
надо, еще как.
хотя-бы довести до 60-70 + синхронизировать с перерисовкой монитора.
вы когда-нибудь пробовали играть в какую-нибудь 3д игрушку, одновременно записывая фрапсом например? он искуственно снижает FPS до 30 — ощущения не из приятных. больше частоты синхронизации — при резких (и даже не очень) движениях игрока (поворотах) в разные стороны будут ощутимо заметны вертикальные полосы, разделяющий 2 кадра. т.е. какбы старый кадр на месте, поверх начал отрисовываться новый и дошел только до трети монитора. поэтому идеал — синхронизация с частотой монитора.
хотя-бы довести до 60-70 + синхронизировать с перерисовкой монитора.
Может именно по этому у хромого не хотят отключать vsync при использовании gpu? :)
В браузерах это всё не имеет смысла, т.к. они обновляют картинку когда захотят.
Если бы еще лет 7 назад мне бы кто-нибудь сказал что люди будут меняться fps-ами в браузерах, я бы не поверил…
прошла тысяча лет, каждый линуксоид знает, что «glxgears — не бенчмарк», но каждый день находится как минимум один человек, создающий на форуме писькомерку показаний glxgears. Это неистребимо, желание помериться разницами простых мужицких timeout'ов гораздо сильнее, чем мудрствовать о сути графикики.
Для пользователей windows, glxgears — это такая прога, рисующая на экране цветные шестеренки, и печатающая fps'ы с которыми они рисуются на экране.
ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Glxgears.gif
Для пользователей windows, glxgears — это такая прога, рисующая на экране цветные шестеренки, и печатающая fps'ы с которыми они рисуются на экране.
ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Glxgears.gif
MacBook 5.2 2 Ггц 2Гб
MacOS 10.6.6
Первый тест: 5
Второй: 15fps
MacOS 10.6.6
Первый тест: 5
Второй: 15fps
В первой табличке результат в попугаях?
Sign up to leave a comment.
О тестировании скорости или как не надо писать тесты