@nodejs_ru

Страница 772 из 2748
Дмитрий
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
В моем примере я бы ожидал увидеть return 3
а если функция не вызвана то логичнее ее не увидеть вообще чем увидеть заоптимизированный мертвый код. нет?

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
Сорян, 600 строк в чат я постить не буду
Абсолютно нерелевантный пример, так как функция исключительно локальная

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

Дмитрий
19.05.2017
14:36:44
он в приоритеты операторов умеет?
Зависит от того как ты напишешь грамматику

Aleksandr
19.05.2017
14:37:06
Ее может вызвать окружение, как в примере с onload
так вы расскажите про это препаку чтобы он тоже знал когда оптимизирует. он же не может гадать что там может быть. явно ему передан пустой контекст он на него и опирается

Дмитрий
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
ну у тебя же написана какая-то
Это дефолтный пример с репла peg

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
Это дефолтный пример с репла peg
а я думал что-то своё сложное интересное

Дмитрий
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
Я же говорю, он работает с кодом как с чёрным ящиком. Он не может влезить внутрь функции и узнать, что у неё там числа, по этой же причине он не может взять сущность "массив" и превратить её в ряд сущностей

Он может только брать самый пессимистичный вариант

Дмитрий
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
делай кластер сам, для этого есть апи. зачем нужна многопоточность в ноде?
Про эти костыли я знаю. Я просто на Go пишу, но некторые штуки на ноде удобней. Я чисто из спортивного интереса - может чего изменилось.

Aleksandr
19.05.2017
14:54:45
Дмитрий
19.05.2017
14:54:51
И тем что он не выдуманный из головы

Чтобы оптимизировать код под данные, нужно их хотя бы получить, а ты числа вообще из замыкания не выпускаешь. Это резонный, но далеко не единственный кейс

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

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

Vladimir
19.05.2017
14:56:41
Да хватит про мой пример уже. Препак не оптимизирует никакой код в функциях вообще

Как только он начнет - мой нежизненных пример будет оптимизрован гораздо раньше чем любой жизненный

Страница 772 из 2748