Найти - Пользователи
Полная версия: Будет ли выигрыш в ресурсах при разработке на Питон (vs ПХП)
Начало » Флейм » Будет ли выигрыш в ресурсах при разработке на Питон (vs ПХП)
1 2
azecm
Несколько вопросов
- будет ли выигрыш в ресурсах у Питона
т.е. потянет ли проект на питоне больше народу при использовании таких БД как MySQL или PostgreSQL
- как лучше подключать питон для максимальной производительности, но и чтобы ресурсы не кушал
(в теме недавно могу далее дать совершенно неграмотные записи)
- nginx+FastCGI
- nginx+CherryPyWSGIServer
- apache+CherryPyWSGIServer
- apache+mod_wsgi

- реально ли писать на питоне без фреймворкоф, я не тороплюсь. ПХП без них заметно быстрее работает.
На сколько или во сколько раз при этом замедляется разработка? На сколько фреймворки тормозят?

Или все упрется в скорость взаимодействия с базой данных? Какую из бесплатных лучше использовать?

—————————–
Сейчас вот проект на VDS на PHP + MySql
6 тыс в сутки - 30 тыс хитов
Начинает подтормаживать - время построения страницы довольно часто стал превышать 2 секунды
Памяти 256 мб, процессора 700 МГц
Может кто скажет - это нормально, или просто мне надо код оптимизировать :-))

Проект будет расти посматриваю на Питон. Но не ясно будет ли выигрышь. При условии что я сам не оплошаю :-))
pythonwin
azecm
Памяти 256 мб, процессора 700 МГц
сколько виртуальная память?
и наверное лучше поставь железо получше
azecm
pythonwin
сколько виртуальная память?
512 мб
Teddy Bear
По поводу процессорного времени - на конференции Сагалаев утверждал, что по большому счету производительность того или иного скриптового языка/фреймворка для веб-программирования особого значения не имеет (даже для очень крупных проектов). Все дело в том, что в конечном счете узким местом будет время выполнения запроса SQL-сервером + время доставки готовой страницы по сети конечному пользователю. Поэтому, при выборе языка/веб-фреймворка в первую очередь стоит руководствоваться соображениями удобства и скорости разработки и Питон здесь вне конкуренции ;).
Что же касается использования памяти, то тут сложнее. Питон вроде как потребляет памяти несколько больше чем ПХП, кроме того, потребление памяти зависит от того как он запущен (FastCGI или mod_python).
Ну и помимо этого, следует учитывать, что для работы с Питоном в большинстве случаев потребуется выделенный сервер (хоть бы и виртуальный).
Писать на Питоне без фреймворков имеет смысл только если сайт со статикой, либо с простенькой динамикой, без авторизации юзеров и не будет требовать частой доработки/изменений.
shiza
Я в общем случае заметил - что ПХП работает со строками и массивами не слишком эффективно.
На питоне - получается быстрее раза в 3.
Для соверменных фреймворков - это наверное важно.
Андрей Светлов
Все примерно так и есть.
Не нужно мерять скорость по арифметике, выполнению цикла или конкатенации строк.
В таком случае ассемблер быстрее всех.
Но для каждого языка есть свои приемы.
Сравните

l=
s1 = ''
for i in xrange(len(l)):
s1 += l
s2 = ''.join(l)

Выигрыш в производительности получается на более высоком, архитектурном уровне.
И вопрос в том, как тот или иной язык к этому готов.
По моему мнению, Питон здесь гораздо сильнее PHP.

И последнее замечание по скорости.
Есть такие системы контроля версий: Subversion, Mercurial, Bazaar.
Последние две - на питоне. И они быстрее сишного Subversion. Хотя С быстрее Питона на элементарных операциях попросту несопоставимо.

В большой системе становится не очень важна скорость выполнения этих минимальных блоков.
Куда важнее то, что получается в результате.
azecm
А на сколько процентов питон больше есть памяти чем пхп???
я смотрел у себя на VDS (mod_php) каждый httpd потребляет 15 мб
Сколько будет если сюда же добавить еще и mod_python?
И сколько будет если запустить только mod_python?
В режиме fast_cgi - сколько он кушает?
В режиме nginx +fast_cgi - сколько он кушает?

Вопрос к тому сколько надо VDS-у памяти чтоб хватало на тысяч 20 посетителей в день?

Вот думаю SQL вообще нафиг может быть
Оставить его только для форумов, поиска и может быть для тех кто авторизовался.

Что быстрее
- подключится к SQL
запросить шаблон
статью
- или взять шаблон из файла
найти статью на диске
- что быстрее начнет затыкаться?

И второй вопрос
- при реализации без SQL что быстрее создаст страницу php или python без фремворков? Будет ли питон быстрее хотя бы раз в 5?

Без фреймворком можно ли на питоне
- подключаться к MySQL и работать сней
- работать с изображениями
- работать с кукисами и сессиями
- работать с XML
- аналог curl (загружать странички с сайтов и претворяться броузером)
- работать с кодировками
azecm
Мдя всё понял - надо действовать :-)
azecm
Свершилось.
Долго выбирал. Остановился на apache + mod_wsgi
Потому как я пока не спец чтобы и сервер и т.д. ставить.
Начать решил с простого.
А тут стал разбираться и оказалось что покрайней мере дома вообще халява
Работаю на Mas OS Leopard и уже стоит
- apache 2
- mod_php
- mod_fcgi
- perl
- python 2.5

Ну в общем можно было и так ничего не делать, но решился поставить mod_wsgi
За сутки справился :-)))) Точней с ним всё часов за 5 получилось, а вот написать единственную строку в конфигурации апача и эта кодировка файлов питона ….

В общем сравнил быстродействие
mod_php (2.26845 сек) mod_wsgi(1.57470 сек) и mod_fcgi(2.03536 сек)

mod_wsgi не шибко но чуть быстрее что приятно

Собственно прога читает лог файл 20мб и проверяет каждую строку на соответствие регулярным выражением

Был удивлен скоростью при использование в питоне
re.search - чуть медленнее чем ПХП
re.match - собственно та цифра что указана

В общем предвижу много тонкостей - примерно час разбирал ошибку с лишним табулятором в начале строки :-)))) все перепробовал, а оказалось ….

Осталось только на сервере понять как обновить питон до 2.5 и забацать туда wsgi
И посмотреть на питона в бою.


mod_wsgi
# -*- coding: windows-1251 -*-

import time
import re

def application(environ, start_response):
prog=re.compile("(\S*) (\S*) (\S*) \ \“(.*)\” (\S*) (\S*) \“(.*)\” \“(.*)\”“)
t = time.time()
output = ‘<h1>Hello World</h1>\n’
f=open('/Library/WebServer/CGI-Executables/hnh.ru.access.txt')
for line in f:

result = prog.match(line)
if result==None:
output = output + ‘\n- ошибка’
else:
output = output + result.group(1)
f.close()
output = output + ”\n<p style=\“color:#red\”>“ + ”%.5f“ % (time.time()-t) + ”</p>"
status = ‘200 OK’
response_headers = [('Content-type', ‘text/html’),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return
mod_php
function Getmicrotime(){
list($usec, $sec) = explode(“ ”, microtime());
return ((float)$usec + (float)$sec);
}
$t=Getmicrotime();

$logReg = "/(\S*) (\S*) (\S*) \ \“(.*)\” (\S*) (\S*) \“(.*)\” \“(.*)\”/si“;

$txt=”“;
$iNumber=0;
$handle = fopen(”/Library/WebServer/CGI-Executables/hnh.ru.access.txt“, ”r“);
while (!feof($handle)){
$iNumber++;
$line=stream_get_line($handle, 10000, ”\n“);
preg_match($logReg, $line, $log);
if (count($log) == 0) {
echo ”<li>ОШИБКА в строке " . $iNumber;
continue;
}

$txt.=$log;
}
fclose($handle);

$d=Getmicrotime()-$t;

echo $txt.“\n<p style=\”color:#red\“>”.$d.“</p>”;
Ferroman
2 azecm
Извините, вы всегда созидаете несколько средов с одинаковыми темами?

Вообще-то, честно говоря, ваши танцы вокруг быстродействия/экономии ресурсов мне кажутся … ммм…. несколько натянутыми. Вам что важнее скорость, ресурсы или все-таки скорость и лёгкость разработки? Какова вообще ваша цель в этом “меряньи пиписьками” :) ?
Просто я привык к тому что пишу приложение, а уже потом его оптимизирую, в тех местах, где это действительно необходимо…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB