LINUX.ORG.RU

nodejs скорость выполнения


0

2

Ubuntu v14.04.1. nodejs v0.10.32. Шаблонизатор jade. Bootstrap 3.2.0. jQuery.
Пускаю на виртуальной машине RAM 1Gb/1 ядро CPU 1800GHz (Intel Celeron 1037U).

Простая страница с navbars-fixed-top и немного текста открывается по несколько секунд.

Проблемы с jade:
- при копировании все html приходится вручную переформатировать.
- постоянно путаюсь в пробелах/табуляциях. Как люди используют Python?
- из-за jade такая скромная скорость выполнения?

Что посоветуете вместо jade с синтаксисом html?
Привык к tempate-toolkit (http://template-toolkit.org).
Стоит ли использовать EJS?

Самый главный вопрос perl мертв?




★★

perl мертв?

Тебя переживёт

anonymous
()

perl мертв

давно уже

постоянно путаюсь в пробелах/табуляциях. Как люди используют Python?

нормально используют, 1 таб=2 или 4 пробела и нет проблем

Стоит ли использовать EJS?

да, мой выбор

из-за jade такая скромная скорость выполнения?

да вроде он не такой тормозной, но проблема твоя мне не понятна, несколько секунд 1 страницу открывать при пустоте - это нереально, очевидно проблема лежит в другой плоскости

umren ★★★★★
()

постоянно путаюсь в пробелах/табуляциях. Как люди используют Python?

Если редактор заменяет табы на пробелы — заменить редактор. Если это делают руки — заменить руки.

kvap
()

1. Проблема не из-за jade. Ноду не знаю, но возможно там есть какой-нито дебаг-ключик, который перекомпилирует весь сервер при каждом запросе.

2. Legacy язык

shimshimshim
()

Geany 1.23.1.
Меню «Документ/»:
* «Ctrl+A / Заменить табуляции пробелами»;
* «Тип отступа - пробел»;
* «Ширина отступа - 2».

Когда текст уйдет на второй экран, то становится неудобно отслеживать блоки.

В EJS существует возможность, как в TT:
[% INSERT name %] - вставка текстового файла без обработки;
[% INCLUDE name %] - вставка другого шаблона.

WinLin2 ★★
() автор топика

- при копировании все html приходится вручную переформатировать.

Погугли html2jade.

- постоянно путаюсь в пробелах/табуляциях. Как люди используют Python?

Просто отключи использование табов.

Legioner ★★★★★
()
Ответ на: комментарий от umren

это вброс?

Нет.

погугли истории успеха перехода с руби на ноду

Не гуглил, но на лоре видал.

Хотелось бы более развёрнутый ответ того, почему уходят с руби на js.

Amet13 ★★★★★
()
Ответ на: комментарий от Amet13

Хотелось бы более развёрнутый ответ того, почему уходят с руби на js

1) v8 очень быстр, mri, jruby и прочее сосут.
2) единый стек.
3) socket.io и прочие современные штуки.
4) хз.

umren ★★★★★
()
Ответ на: комментарий от umren

Я слышал что-то про один процесс, асинхронность. По сравнению с преимуществами эти недостатки незначительны?

Amet13 ★★★★★
()
Ответ на: комментарий от Amet13

Это не недостатки, а особенности. 1 процесс = 1 ядро, асинхронность вначале смутит, но привыкнешь.

umren ★★★★★
()
Ответ на: комментарий от umren

Что дает асинхронность nodejs по сравнению
с несколькими экземплярами Apache/mod_perl?

Если нужно делать запросы к базе, то асинхронность только мешает,
потому что нужно ждать информации от предыдущего запроса.

Клиентское приложение через AJAX может запрашивать данные асинхронно,
для этого нужно дробить данные.

Все-таки убогий этот Javascript применительно к серверу.

WinLin2 ★★
() автор топика
Ответ на: комментарий от WinLin2

Что дает асинхронность nodejs по сравнению с несколькими экземплярами Apache/mod_perl?

Асинхронное выполнение кода. Отсутствие блокировок i/o. Высокую скорость.

Если нужно делать запросы к базе, то асинхронность только мешает, потому что нужно ждать информации от предыдущего запроса.

Что за бред, существуют асинхронные движки к субд, например, асинхронный sqlite в nodejs работает быстро, как и perl/python с mysql через юникс-сокеты. Абсолютно такая же скорость выборки.

Все-таки убогий этот Javascript применительно к серверу.

Скоро этот javascript будет повсеместно. Вон, уже для андроида на javascript пишут код под порт nodejs-android. Так что и на сервере всё нормуль, не даром Amazon перевела свои критические web-services на nodejs.

menangen ★★★★★
()

Простая страница с navbars-fixed-top и немного текста открывается по несколько секунд.

Проблемы с jade: - при копировании все html приходится вручную переформатировать. - постоянно путаюсь в пробелах/табуляциях. Как люди используют Python? - из-за jade такая скромная скорость выполнения?

На аналогичном серваке под убунтой nodejs с jade выдаёт минимум 2100 запросов в секунду БЕЗ кэширования. С кешированием даже не знаю сколько, и так скорость зверская, мне достаточно и 100 req/sec. Поставь себе нормальную IDE: Webstorm, Eclipse и пиши на них. Или Sublime как минимум... Питон использую с Pycharm, даже не понимаю о каких проблемах идёт речь? У тебя каретка не ставится автоматом в нужный отступ? У меня в пичарме - ставится, всё быстро и просто. Такая скорость у тебя не известно из-за чего. Ты в чём виртуальную машину запускаешь? Поставь паравиртуальный сетевой стек, проверь на голом nginx производительность, в хроме или лисе проверь тайминги ответа сервера нжинкс и ноды, сравни, подумай. Nodejs очень быстрая, jade тоже! Python медленнее раза в -1.5, perl/ruby минимум раза в 2.

menangen ★★★★★
()
Ответ на: комментарий от menangen

Асинхронное выполнение кода. Отсутствие блокировок i/o. Высокую скорость.

Можно запустить 100 процессов Apache.
Загружаем страницу и заполняем после загрузки через AJAX.

Что за бред, существуют асинхронные движки к субд, например, асинхронный sqlite в nodejs работает быстро, как и perl/python с mysql через юникс-сокеты. Абсолютно такая же скорость выборки.

Последовательность запросов следующий запрос строится на основании данных предыдущего,
нужно обязательно дождаться завершения запроса.
Возможно ветвление (IF) в зависимости от полученных значений.
Для node это будет текст, смещенный вправо на весь экран (ад из обратных вызовов).

WinLin2 ★★
() автор топика
Ответ на: комментарий от menangen

Возможно повлиял на скорость медленный клиент - netbook.

WinLin2 ★★
() автор топика
Ответ на: комментарий от WinLin2

Можно запустить 100 процессов Apache.

А теперь посчитай сколько они памяти сожрут и цпу.

umren ★★★★★
()
Ответ на: комментарий от WinLin2

Можно запустить 100 процессов Apache.

В Node.js тоже можно запустить в несколько потоков. Кажется так: http://nodejs.org/docs/latest/api/cluster.html Ну и само собой можно запустить несколько процессов и балансировать нагрузку через haproxy или nginx.

Для node это будет текст, смещенный вправо на весь экран (ад из обратных вызовов).

Все зависит от рук программиста. И не на асинхронных языках часто приходится скролить говнокод вправо. Ну и есть async, например.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

Ну и есть async, например.

«Мы строили, строили и построили.»
«Тот кто нам мешает нам и поможет.»

Асинхронность это не преимущество для программиста,
а глюк самого Javascript, который не может иначе работать.

Так ворчу просто... :)

WinLin2 ★★
() автор топика
Ответ на: комментарий от WinLin2

Че сразу глюк :) Просто особенность, которая ничуть не мешает.

Black_Roland ★★★★
()
Ответ на: комментарий от WinLin2

Посмотри на другие проекты: vert.x, libevent, libuv, twisted. Они все - асинхронные движки. Все - самые быстрые в своей сфере. За исключением libevent, он не самый быстрый, но зато отличное community, docs. А по поводу 1000 процессов апач: ну так они же отдельного клиента обрабатывают синхронно, в апач внедрен какой-нить интерпретатор, к примеру, php, как любят делать. И отдельный этот процесс будет работать медленнее такого же процесса в nodejs. Асинхроннность - это просто паттерн проектирования, у него есть и минусы и плюсы. Плюсом является отсутствие задержек в работе главного потока программы, что требуется в браузере, т.к. на клиент-сайде нет возможности создавать потоки (на самом деле, есть, но в последней редакции javascript).

menangen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.