Ну шикарный вброс сделали :)
И даже убедили нас, промышленная VM с JIT и профайлером - круто.
А что с обратной стороной медали - на каких языках для это машины можно писать? Много людей разрабатывает масштабные проекты на Jython или Jruby (что бы не просто скриптинг прикрутить) ?

<-- тут требуется сокрушительный ответ со стороны jvm фагов -->

Так что JVM - это скорее всего еще и язык Java.
Когда я ушел с Java (1.5 тогда была) у нее было две проблемы (на мой взгляд):

1) Разработка приносила боль. Если ты не идус конечно :)

2) Java - это быыыстро! Поэтому никто не за толщиной и сложностью софта никто особо не следил. В результате сферический Java-софт-в-вакуме - это неподъемный монстр, котору нужно тонным памяти и ядер. Да вот для примера наша Jira в конторе на 3000 чел, ну пускай в ней 100000 тасков. Пускай я каждый сотрудник делает 100 запросов в день ~ итого 10 QPS. Это блин такой маааленький сайтик.
    Так почему страницы генерятся по 5-10с?
    Вы думаете JIT и профилировщик спасут нас?

On 04/20/2014 03:09 PM, Daniel Podolsky wrote:
Я отвечу всем сразу, хорошо?

1) Threads

1.1) Треды сегодня - способ утилизировать ресурсы многоядерного
процессора. Хорошие треды позволяют утилизировать и ресурсы
многопроцессорной системы. Программеры, которые хорошо умеют это
делать без тредов, на рынке широко не представлены.

1.2) Треды должны обеспечивать легкую межпоточную коммуникацию. В этом
смысле в перле тредов нет. prefork и прочие многопроцессные модели
требуют привлечение для межпоточной коммуникации SYSV IPC, который
убог, с одной стороны, и избыточно сложен с другой.

2) JIT

2.1) При прочих равных JIT реально повышает производительность.
Соответственно, современная VM должна его иметь. С чем тут спорить -
не понимаю.

2.2) Если JIT нет - работу по выявлению узких мест и их переписыванию
на уровень пониже приходится делать человеку. Именно так JIT связан с
удешевлением разработки.

2.3) JIT способен производить оптимизацию, которую человеку никогда не
осилить. Например, он может определить, что в 99% случаев некий цикл
завершается за три итерации, и развернуть его в плоский код.

3) Sampling Profiler

3.1) Семплирующий профайлер позволяет изучать прямо сейчас тормозящий
боевой код. Другого способа делать это задешево я не знаю. А вы?

3.1.1) Пока вы разрабатываете - семплирующий профайлер вам не нужен. А
вот когда у вас появляется потребность в дебаге кода, который тормозит
только на боевом трафике, и то не всегда - вот тогда вы начинаете
искать средства. Проблема программеров в том, что им редко приходится
иметь дело с эксплуатацией.

3.2) VM  перла не предоставляет доступа к перловому стеку вызовов.
Поэтому системного уровня профайлер оказывается бесполезен.

4) Язык  perl мне нравится. Больше других, наверное. Но!

4.1) С точки зрения эксплуатации perl - не язык, а его VM. Со всеми вытекающими.

4.2) perl - это CPAN. А CPAN завязан на особенности реализации так
плотно, что переписать язык на современную VM нереально. Вон, есть V8.
Был бы perl под V8 - я бы только им и пользовался для всего. Но - нет,
и не будет.

--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить