LINUX.ORG.RU

Определение модели процессора через JS в браузере

 , ,


0

2

Прочитал тут недавно новость http://www.opennet.ru/opennews/art.shtml?num=42092 и задумался, а можно ли через браузер, посредством подсовывания ему какого-нибудь javascript кода и мерянья скорости выполнения, определить модель процессора, если точно известна версия браузера и ОС? И решил я сделать такой бенчмарк, взял уже написанную сортировку пузырьком на жабаскрипте, приделал измерение времени через Date.now() и начал тестить в разных браузерах пока что на одном и том же железе. http://dump.bitcheese.net/files/yxegyly/browsertest2.html вот что получилось. Обнаружил, что Chromium через несколько последовательных запусков пытается «оптимизировать» эту сортировку, отчего она работает медленее, и время становится устойчиво бОльшим. Эту «оптимизацию» можно вызвать после нажатия run 10. Потом можно много раз жать run 1 или run 10, без разницы. Перезагрузка страницы через F5 сбрасывает эту «оптимизацию» и скорость опять становится нормальной

Например до «оптимизации»: 3875 3875 3871 3880 3872

После «оптимизации»: 4358 4357 4352 4353 4352

Тут даже на глаз видно отличие матожидания для этих двух независимых выборок, без всяких там t-критериев Стьюдента. В Firefox тоже иногда происходит «замедление»

Вопросы: Что надо написать на Javascript, чтобы по замерам времени выполнения этого «чего-то» можно было бы как можно точнее определить модель процессора, который это «что-то» выполняет? Желательно чтобы jit оптимизации не меняли скорость работы спустя какое-то время, и чтобы скорость работы этого кода минимально отличалась от браузера к браузеру в пределах одного «железа». И насколько вообще реально определить модель процессора и/или например частоту оперативной памяти и системной шины таким способом?

★★★★★

И как например можно получить куски машинного кода, который получается после прохождения javascript кода через JIT? Отладчиком чтоли цепляться к браузеру, ставить бряки и делать дамп?

SZT ★★★★★ ()

Напоминаю, что браузер не единственная программа на целевом компьютере. Также, твоя страница не единственная, которая будет открыта в этом браузере.

Deleted ()
Ответ на: комментарий от Deleted

Значит надо минимизировать время выполнения бенчмарка, делать его при этом несколько раз и при этом брать самое быстрое время выполнения(очевидно что там будет меньше переключений контекста). Однако, как я убедился, JIT-компилятор может сильно помешать в этом т.к. в некоторых случаях его оптимизации уменьшают скорость после нескольких последовательных запусков. Chrome например запускает каждую вкладку в отдельном процессе, а процессоры часто многоядерные, что позволяет частично решить эту проблему

SZT ★★★★★ ()

Зачем определять модель? Если у тебя есть бенчмарк и ориентир какая минимально производительность нужна.

I-Love-Microsoft ★★★★★ ()

можно попытаться вынудить браузер выполнить ресурсоёмкий расчет, связанный например с хэшами, сжатием данных, видео, графика, canvas

anonymous ()
Ответ на: комментарий от tlx

Для этого его еще надо как-то запустить там. Идея в том, чтобы делать всё через браузер. К тому же бинарников надо будет много создавать, под каждую ОС/процессор, в т.ч. всякие там андроиды/iOS, а запустить какой-нибудь левый бинарник на iOS так просто не выйдет. К тому же мало кто будет их скачивать и запускать

SZT ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Зачем определять модель?

Чтобы сделать идентификацию (отслеживание) пользователя по модели процессора

SZT ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Думаю, вполне возможно. Програв несколько самопальных бенчмарков с фоновой нагрузкой и без нее, я получил малоотличающиеся результаты. Скорее всего это связано с многоядерностью процессора и относительно быстрым выполнением самого бенчмарка. Да и если в ходе выполнения бенчмарка произошло переключение контекста, это можно легко выявить по резко возросшей задержке, и просто отбрасывать этот замер

SZT ★★★★★ ()

размечтался, что под тором всё будет не замедленно и с выключенной javascript

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.