
Дмитрий
19.05.2017
14:17:57
Я решил выбивать клин клином и поэтому изучал его оптимизацию по скриптам, которые нагенерил PEG
Генератор парсеров то бишь
По нему прямо можно следить, до какого конкретно уровня дошли разработчики — по коду прямо видно оптимизированные ветки

Vladimir
19.05.2017
14:19:58
Ну в функциях он не оптимизирует вообще ничего

Google

Дмитрий
19.05.2017
14:20:04
Не скажу, что я сильно впечатлён, но покопаться интересно было
Что значит "ничего"?

Vladimir
19.05.2017
14:20:21
Абсолютно ничего

Дмитрий
19.05.2017
14:20:29
ну перечитай FAQ

Vladimir
19.05.2017
14:20:46
Причем здесь FAQ? Я констатируют факт

Aleksandr
19.05.2017
14:20:46

Vladimir
19.05.2017
14:20:57

Дмитрий
19.05.2017
14:22:18
Он работает с кодом как с чёрным ящиком
Он реально не знает, что у тебя там внутри, потому что функция должна работать с переменными, которые в неё приходят
то бишь поддаются анализу

Vladimir
19.05.2017
14:23:06
Он не знает что там внутри, кроме всего что внутри

Дмитрий
19.05.2017
14:23:21
Ты бредишь
Я уже выше описал кейс — пег — это громадная куча кода, реального, а не абстрактного 2+2

Google

Vladimir
19.05.2017
14:24:11
Я просто демонстрирую на примере, что содержимое функций не трогается вообще

Дмитрий
19.05.2017
14:24:19
Отличный пример
Жизненный

Vladimir
19.05.2017
14:24:38
Оно не трогается на любом примере

Дмитрий
19.05.2017
14:25:19
У тебя удобная позиция, если не обращать внимания на слова оппонента, то можно сделать вид, что он ничего не говорил
но я напомню

Vladimir
19.05.2017
14:25:35
Моя позиция - привести пример, а не пиздеть попусту

Дмитрий
19.05.2017
14:25:38
По нему прямо можно следить, до какого конкретно уровня дошли разработчики — по коду прямо видно оптимизированные ветки

Aleksandr
19.05.2017
14:26:03
ну в доках вот трогает

Vladimir
19.05.2017
14:26:27
Он их исполняет, если они вызываются - это да
А теперь тоже самое, но без IIFE

Aleksandr
19.05.2017
14:27:07

Vladimir
19.05.2017
14:28:25
Ну это зависит от примера
В моем примере я бы ожидал увидеть return 3
С фиббоначи пожалуй вряд ли можно ожидать чего то

Aleksandr
19.05.2017
14:32:03

Vladimir
19.05.2017
14:32:32
Зависит от контекста
Если она в глобальном коде, то ее нельзя удалять

Aleksandr
19.05.2017
14:33:31

Google

Vladimir
19.05.2017
14:33:46
Ее может вызывать кто то снаружи
Ну или так

Дмитрий
19.05.2017
14:34:15
Сорян, 600 строк в чат я постить не буду
Это полноценный парсер математической грамматики

Aleksandr
19.05.2017
14:35:26
Ее может вызывать кто то снаружи
так в примере контекст пустой, только одна глобальная функция которая никем не вызывается. уж точно в том примере ее логичнее удалить чем оптимизировать и оставлять

Сергей
19.05.2017
14:35:46
ух ты
PEG.js
Я думал кроме меня никто его не юзает

Vladimir
19.05.2017
14:36:06

Сергей
19.05.2017
14:36:07
он в приоритеты операторов умеет?

Vladimir
19.05.2017
14:36:34

Дмитрий
19.05.2017
14:36:44

Дмитрий
19.05.2017
14:36:55

Aleksandr
19.05.2017
14:37:06

Дмитрий
19.05.2017
14:37:06
Она сохраняется в объект
Что там про пиздеть попусту было?

Vladimir
19.05.2017
14:37:57
а теперь PEG с const на var замени

Сергей
19.05.2017
14:39:44

Дмитрий
19.05.2017
14:39:54
Что то у тебя много условий посыпалось, а try catch туда не вставить, с утечкой arguments, чтобы наверняка?

Google

Дмитрий
19.05.2017
14:40:26
https://pegjs.org/online

Vladimir
19.05.2017
14:40:38
Я говорю что он не оптимизрует функции. Ты приводишь пример, в котором функций не остается в конце

vitaliy
19.05.2017
14:40:40
Что за prepack? Он вместо вызова функции подставляет сразу результат?)

Сергей
19.05.2017
14:41:02

Дмитрий
19.05.2017
14:41:24
Своё он не оптимизирует, потмоу что синтаксис не поддерживается
В отличии от суммирующих слагаемых выше, я разбирался с тем, где его границы возможностей) rest, spread и прочие операции с массивами объектов — не умеет

Vladimir
19.05.2017
14:44:41
Не это его фундаментальная проблема сейчас

Admin
ERROR: S client not available

Vladimir
19.05.2017
14:44:54
Все равно предполагается что код можно скомпилировать бабелем
Перед препаком

Дмитрий
19.05.2017
14:45:11
Там принципиально, говорю же
Это инвариант, он ну прям вообще вообще ничего с этим не сделает
В какой синтаксис не компилируй

Vladimir
19.05.2017
14:45:57
С чем именно?

Дмитрий
19.05.2017
14:46:11
У тебя в роду были золотые рыбки?

Vladimir
19.05.2017
14:47:10
С dead code elimination так же слабовато
Абстрактная интепретация отсутствует практически полностью

Дмитрий
19.05.2017
14:49:15
Код который прошёл через бабель и кложур компилятор лучше абстрактно не интерпретировать, а то так и поехать можно

Google

Ilia
19.05.2017
14:50:03
Ребят. Есть перспектива того что нода станет многопоточной?

Дмитрий
19.05.2017
14:50:14
Я же говорю, он работает с кодом как с чёрным ящиком. Он не может влезить внутрь функции и узнать, что у неё там числа, по этой же причине он не может взять сущность "массив" и превратить её в ряд сущностей
Он может только брать самый пессимистичный вариант

Vladimir
19.05.2017
14:50:35

Дмитрий
19.05.2017
14:50:53
И хорошо

Vladimir
19.05.2017
14:51:14
Да не очень
Весь основной код в функциях

Aleksandr
19.05.2017
14:51:27

Сергей
19.05.2017
14:52:50

Дмитрий
19.05.2017
14:53:27
Весь основной код в функциях
Если брать не абстрактные функции которые хоппа изниоткуда взяли два каких-то числа и просят тебя угадать ответ, а реальный код, который работает с данными на входе, выдавая данные и сайдэффекты на выходе — то его пессимистичность имеет смысл

Aleksandr
19.05.2017
14:53:33

Ilia
19.05.2017
14:53:35

Vladimir
19.05.2017
14:54:22

Aleksandr
19.05.2017
14:54:45

Дмитрий
19.05.2017
14:54:51
И тем что он не выдуманный из головы
Чтобы оптимизировать код под данные, нужно их хотя бы получить, а ты числа вообще из замыкания не выпускаешь. Это резонный, но далеко не единственный кейс

Сергей
19.05.2017
14:56:24
интересный у вас тред

Aleksandr
19.05.2017
14:56:30

Сергей
19.05.2017
14:56:35
не понятно о чем общаетесь, но разговор интересный

Vladimir
19.05.2017
14:56:41
Да хватит про мой пример уже. Препак не оптимизирует никакой код в функциях вообще
Как только он начнет - мой нежизненных пример будет оптимизрован гораздо раньше чем любой жизненный