цена динамики
От: neFormal Россия  
Дата: 12.03.10 09:40
Оценка: -1
Где бы почитать про цену вызовов функций, созданий объектов и прочих базовых вещей в динамических языках?.
Хочется понять насколько можно наглеть с уровнями абстракции и количеством вызовов..
Язык не принципиален, но, если кому то надо, то: Python, Ruby, PHP, PERL..
...coding for chaos...
Re: цена динамики
От: Temoto  
Дата: 12.03.10 10:32
Оценка: +1
F>Где бы почитать про цену вызовов функций, созданий объектов и прочих базовых вещей в динамических языках?.
F>Хочется понять насколько можно наглеть с уровнями абстракции и количеством вызовов..
F>Язык не принципиален, но, если кому то надо, то: Python, Ruby, PHP, PERL..

По сравнению с компилируемыми языками цена ужасно высокая.
Но какое отношение это имеет к наглости? Лишние уровни абстракций не нужны в любом случае, расходы на полезные уровни оправданы в любом случае. И что, вам когда-нибудь серьёзно приходилось решать задачу, где процессор был узким местом?
Re[2]: цена динамики
От: neFormal Россия  
Дата: 12.03.10 10:38
Оценка: -1
Здравствуйте, Temoto, Вы писали:

T>По сравнению с компилируемыми языками цена ужасно высокая.

T>Но какое отношение это имеет к наглости? Лишние уровни абстракций не нужны в любом случае, расходы на полезные уровни оправданы в любом случае.

увы не всегда оправданы, а дополнительные уровни повышают удобство..

T>И что, вам когда-нибудь серьёзно приходилось решать задачу, где процессор был узким местом?


ну, к примеру, highload web-приложение на интерпретируемом языке.. или приложение с 3D-графикой..
тут можно, конечно, поспорить на тему, что это можно/надо делать на компилируемых языках, но такой вариант не интересует..
...coding for chaos...
Re[3]: цена динамики
От: Temoto  
Дата: 12.03.10 10:50
Оценка:
T>>По сравнению с компилируемыми языками цена ужасно высокая.
T>>Но какое отношение это имеет к наглости? Лишние уровни абстракций не нужны в любом случае, расходы на полезные уровни оправданы в любом случае.

F>увы не всегда оправданы, а дополнительные уровни повышают удобство..


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

T>>И что, вам когда-нибудь серьёзно приходилось решать задачу, где процессор был узким местом?


F>ну, к примеру, highload web-приложение на интерпретируемом языке.. или приложение с 3D-графикой..


highload web приложение заткнулось на процессоре? Вы что-то путаете.

Движок 3D графики, само собой, будет реализован ниже, не на Python/Perl/Ruby.
Вот пример: http://www.panda3d.org/ движок на плюсах, управляется программой на питоне. Действительно, авторы сознательно жертвуют абстракциями и "питоничностью" кода в пользу производительности.

F>тут можно, конечно, поспорить на тему, что это можно/надо делать на компилируемых языках, но такой вариант не интересует..


Тут можно поспорить на тему "у вас правда проблемы с производительностью или просто поговорить".
Re[4]: цена динамики
От: neFormal Россия  
Дата: 12.03.10 10:59
Оценка: -1
Здравствуйте, Temoto, Вы писали:

F>>увы не всегда оправданы, а дополнительные уровни повышают удобство..

T>Значит речь идёт не об абстрактной цене, а о цене в каком-то конкретном случае, где расходы не оправданы. В изначальном вопросе об этом не было речи.

в изначальном вопросе было как раз об абстрактной цене.. никакой конкретный случай не был упомянут..

T>highload web приложение заткнулось на процессоре? Вы что-то путаете.


если ты никогда с таким не сталкивался, то это не значит, что так не бывает..

F>>тут можно, конечно, поспорить на тему, что это можно/надо делать на компилируемых языках, но такой вариант не интересует..

T>Тут можно поспорить на тему "у вас правда проблемы с производительностью или просто поговорить".

лучше на тему "У вас правда есть ответ на стартовый вопрос?"
...coding for chaos...
Re[5]: цена динамики
От: Temoto  
Дата: 12.03.10 11:04
Оценка:
T>>highload web приложение заткнулось на процессоре? Вы что-то путаете.

F>если ты никогда с таким не сталкивался, то это не значит, что так не бывает..


А вы не могли бы рассказать где была затычка, если сталкивались? Шаблон долго рисовался или ещё что?

F>>>тут можно, конечно, поспорить на тему, что это можно/надо делать на компилируемых языках, но такой вариант не интересует..

T>>Тут можно поспорить на тему "у вас правда проблемы с производительностью или просто поговорить".

F>лучше на тему "У вас правда есть ответ на стартовый вопрос?"


Я не пытаюсь грубить. "Просто поговорить" это отличный повод, он ничем не хуже, это не должно обижать. Но если обидел, то прошу прощения.

На стартовый вопрос я ответил сразу. Настолько же абстрактно, насколько он задан. Цена велика.
Re: цена динамики
От: Mr.Cat  
Дата: 12.03.10 11:12
Оценка: 4 (1)
Здравствуйте, neFormal, Вы писали:
F>Где бы почитать про цену вызовов функций, созданий объектов и прочих базовых вещей в динамических языках?.
Какое-то время назад была тут тема про lua
Автор: z00n
Дата: 05.09.08
...
Re[6]: цена динамики
От: neFormal Россия  
Дата: 12.03.10 11:29
Оценка:
Здравствуйте, Temoto, Вы писали:

T>>>highload web приложение заткнулось на процессоре? Вы что-то путаете.

F>>если ты никогда с таким не сталкивался, то это не значит, что так не бывает..
T>А вы не могли бы рассказать где была затычка, если сталкивались? Шаблон долго рисовался или ещё что?

веб-приложение может быть не только сайтом..
например, данные могут конвертиться в иной формат продолжительное время, а на время отклика есть требования..

T>На стартовый вопрос я ответил сразу. Настолько же абстрактно, насколько он задан. Цена велика.


вот хочется каких нибудь примеров, сравнений, статистики..
...coding for chaos...
Re[7]: цена динамики
От: anonymous Россия http://denis.ibaev.name/
Дата: 12.03.10 12:39
Оценка: +1
Здравствуйте, neFormal, Вы писали:

T>>>>highload web приложение заткнулось на процессоре? Вы что-то путаете.

F>>>если ты никогда с таким не сталкивался, то это не значит, что так не бывает..
T>>А вы не могли бы рассказать где была затычка, если сталкивались? Шаблон долго рисовался или ещё что?
F>веб-приложение может быть не только сайтом..
F>например, данные могут конвертиться в иной формат продолжительное время, а на время отклика есть требования..

Ресурсоёмкие компоненты лучше изначально писать на компилируемых языках. В Perl, к примеру, все такие модули написаны на Си, а на собственно Perl лишь обёртка к ним.
Re[7]: цена динамики
От: Temoto  
Дата: 13.03.10 02:35
Оценка:
T>>>>highload web приложение заткнулось на процессоре? Вы что-то путаете.
F>>>если ты никогда с таким не сталкивался, то это не значит, что так не бывает..
T>>А вы не могли бы рассказать где была затычка, если сталкивались? Шаблон долго рисовался или ещё что?

F>веб-приложение может быть не только сайтом..

F>например, данные могут конвертиться в иной формат продолжительное время, а на время отклика есть требования..

Ну тут явно речь не про абстракции, правда?
Re[8]: цена динамики
От: neFormal Россия  
Дата: 13.03.10 04:25
Оценка:
Здравствуйте, Temoto, Вы писали:

F>>веб-приложение может быть не только сайтом..

F>>например, данные могут конвертиться в иной формат продолжительное время, а на время отклика есть требования..
T>Ну тут явно речь не про абстракции, правда?

эм.. ну как сказать
мне просто любопытно, если увлечься вызовами функций, созданием объектов и т.п., можно ли потерять заметно в производительности?.
...coding for chaos...
Re[9]: цена динамики
От: Temoto  
Дата: 13.03.10 05:41
Оценка:
F>>>веб-приложение может быть не только сайтом..
F>>>например, данные могут конвертиться в иной формат продолжительное время, а на время отклика есть требования..
T>>Ну тут явно речь не про абстракции, правда?

F>эм.. ну как сказать

F>мне просто любопытно, если увлечься вызовами функций, созданием объектов и т.п., можно ли потерять заметно в производительности?.

Опять вопрос требует более конкретного ответа, чем описание условий. Наверное, у вас всё-таки нет проблемы с производительностью, которую надо решить. То есть вы задумываетесь о преждевременной оптимизации. Или просто поговорить.

Крайности очевидны:
* вы можете навешать 100 или 500 вызовов функций или создания объектов новых классов + вызовов их методов над одним print и разницу заметно не будет

>>> timeit.timeit('''f(lambda: 100*200)''', '''def f(g):
    return g()''', number=10)
0.0000188

>>> timeit.timeit('''f(lambda: 100*200)''', '''def f(g):
    for _ in xrange(1000):
        g()
    return g()''', number=10)
0.00412


То есть разница, конечно велика, но худший вариант — 4 милисекунды. Всем насрать на 4 милисекунды, а вы можете построить 1000 слоёв абстракций. Достаточно?

* но если вы добавите одну функцию в цикл, который выполняется миллионы раз в секунду, разница будет очень заметна.

>>> timeit.timeit('''f(lambda: 100*200)''', '''def f(g):
    for _ in xrange(5*1000*1000):
        g()''', number=10)
7.372

>>> timeit.timeit('''f(lambda: (lambda:100*200)() )''', '''def f(g):
    for _ in xrange(5*1000*1000):
        g()''', number=10)
17.958


Синтетические тесты, как известно, всегда обман. Чтобы не говорить о крайностях нужно иметь конкретную задачу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.