2010-08-11 2 views
13

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

Тесты перестрелки на языке, которые на самом деле не связаны с веб-приложениями.

Что бы вы рекомендовали в качестве лучших подходящих кандидатов?

Спасибо!


Друг предложил сервер gwan на IRC. Выглядит так, как я искал , но я никогда не слышал об этом раньше. Кто-нибудь с предыдущий опыт работы с этим пакетом? Простота использования, надежность?

Прежде чем покинуть Apache, я хотел бы высказать свои мысли.

+1

Вы говорите конкретно о программировании на стороне сервера? –

+7

Используйте свой любимый язык сценариев на сервере в обычных областях и делайте критически важные вещи в C и назовите его из своего сценария. – Amarghosh

+2

не только это субъективно, но и несколько дубликатов на SO, пожалуйста, используйте поиск. О, и уточните свои требования более четко, если вы хотите получить четкие ответы. – SpliFF

ответ

3

Начните с определения того, действительно ли производительность вашего приложения зависит от языка или от какого-либо другого фактора (например, запросы базы данных). Возможность кэширования результатов также может быть очень важным фактором.

Для исполнения язык используется довольно далеко в списке важных моментов для проверки, и прецедент также влияет на какой язык лучше. Например, если у вас есть много регулярных выражений, чтобы проверить, что вы должны проверять поддержку регулярных выражений на языке кандидата и т. Д.

Для обработки изображений наиболее важным моментом будет, вероятно, базовая библиотека изображений, которую вы используете, как правило, написана на C. Я имею в виду ImageMagick в виду, потому что я в настоящее время использую его. Он доступен в качестве библиотеки для большинства языков, а уровень языка сценариев необходим только для вызова функций библиотеки, а используемый язык на этом уровне не сильно изменится (но кэширование предварительно вычисленных изображений результатов может значительно повысить производительность). Этот вариант использования, вероятно, будет аналогичным для вызова криптографической библиотеки.

Если производительность действительно такая проблема, для обработки изображений вы также можете рассмотреть возможность использования библиотеки lib, которая работает с картами ускорителей GPU (библиотеки с поддержкой cuda или openGPU).

+0

Спасибо, но ImageMagick (очень многофункциональный пакет) слишком большой и не такой быстрый. – Michi

+2

@Michi: Я не предлагаю использовать его, просто для того, чтобы большинство libs имели тонкие слои для доступа к ним со скриптовых языков, найдите нужную вам библиотеку, проверьте, доступен ли этот слой. Надеюсь, вы не ожидаете получить лучшую производительность от кода обработки изображений, написанного с использованием какого-то языка сценариев? – kriss

+0

По моему опыту, это действительно зависит от того, кто написал код: я вижу ужасный код C везде - позволяя другим языкам делать смешные заявления. – Gil

2

Ну, если вы используете базу данных с большим объемом данных, которые вы будете проводить там больше времени, чем при запуске PHP или ASP или (вставить другие ароматы здесь) скрипт
Если вы можете, вы должны построить макет вашего приложения (или, по крайней мере, сегмент большей части базы данных или процессора) и попытайтесь сравнить их

+0

Благодарим вас за ответ. Фактически, база данных не задействована, только обработка изображений и другие важные для ЦП задачи, такие как шифрование. – Michi

+0

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

Для массивной обработки параллельного изображения изображений у меня обычно есть небольшой скрипт обработки, который выполняет все работа и диспетчер процессов, который устанавливает некоторые ограничения на использование процессора/плунжера и процессы spawn/pauses/stops, чтобы всегда работать с нужной нагрузкой с 5% -ной ошибкой.

Для файлов нарезки и md5-ing я использую аналогичный скрипт, и оба они могут работать одновременно и оставляют достаточно энергии для работы apache так же быстро, как и в обычном режиме. –

+0

Даже задания БД могут быть ускорены сервером приложений, действующим в качестве кеша. – Gil

7

Если производительность больше, чем что-либо еще, не используйте язык сценариев. Тем более, что у вас есть полный контроль над стеком технологий. Компилированные языки будут лучше работать для интенсивных операций ЦП.

+4

или написать библиотеку расширений C (или другого скомпилированного языка) на некоторый язык сценариев, чтобы получить лучшее из двух миров. – kriss

+0

Сценарии являются обязательным требованием, поскольку исходный код веб-приложения должен быть постоянно доступен для целей безопасности (позволяя супервизорам проверять, что никаких вмешательств не произошло изнутри или снаружи). – Michi

+5

Мичи, тогда скорость не является главным приоритетом на самом деле? Вы должны иметь возможность более или менее проверять исполняемые файлы с помощью MD5-хэша или чего-то подобного, что позволит вашим супервизорам проверять, не произошло ли вмешательство. – Rob

-1

Я рекомендую язык программирования Java; это не язык сценариев, но это, вероятно, самый быстрый язык программирования, который можно использовать для программирования веб-приложений. Я также рекомендую использовать фреймворк вроде Spring для лучшего опыта программирования (по сравнению с «сырым» Java Servlet Programming).

+0

Хмм ... мои ранние (сырые) тесты показывают, что Java быстрее, чем C#, но медленнее, чем PHP, что я пытаюсь сделать. – Michi

+1

Java быстрее в некоторых проблемных областях, некоторые функции, некоторые конфигурации, но медленнее в других. Зависит от вкуса java и аппаратных совпадений. Во всех смыслах и целях java и asp.net находятся на одном уровне скорости, PHP определенно находится на более медленном уровне (хотя эксперименты с компиляцией языков сценариев дают многообещающие результаты). – marr75

+0

Как правило, Java достаточно быстро подходит для большинства задач. Это не медленнее, чем PHP для любой задачи, о которой я знаю, однако, возможно, что расширения PHP (написанные на C) могут быть быстрее для некоторых задач. – StaxMan

3

Javascript постоянно изучается и оптимизирован для использования на мобильных устройствах, поэтому на реальных полноразмерных серверах он работает ЧРЕЗВЫЧАЙНО быстро. Проверьте узел.JS, проект для реализации Серверный JavaScript для обслуживания веб-страниц: http://nodejs.org/

+1

Node.js работает только в PR-статьях: http://gwan.ch/blog/20121027.html – Gil

6

G-WAN является аккуратным веб-сервер: он основан на концепции «C сценарии»:

AC сценарий просто C исходный код, который скомпилированный веб-сервером, а затем загруженный в защищенную память. Он будет вызван веб-сервером, когда будет сделан запрос на сервлет. Сервлет, как он компилируется компилятором C, «так же быстро», как обычно, компилирует программу на C. Однако преимущество C-скриптов, например, CGI или FastCGI, заключается в том, что скомпилированная программа находится в том же пространстве памяти, что и веб-сервер. Это уменьшает накладные расходы на связь (либо путем создания процесса, в случае CGI, для каждого запроса, либо сокета для FastCGI).

Веб-сервер использует технику выбора/опроса: неблокирующий ввод-вывод. Тем не менее, в этом есть аккуратная вещь. Каждая программа может быть записана так, как если бы она использовала блокирующий ввод-вывод. Поскольку сам web-сервер компилирует каждый сценарий C, он может преобразовать программу для использования неблокирующих операций ввода-вывода. В связи с этим он может привязываться к сторонним библиотекам (например, к доступу к базе данных) и по-прежнему использовать неблокирующий характер ввода-вывода: нет переключения потоков/процессов.

Инструменты, предназначенные для программирования сценариев C, являются, например, кешированием и безопасными буферами. Следующая (еще не выпущенная на момент написания этой публикации) версия также будет содержать хранилище ключей.

Производительность: есть несколько доступных тестов, которые показывают, что он превосходит любой другой веб-сервер, однако я не доверяю им. Попробуйте написать небольшую интенсивную программу с процессором в C и, например, в PHP. Пусть сценарий C запускается в G-WAN и PHP-скрипте на Apache, а сам тест.

Существует больше, но это выходит за рамки этого вопроса.

Некоторые недостатки G-WAN в том, что он разработан только одним человеком. Однако есть форум, на котором вы можете задавать вопросы.

Простота использования ограничена вашим навыком в C. Приведенный API, однако, прост. У него все еще есть некоторые несоответствия и (на мой взгляд) уродливые части, но это не проблема. Более серьезная проблема заключается в том, что каждая версия не гарантирует обратную совместимость, и вам, возможно, придется переписать.

Если вы хотите быть в безопасности: используйте независимость платформы C: позвольте вашему коду быть скомпилированным (быстрым) CGI-программам, а также использоваться G-WAN. Могу ли G-WAN сбой, вы всегда можете отказаться от CGI Apache (Fast) (см. http://www.fastcgi.com/ для API).

+1

Есть ** независимые ** контрольные показатели, показывающие одинаковые результаты, поэтому ваше доверие имеет мало общего с этими фактами: http: //www.rootusers.com/web-server-performance-benchmark/ здесь Apache, Nginx, Lighttpd, Varnish, Litespeed, Cherokee и G-WAN тестируются на процессорных ядрах 1/2/4/8. – Gil

-1

Обновление: похоже, что Java 7, использующий NIO.2, сумел превзойти Gwan, используя C, но почти в два раза по времени, это невероятно, но вы можете провести несколько простых тестов.

Единственным недостатком Java не в состоянии интегрировать общие библиотеки, построенные на C. Я готов, чтобы бросить вызов кому-то, чтобы доказать, что я неправильно, что Java NIO.2 медленнее, чем C.

+1

уверен, что он способен вызовите библиотеки c. когда-либо слышал о [JNA] (https://github.com/twall/jna) (или даже старше [JNI] (http://docs.oracle.com/javase/6/docs/technotes/guides/jni/ index.html)) – mata

+0

** Java NIO намного медленнее, чем G-WAN + Java **: http://gwan.ch/blog/20120809.html#hello.java – Gil

1

LuaJIT (Lua) является самый быстрый язык сценариев с JIT технологии ..

если вы хотите быстро на стороне сервера веб-приложений (которые не всегда сценариев), что бы г-тусклый .. вы можете использовать C, C++, Java ..

ASP.NET также достаточно быстро подходит практически для всех, но довольно дорогой

php с хип-хопом было бы проще всего изучить, а также достаточно быстро ..

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

-3

голодном скриптовый язык следует ASP по PHP, но если вы хотите, чтобы приложения масштабировались до неограниченной скорости, используйте C++ или Java. Google Search использует C++ Gmail использует Java YouTube = Python Twiiter имел обыкновение использовать Ruby, теперь они перешли на Java Facebook = PHP в передней части и некоторые Java на внутреннем интерфейсе

Но я рекомендую PHP на переднем конце и C++ на внутреннем сервере

+2

Не могли бы вы предоставить некоторые ориентиры, которые поддерживают ваши претензии ? Прямо сейчас нет возможности проверить ваши замечания. –

+1

C#/Mono медленнее, чем PHP ... если не обслуживается G-WAN: см. Http://gwan.ch/blog/20120923.html#loan.cs и http://gwan.ch/blog/20121021.html # hello.php – Gil