Ответ 1
Если производительность больше чем что-либо еще, не используйте язык сценариев. Тем более, что у вас есть полный контроль над стеком технологий. Компилированные языки будут лучше работать для интенсивных операций ЦП.
У меня есть проект веб-приложения, где показатели больше чем что-либо еще, и у меня есть выбор технологий для использования.
Тесты перестрелки на языке, которые на самом деле не связаны для веб-приложений.
Что бы вы рекомендовали в качестве лучших подходящих кандидатов?
Спасибо!
Друг предложил сервер gwan на IRC. Выглядит так, как я искал, но я никогда не слышал об этом раньше. Любой, кто предыдущий опыт в этом пакете? Простота использования, надежность?
Прежде чем покинуть Apache, я хотел бы получить ваши мысли.
Если производительность больше чем что-либо еще, не используйте язык сценариев. Тем более, что у вас есть полный контроль над стеком технологий. Компилированные языки будут лучше работать для интенсивных операций ЦП.
G-WAN - это опрятный веб-сервер: он основан на концепции "C-скриптов":
A C script - это просто исходный код C, который скомпилирован веб-сервером и затем загружен в защищенную память. Он будет вызван веб-сервером, когда будет сделан запрос на сервлет. Сервлет, как он компилируется компилятором C, "так же быстро", как обычно, компилирует программу на C. Однако преимущество C-скриптов, например, CGI или FastCGI, заключается в том, что скомпилированная программа находится в том же пространстве памяти, что и веб-сервер. Это уменьшает накладные расходы на связь (либо путем создания процесса, в случае CGI, для каждого запроса, либо сокета для FastCGI).
Веб-сервер использует метод выбора/опроса: неблокирующий ввод-вывод. Тем не менее, там аккуратная вещь. Каждая программа может быть записана так, как если бы она использовала блокирующий ввод-вывод. Поскольку сам web-сервер компилирует каждый C script, он может преобразовать программу для использования неблокирующих операций ввода-вывода. В связи с этим он может привязываться к сторонним библиотекам (например, к доступу к базе данных) и по-прежнему использовать неблокирующий характер ввода-вывода: нет переключения потоков/процессов.
Инструментами для программирования сценариев С являются, например, кеширование и безопасные буферы. Следующая (еще не выпущенная на момент написания этой публикации) версия также будет содержать хранилище ключей.
Производительность: есть несколько доступных тестов, которые показывают, что они превосходят любой другой веб-сервер, однако я не доверяю им. Попробуйте написать небольшую интенсивную программу с процессором в C и, например, в PHP. Пусть C script работает на G-WAN и PHP скрипт на Apache и сам выполняет тест.
Существует больше, но это выходит за рамки этого вопроса.
Некоторые недостатки G-WAN заключаются в том, что он разработан только одним человеком. Однако есть форум, на котором вы можете задавать вопросы.
Простота использования ограничена вашим навыком на C. Приведенный API, однако, прост. У него все еще есть некоторые несоответствия и (на мой взгляд) уродливые части, но это не проблема. Более серьезная проблема заключается в том, что каждая версия не гарантирует обратную совместимость, и вам, возможно, придется переписать.
Если вы хотите быть в безопасности: используйте независимость платформы C: позвольте вашему коду быть скомпилированным (быстрым) CGI-программам, а также использоваться G-WAN. Might G-WAN терпит неудачу, вы всегда можете вернуться к Apache (Fast) CGI (см. http://www.fastcgi.com/ для API).
Начните с определения того, действительно ли производительность вашего приложения зависит от языка или от какого-либо другого фактора (например, запросы базы данных). Возможность кэширования результатов также может быть очень важным фактором.
Для производительности используемый язык довольно далеко входит в список важных моментов для проверки, а прецедент также влияет на какой язык лучше. Например, если у вас много регулярных выражений, вы должны проверить поддержку регулярных выражений на языке кандидата и т.д.
Для обработки изображений наиболее важным моментом будет, вероятно, базовая библиотека изображений, которую вы используете, как правило, написанная на C. У меня есть случай с ImageMagick, потому что я в настоящее время ее использую. Он доступен как библиотека для большинства языков, а уровень языка сценариев необходим только для вызова функций библиотеки, а используемый язык на этом уровне не будет сильно изменяться (но кэширование предварительно вычисленных изображений результатов может сильно изменить производительность). Этот вариант использования, вероятно, будет аналогичным для вызова криптографической библиотеки.
Если производительность действительно такая проблема, для обработки изображений вы также можете рассмотреть возможность использования библиотеки lib, которая работает с картами ускорителя GPU (libs с поддержкой cuda или openGPU).
Javascript постоянно анализируется и оптимизируется для использования на мобильных устройствах, поэтому на реальных полноразмерных серверах он работает ЧРЕЗВЫЧАЙНО быстро. Проверьте Node.JS, проект для реализации javascript на стороне сервера, чтобы обслуживать веб-страницы: http://nodejs.org/
Хорошо, если вы используете базу данных с большим объемом данных, вы будете тратить там больше времени, чем на запуск php или asp или (добавьте здесь другие варианты) script
Если вы можете создать макет своего приложения (или, по крайней мере, сегмент большей части базы данных или процессора) и попытаться сравнить их с
LuaJit (Lua) - это самый быстрый скриптовый язык с технологией JIT.
если вы хотите получить самое быстрое для веб-приложения на стороне сервера (это не всегда скриптинг), это будет g-wan.. вы можете использовать c, С++, java..
ASP.NET также достаточно быстро для почти чего угодно, но довольно дорогой
php с хип-хопом было бы проще всего изучить, а также достаточно быстро..
это зависит от того, сколько запросов вам нужно.. и как быстро вы изучаете язык ^^ не забывайте кэшировать статические данные (используя memcache или nosql)
Я рекомендую язык программирования Java; это не язык сценариев, но это, вероятно, самый быстрый язык программирования, который можно использовать для программирования веб-приложений. Я также рекомендую использовать фреймворк вроде Spring для лучшего опыта программирования (по сравнению с "сырым" Java Servlet Programming).
Обновление: похоже, как Java 7 с использованием NIO.2 удалось превзойти Gwan, используя C, но почти в два раза по времени, это невероятно, но вы можете провести несколько простых тестов.
Единственный недостаток Java не способен интегрировать общие библиотеки, созданные на C. Я готов бросить вызов кому-то, чтобы доказать, что я ошибаюсь, что Java NIO.2 медленнее, чем C.
Настроенный язык сценариев - это ASP, за которым следует PHP, но если вы хотите, чтобы приложения масштабировались до неограниченной скорости, используйте С++ или Java. Google Search использует С++ Gmail использует Java YouTube = Python Twiiter, используемый для использования Ruby, теперь переключился на Java Facebook = PHP на передней панели и несколько java на бэкэнд
Но я рекомендую PHP на лицевой стороне и С++ на back-end