К настоящему времени большинство основных браузеров приступили к интеграции оптимизирующих компиляторов JIT с их интерпретаторами/виртуальными машинами. Это хорошо для всех. Теперь мне было бы трудно узнать, какие именно оптимизации они выполняют, и как их лучше всего использовать. Что такое ссылки на оптимизацию в каждом из основных движков JavaScript?Какие оптимизаторы выполняют современные JavaScript-движки?
фон:
Я работаю над компилятором, который генерирует JavaScript из более высокого уровня & безопаснее языка (бесстыдный штепсель: это называется OPA, и это очень круто) и, учитывая размер приложений, которые я имею я бы хотел, чтобы мой JavaScript-код был таким же быстрым и максимально эффективным с точки зрения памяти. Я могу обрабатывать высокоуровневые оптимизации, но мне нужно знать больше о том, какие исполнения выполняются, чтобы узнать, какой низкоуровневый код принесет наилучшие результаты.
Один из примеров: из моего разума: язык, который я собираю, в скором времени включит поддержку лени. Могут ли двигатели JIT хорошо себя вести с ленивыми определениями функций?
Лично я считаю, что лучший способ, чтобы воспользоваться компилятор/JIT оптимизаций является просто генерировать код, как естественно, читаемыми , и, насколько это возможно, можно поддерживать, и пусть компилятор/jit работают, это волшебство. Любая попытка специально ориентировать оптимизацию компилятора, скорее всего, приведет к уменьшению количества поддерживаемых кодов, и через год или два, когда все компиляторы будут изменены, ваши оптимизации больше не будут действительны. –
Хорошо, читаемый/поддерживаемый код на самом деле не является моей целью. Я компилирую с языка, который сильно отличается от JS, поэтому я не ожидаю, что кто-нибудь сделает много чтения на сгенерированном JS. Что касается JIT-магии и недействительности оптимизаций, ну да, у вас есть точка. – Yoric