IE8 самый быстрый
Браузеры Firefox и Chrome любят пощеголять скоростью своих новых JavaScript-движков и общей скоростью браузеров, кидая камни в огород Microsoft. Да, с поддержкой веб-стандартов IE плетётся в хвосте (потому что в новых браузерах поддерживать новые стандарты проще, чем в старых
Eserv/4 в этом году является поставщиком стресс-тестов для браузеров


Так вот такая простая задача стала для браузеров непростым тестом. Сначала я решил задачу в лоб: на каждую строку таблицы запускался ajax-запрос. Запросы выполнялись асинхронно, т.е. могли одновременно выполняться несколько (для веб-сервера acWEB из E4 это, естественно, не проблема, а привычный режим работы), но JS-скрипт в браузере это учитывал, и всё правильно работало. До тех пор, пока я не стал тестировать на списках с десятками тысяч пользователей (пользователи форума, подписчики списков рассылки, списки сертификатов Eserv/3, и т.д.). Часть запросов от браузера серверу стали теряться, т.е. часть ajax-запросов просто не выполнялись — как будто случайно пропускались, и эти записи таблицы, соответственно, не импортировались. Испытывал все существующие браузеры, и только Firefox проводил импорт без пропусков. IE и Chrome пропускали заметную часть, а Opera вообще бОльшую часть таблицы. Разборки показали, что в этих браузерах есть буфер-очередь исходящих ajax-запросов, и если этот буфер в текущий момент весь заполнен, то очередной "претендент" просто туда не попадает — никогда не выполняется. Самый большой из буферов — порядка 500 запросов. При этом узнать момент переполнения невозможно, т.к. никакие ошибки не возвращаются. Браузеры также сильно отличаются в стратегии выполнения запросов из своей очереди. Например, Опера выполняет их последовательно — одним потоком, открывая отдельный коннект для каждого запроса. Другие используют более оптимальные стратегии по коннектам и потокам (подробностей уже, к сожалению, не помню — несколько месяцев прошло). Наличие такого ограничения в браузерах заставило применить другую стратегию — отправлять запросы не "толпой", а последовательно, т.е. превратить AJAX в простой "JAX": после отправки одного запроса следующий запускается только по факту возврата результатов предыдущего. Это несколько замедляет процесс, но не сильно, т.к. основные затраты времени идут на JavaScript+DOM (DHTML) операции по работе с таблицей в браузере — процессор (один из процессоров) загружается этой примитивной работой практически на 100%. При таком способе работы все браузеры справляются с импортом без пропусков.
Так вот, возвращаясь собственно к теме статьи: IE8 на таких задачах раза в три быстрее остальных браузеров. Т.е. на импорт например 3000 пользователей у IE8 уходит около 20 минут (на стороне acWEB — 40 секунд

