LINUX.ORG.RU

Власти это долго скрывали, но инфа просочилась.

 


0

2

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

ПРУФ

там есть ссылка, а далее, в комментах вот такая инфа:

По словам разработчика одного из самых быстрых MySQL driver'ов для Node.js, этот подход помог ему выиграть эти же 30% при парсинге полей в ответах с сервера.



Последнее исправление: theKingOfJava (всего исправлений: 2)

Node.js, этот подход помог ему выиграть эти же 30% при парсинге полей в ответах с сервера.

$ cat eval.sh
#!/bin/sh

cat $* | gcc - | ./a.out
tailgunner ★★★★★
()

мне вот интересно. а какой в северной корее подход к системе поощрений и наказаний при написании сайтов?

darkenshvein ★★★★★
()
Ответ на: комментарий от tailgunner

Это должно стоять хуком на добавление файла в любом уважающем себя файлохранилище. Также стоит доработать скрипт для запуска из любого более-менее популярного ЯП. И sudo, sudo обязательно нужно добавить.

bytecode ★★
()

Охренеть. Круто.

anonymous
()

Код с eval может быть не только не медленней, но даже значительно быстрей.
значительно быстрей.

по сравнению с чем?

next_time ★★★★★
()
Ответ на: комментарий от theKingOfJava

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

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

там статья от КО:

ЕСЛИ вашу «задачу» можно разбить (условно) на две части: сбор данных и их обработка...

и ЕСЛИ обработка происходит намного чаще, чем сбор, и/или более критична по времени выполнения...

ТО на этапе сбора информации можно на основе этой информации создать «оптимальный» метод для её дальнейшей обработки (зависит от...) и «заэвалить»

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

Ого, спасибо, надо будет запомнить! Пригодится, когда меня попросят привести пример сферического быдлокода в вакууме.

next_time ★★★★★
()

Идею подхватил в одном из докладов на JSConf EU 2012.

greenplastik
()

Среди простого люда бытует мнение, что eval — это медленно

то что это медленно — это лишь *мЕньшая* из проблем. :)

а *главная* проблема — в том что eval() способствует запутанному плохочитаемому коду с большой вероятностью ошибок (в том числе ошибок безопасности).

а ситуация которая в этой теме — лишь один редкий частный случай: компиляция проходит сильно быстрее чем выполнение скомпилированного кода.

и это даёт выигрыш лишь на 30% ?!?!?!

такой выигрышь не покрывает главную проблему (запутанный плохочитаемый код с ошибками).

user_id_68054 ★★★★★
()
Ответ на: комментарий от theKingOfJava

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

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

Я еще раз повторяю, Вы рассуждаете о коде, который даже не понимаете. Там результатом кодогенерации является не «изменение» объекта, а создание функции, которая впоследствии генерирует новый объект.

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

Там результатом кодогенерации является не «изменение» объекта, а создание функции, которая впоследствии генерирует новый объект.

ну очередные криворучки, не смогли написать красивый код, дальше что?

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

То, что все что Вы тут пишите, это Ваши больные фантазии. Либо покажите мне аналогичный код без eval (и function). Без рантайм-кодогенерации, иными словами.

theKingOfJava
() автор топика
Ответ на: комментарий от next_time

в их варианте:

вызов алгоритма, анализирующего структуру данных -> генерация кода -> eval -> вызов алгоритма, выполняющего «тяжёлые» операции

надо:

вызов алгоритма, анализирующего структуру данных -> изменение настроек алгоритма, выполняющего «тяжёлые» операции -> вызов алгоритма, выполняющего «тяжёлые» операции

как видите, обходимся безо всяких эвалов и гораздо быстрее

next_time ★★★★★
()

По ссылке кто-то познает мир. Жалко что к тс это не относится, у него почему то синапсы никак не хотят отрастать.

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

изменение настроек алгоритма, выполняющего «тяжёлые» операции

ведь там же специально для особо медленных в начале статьи разжевывается, что единственной тяжелой операцией там является цикл, от которого иначе, чем кодогенерацией избавится невозможно. Зачем Вы позоритесь, со своими умствованиями? При этом даже в тему не въехали.

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

Против кода который в топике по ссылке, естественно, про него разговор тут идет, это похоже на аутизм, влезть в тему, а потом догонять о чем тема: «ась? что? где?»

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

Аутизм здесь только у тебя, как из моего поста можно вывести, что я против eval? Можно логическую (ну или что там у тебя) цепочку привести?

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