Re: Движок JavaScript на ассемблере
От: vsb Казахстан  
Дата: 01.10.19 21:20
Оценка: 5 (4) +3
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Я понимаю, что "правило" 80% производительности дают 20% кода,

ЭФ>просто я не слышал о том, чтобы ядро браузера, те самые 20% писали бы на ассемблере.

Джаваскрипт преобразуется в машинный код, который потом выполняется. Компилятор написан на C++, да, но его ускорять вряд ли получится, да и слишком он сложен и работает слишком мало, чтобы от этого была ощутимая польза. И 20% там точно не будет, т.к. все места, которые можно было бы ускорить на 20%, находятся в библиотеках и оптимизированы в крайнем случае на том же ассемблере.

Ассемблер полезен, когда процессор что-то умеет, а компилятор не умеет или никак не может догадаться задействовать эти специальные инструкции. В основном это всякие векторные инструкции. Или криптография. Тут да, может быть и 20% выигрыш и даже больше. Но это доли процента от общего кода проекта. Ещё ассемблер может быть полезен, чтобы за счёт нетрадиционных трюков сократить размер кода или размер используемой памяти. Но это нужно только в очень слабых процессорах, когда счёт идёт на килобайты. К браузерам это всё отношения не имеет. Ещё ассемблер нужен, когда не хочется иметь компилятор в виде чёрного ящика. Тут зачастую код нужен не самый быстрый, а определённый. Например в криптографии есть атаки побочных каналов. Например когда по измерению времени выполнения можно вычислить секретные данные. Программист может знать, что определённые команды процессора избавят его от этой проблемы. Но компилятор может эти команды не выдать. Или выдать сегодня, а завтра в следующей версии добавят хитрую оптимизацию, которая скомпилирует по-другому. Поэтому тут тоже могут писать на ассемлере. Это тоже к криптографии относится и находится в библиотеках.
Отредактировано 01.10.2019 21:27 vsb . Предыдущая версия . Еще …
Отредактировано 01.10.2019 21:26 vsb . Предыдущая версия .
Отредактировано 01.10.2019 21:23 vsb . Предыдущая версия .
Отредактировано 01.10.2019 21:23 vsb . Предыдущая версия .
Отредактировано 01.10.2019 21:22 vsb . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.