У меня pet-project на node.js. Пытаюсь красиво обыграть возможность использования общего кода на стороне клиента, и на стороне сервера. Node.js ещё сыр местами, но соглашусь, в силу количества JS разработчиков, он скорее всего станет популярным.
> Там тесты хитрые, они все используют сложные циклы/ветвления и хорошо пойдут только на компилируемых статических языках (потому, что цикл в Си — несколько ассемблерных команд, а на высокоуровневых языках — подключется тяжелый интерпретатор байт-кода и CPU расходуется не по назначению), я плохо представляю что веб-фреймворк будет при каждом запросе генерировать последовательности ДНК и вставлять их в бинарные деревья :)
Да, но при этом множество динамических языков(а иногда даже более динамических, так как в JS можно творить жуткую магию) справляется с этими тестами лучше, чем PHP, а веб-приложение иногда может и 3д рендеринг производить через OpenGL, и обрабатывать огромную кипу данных, полученных из самых разнообразных мест — всё зависит от задачи. Да, если нужно собрать обёртку для базы данных, то PHP — отличный вариант, но веб — это нечто большее, чем просто обёртка над базой данных. Например, есть отличная библиотека для стриминга видео на Erlang'е. Писать что-то подобное на PHP — это самоубийство.
Если судить по shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=all&lang2=php
то PHP — самый медленный, при этом JavaScript V8 как минимум вдвое быстрее. Субъективно, C# (но ASP.NET — срань господня, а реализация WCF порой сильно удивляет, если писать, то хотя бы на ASP.NET MVC) и Java (на ней я, к сожалению, писал не очень много) — самые быстрые, как по производительности, так и в разработке, и адекватные для большинства задач.
И с каких пор в Java нет встроенных списков/хешей/массивов? И в чём заключается многословие?
Node.js нагрузку держит хуже, и с многопоточностью там всё печальнее, т.к. web worker'ы нативно ещё не реализовали, а то, что есть — тупо запуск инстансов самой ноды, ошибки нужно аккуратно хэндлить, но памяти жрёт меньше, это факт. Erlang сравнительно просто поддаётся горизонтальному масштабированию. Впрочем, я ещё не написал ничего достаточного серьезного, чтобы говорить так уверено, лишь несколько тестов, но если что — поправляйте.
Erlang очень простой, но разработчику необходимо избавиться от шаблонов в мышлении. В php всё синхронно и последовательно, в erlange — наоборот, куча независимых процессов, не имеющих общих данных, которые параллельно могут выполнять какие-то операции. Это требует определенной перестройки, особенно если в школе/вузе учили только императивному программированию.
Erlang, имхо, больше для RIA или высоконагруженных решений, для очень серьёзного общения client-side с сервером — веб-сокеты, или огромная куча AJAX'а. Мне кажется, что писать на нём «сайты» экономически не выгодно.
JavaScript V8/Erlang к примеру выигрывают у них обоих, при этом в свою очередь проигрывают тому же C#. PHP по тем тестам практически самый медленный получается. Лишь ruby 1.8.7 медленне.
Как я понимаю, там сравнивается
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
с
PHP 5.3.2-1ubuntu4 with Suhosin-Patch (cli) (built: Apr 9 2010 08:23:39)
И по тестам, кстати, ruby сильно быстрее php в некоторых тестах, но в общей массе такой же медленный.
Не знал про join) При этом split — это разбиение строки по регулярке, и находится в модуле регулярных выражений, а join — напротив находится в строках, но это просто alias для implode.
Ну, если отвечать на поставленный вопрос, то да — в большинстве других языков (C#, Ruby, Java, JavaScript, Python) это называется split и join. А функции для работы со строкам собраны в специальных объектах/модулях, таким образом их легко можно найти без чтения документации. Explode и implode я встречал только в PHP.
Что вы имеете в виду, говоря что всё зависит от DOM API? На то он и API, что это лишь описанный и стандартизированный интерфейс к движку браузера, в котором упомянутые очереди уже и реализуются.
Кстати, в FF тоже вычисляются позиции всех элементов, ну или делаются ещё какие-то телодвижения. Дело в том, что если замерять результаты reflow по каждому шагу, то видно, что для поздних шагов этот процесс длится дольше, но если в хроме рост длительности идёт от 0 до 30 мс, причем рост экспоненциальный, то в FF от 0 до 3мс и выглядит линейным, так что может быть действительно это бага в исходниках хрома.
Возможно, а может быть решили, что эта задача того не стоит. Сейчас мне кажется, что добавление нового float элемента в контейнер по идее не должно сильно повлиять на координаты остальных элементов, поэтому нет нужды их пересчитывать, но по стандарту поведение может быть намного сложнее.
Не знаю, как версия 5.5., но IE 6 складывает события reflow/repaint в очереди, и выполняет их по мере необходимости/возможности. К сожалению, у меня сейчас стоит лишь IE8, но в тесте без нагрузки он вдвое быстрее FF 3.6.12.
SpeedTracer хрома подтверждает это предположение. В тормозном варианте, каждый вызов offsetLeft вызывает reflow, причем каждый следующий длится дольше предыдущего. На последних шагах у меня reflow длится уже по 45 милисекунд. Похоже, что в механизме rearrange элементов в хроме нет оптимизации для float-элементов.
Не подскажите, где бы такую арфу приобрести? Гугл, к сожалению, ничего интересного не выдал.
По флейтам — мне нравится индейская флейта пимака, очень нежный звук, и строй пентатоника. Очень медитативно.
Похоже, что проблемы только в линуксовой сборке, т.к. в win 7 страница выглядит идентично в Opera 10, FF3, Chrome 8, Chromium 7, IE9 beta. Разве что в IE9 beta корявое сглаживание шрифтов.
Да, но при этом множество динамических языков(а иногда даже более динамических, так как в JS можно творить жуткую магию) справляется с этими тестами лучше, чем PHP, а веб-приложение иногда может и 3д рендеринг производить через OpenGL, и обрабатывать огромную кипу данных, полученных из самых разнообразных мест — всё зависит от задачи. Да, если нужно собрать обёртку для базы данных, то PHP — отличный вариант, но веб — это нечто большее, чем просто обёртка над базой данных. Например, есть отличная библиотека для стриминга видео на Erlang'е. Писать что-то подобное на PHP — это самоубийство.
shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=all&lang2=php
то PHP — самый медленный, при этом JavaScript V8 как минимум вдвое быстрее. Субъективно, C# (но ASP.NET — срань господня, а реализация WCF порой сильно удивляет, если писать, то хотя бы на ASP.NET MVC) и Java (на ней я, к сожалению, писал не очень много) — самые быстрые, как по производительности, так и в разработке, и адекватные для большинства задач.
И с каких пор в Java нет встроенных списков/хешей/массивов? И в чём заключается многословие?
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
с
PHP 5.3.2-1ubuntu4 with Suhosin-Patch (cli) (built: Apr 9 2010 08:23:39)
И по тестам, кстати, ruby сильно быстрее php в некоторых тестах, но в общей массе такой же медленный.
pastebin.com/DkVmWySU
По флейтам — мне нравится индейская флейта пимака, очень нежный звук, и строй пентатоника. Очень медитативно.