| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Веб-разработка и фреймворки > Сравнение TurboGears и Django |
| Автор: alrond 25.8.2006, 17:32 |
| А какие преимущества у TurboGears против Django? можно на пальцах, хочется именно личное мнение |
| Автор: pythonwin 25.8.2006, 17:49 | ||||||
Максим Ищенко о TG http://www.developers.org.ua/archives/max/2005/12/16/turbogears-razrabatyivaem-veb-prilozheniya-na-python/
Иван Сагалаев о Django http://softwaremaniacs.org/blog/2005/12/08/django/
Добавлено @ 17:52 Matthew Russell о TG (англ.) http://www.macdevcenter.com/pub/a/mac/2005/11/08/turbogears.html
|
| Автор: alrond 25.8.2006, 18:01 |
| спасибо! попробую прочитать интересно еще..можно ли эти фреймворки и свой сайт использовать с psyco или pyrex? скорость то должна возрасти |
| Автор: Cr@$h 25.8.2006, 19:16 | ||
|
| Автор: pythonwin 26.8.2006, 09:27 | ||
| Cr@$h, спасибо! Вот http://forum.vingrad.ru/index.php?showtopic=104403 Cr@$h, сможешь перенести тему к ссылкам и к wiki, т.е.
|
| Автор: Cr@$h 26.8.2006, 12:41 |
Зафиксировать (закрепить), в смысле? Конечно, done. |
| Автор: slav0nic 26.8.2006, 21:17 |
| думаю всё то, что есть в ТГ прикручивается и к django, а разница, как мне кажется, в моделях и этапах разработки. Ща какраз пытаюсь постигнуть тонкости django, олько с трудом постигается, когда понимаешь, что врядли тебе это когда-то пригодится;) |
| Автор: pythonwin 29.8.2006, 07:25 | ||
Чесно - не пробовал, но идея хорошая... alrond, ты уже работал с psyco или pyrex? |
| Автор: pythonwin 29.8.2006, 08:58 | ||
можно по подробней? |
| Автор: alrond 29.8.2006, 11:52 | ||
Нет, не работал, но облазил весь интернет. Кстати, собираюсь протестировать все эти фрэймворки в реальных условиях и разных конфигурациях. Надеюсь получится более расширенный вариант, чем здесь http://wiki.rubyonrails.org/rails/pages/Framework+Performance только не лайтхттп, а нгинкс возьму. и конечно проверю влияние психо на фрэймворки Как можно в питоне реализовать это? Вычисление времени работы скриптов:
И куда можно воткнуть в фрэймворки? то есть какие сорсы первым и последним грузится? В свой код же не воткнешь, фрэймворе "оборачивает" его как фантик конфетку. Я и сам найду, просто может быть быстрее если кто знает. Есть рекомендации по типу как здесь? http://php.spb.ru/php/speed.html |
| Автор: slav0nic 29.8.2006, 14:34 | ||
через профайлер и тп модули, или
|
| Автор: J2A 29.8.2006, 15:10 | ||
http://omsk.lug.ru/wacko/Python/Perfomance |
| Автор: alrond 29.8.2006, 16:50 |
| Спасибо!!! |
| Автор: pythonwin 29.8.2006, 17:17 |
| J2A, прикольно! |
| Автор: dvska 11.9.2006, 18:55 |
| Мне кажется производительность web-фрэймворков надо тестировать на не "изнутри", а "снаружи". Написать на каждом из них однотипные приложения и натравить на каждое из них какой-нить http://google.com/search?q=%22http+benchmark+tool%22%7C%22http+benchmarking+tool%22 |
| Автор: alrond 11.9.2006, 19:07 |
| Я так и собираюсь сделать...когда из отпуска вернусь |
| Автор: pythonwin 12.9.2006, 12:27 |
Жду результатов. |
| Автор: alrond 1.10.2006, 22:11 | ||
| Всем привет! я только что приступил к тестированию, собираюсь по жесткому это сделать, займет наверное недельку или поболее, так как делаю в свободное от работы время. Что во-первых могу сказать (из того, что успел): включение модуля psycho увеличивает скорость работы django: на 35% - прирост запросов в секунду, на 27% уменьшается среднее время выполнения запросов. Достигается все это вставкой двух строчек в manage.py и перезапуском fcgi-сервера
Но у этого метода есть большой минус (что на продакшн сервере не должно вызывать проблем): Потребление памяти увеличивается на 80% виртуальной и в 2.3 раза реальной В абсолютных показателях это 54424 KB -> 98652 KB 9504 KB -> 22 MB Подробности потом со всем остальным вместе... |
| Автор: Cr@$h 2.10.2006, 00:24 |
| Будем ждать. Я как раз изучаю средства прогрессивной оптимизации в компиляторах. P.S. Звучит здорово слово, только старайся не поддаваться звучанию: Psyco. |
| Автор: J2A 2.10.2006, 04:37 |
| Нда. Кто в лес, кто по дрова... Ответ "в тему" был только один... дальше пошли разговоры о Pyrex/Psyco. Может стоит разделить тему? Да и тема принципиально не правильно названа. Преимущества X против Y. Такое впечатление, что автор хочет убедить себя, что сделал правильный выбор. А если у X вообще нет преимуществ перед Y? Или они не значительны? Что касается собственно вопроса TG vs. Django - "убийственных" аргументов в пользу того или иного просто нет. Для каждого в итоге это сводится к "нравится-не нравится". Кому-то нравится "легкие" шаблоны в Django и возможность задавать соответствие URL-контроллер при помощи рег.выражений; кому-то нравится, что TG использует уже известные проекты в качестве базовых "шестеренок" или, скажем, был опыт с одним из компонентов, или что в TG есть AJAX-"помошники". В итоге каждый должен сам выбирать... наиболее простой способ - поставить мини-задание и выполнить его при помощи TG и Django (для полноты картины, можно еще и Pylons) и посмотреть, какой подход "твой". |
| Автор: Cr@$h 2.10.2006, 14:46 |
Ну, пока мы в окрестностях темы, ведь главный тестер этого дела, alrond, хочет Про Psyco отдельно конкртено ничего сказано пока не было, мы рассматриваем его влияние на эти каркасы (frameworks) ( Добавлено @ 14:46 Так произошло, что она была выделена из другой и в название перешла эта однобокость. Тему переименовал. |
| Автор: pythonwin 2.10.2006, 15:00 | ||
спасибо! теперь более нейтрально! |
| Автор: alrond 4.10.2006, 18:14 |
| Эти результаты не действительны, так как не было системы при тестировании. Я собираюсь реально оттестить, мне просто надо немного времени... но для особо нетерпеливых оба запущены как FCGI серверы с использованием Flup. вполне возможно, что что-то я настроил не так... наблюдаю еще один неприятный эффект у обоих - при большой нагрузке FCGI зависают и не реагируют на запросы, приходится убивать процесс. для Django это например при ab -c 8 -n 100 http://server.com/ при параметре с=7 работает проектов пока нет, поэтому я и говорил, что это не настоящие тесты... все пока по дефолту http_load-12mar2006# http_load -rate 10 -seconds 10 django 99 fetches, 1 max parallel, 203247 bytes, in 10 seconds 2053 mean bytes/connection 9.9 fetches/sec, 20324.7 bytes/sec msecs/connect: 0.0565455 mean, 0.137 max, 0.047 min msecs/first-response: 1.4821 mean, 2.153 max, 1.362 min HTTP response codes: code 404 -- 99 http_load-12mar2006# http_load -rate 10 -seconds 10 turbogears 99 fetches, 1 max parallel, 308088 bytes, in 10 seconds 3112 mean bytes/connection 9.9 fetches/sec, 30808.8 bytes/sec msecs/connect: 0.0670202 mean, 0.162 max, 0.054 min msecs/first-response: 16.1312 mean, 18.394 max, 15.703 min HTTP response codes: code 200 -- 99 И еще раз повторюсь - это нельзя считать за результаты...так как ни одна страничка не настроена, ни одного проектика... это так, для затравки эти результаты не действительны, так как не было системы при тестировании. Я собираюсь реально оттестить, мне просто надо немного времени... |
| Автор: J2A 4.10.2006, 18:32 |
| IMHO, лучше вообще результаты раньше времени не показывать. Не смотря на двойные поправки о "недействительности" результатов, цифра "в 8 раз" накрепко засядет в умах неокрепших читателей и будет в качестве басни/мифа, даже если потом не подтвердится. |
| Автор: pythonwin 5.10.2006, 08:11 | ||
поддерживаю! alrond, отредактируй, пожалуйста, свой пост. |
| Автор: PyAlexey 5.10.2006, 17:51 |
| http://www.fallingbullets.com/blog/2006/aug/06/wordpress-clone-27-seconds-part-1-40/ |
| Автор: pythonwin 5.10.2006, 18:59 |
это я как понял только для джанго? |
| Автор: PyAlexey 5.10.2006, 19:02 |
| pythonwin, да. Лично мне было бы интересно почитать о написании движка с нуля. |
| Автор: pythonwin 5.10.2006, 19:09 | ||
а мне поучавствовать в разработке. |
| Автор: PyAlexey 5.10.2006, 20:29 |
| http://www-128.ibm.com/developerworks/linux/library/l-django/ http://www-128.ibm.com/developerworks/linux/library/l-turbogears/ |
| Автор: pythonwin 5.10.2006, 20:35 |
| PyAlexey, спасибо, за ссылки! |
| Автор: alrond 10.10.2006, 17:40 | ||||||||||||||||||||||||||||||||||
| привет всем! у меня готовы первые результаты...итак Тестирование проводил на следующем железе и софте:
Цель тестирования была определить скорость работы самих фрэймворков и сравнить их друг с другом по скорости генерирования страниц и максимальному количеству запросов на данной конфигурации. Поэтому была выбрана модель без базы данных, которая контроллером генерировала ответ и парсила один шаблон. В итоге получался HTML-файл c "Hello World!" Так как не было целью найти наибыстрейший вариант работы какого-то конкретного фрэймфорка, то я использовал связку Nginx + FCGI через IP:Port Не сомневаюсь, что можно было добиться большей скорости используя сокеты. При этом я не смотрел на кэш, так как и с кэшированием данных системой фрэймворки должны нормально работать. Как видно из дальнейших результатов, первые запросы были медленнее Листинг Django-проекта:
Для запуска джанги использовал:
Для проверки работы с Psyco, вставил:
Проект TG:
изменил в конфиге:
дял запуска использовал скрипт из http://wiki.codemongers.com/NginxTurboGearsFCGI где изменил
Для тестов использовал команды
Методика тестирования: - Запускал проект - Измерял потребляемую память - Прогонял 3 раза подряд тест "ab" - Измерял потребляемую память - Прогонял http_load - Перезапускал проект с psyco и повторял вышеописанные пункты Более подробное тестирование, с SQL-запросами, вариантами FCGI по сокету и IP, сравнением с Ruby on Rails, с дургими серверами кроме Nginx я проделаю позже...оставайтесь на связи а пока жду конструктивных предложений и испровлений методики Добавлено @ 17:40 Результаты: Первым я прогонял Django Память и время CPU до теста:
после теста:
Далее "ab" (приводу только результаты): Document Path: / Document Length: 251 bytes Concurrency Level: 5 Complete requests: 1000
Обратите внимание на процентную расстановку для первого запуска и для остальных Теперь тест http_load: 49 fetches, 1 max parallel, 12299 bytes, in 5.00001 seconds 251 mean bytes/connection 9.79998 fetches/sec, 2459.8 bytes/sec msecs/connect: 0.0552653 mean, 0.071 max, 0.048 min msecs/first-response: 1.39635 mean, 1.996 max, 1.307 min HTTP response codes: code 200 -- 49 Теперь тест с включенным Psyco Память и время CPU до теста:
после теста:
Теперь тест http_load: 49 fetches, 1 max parallel, 12299 bytes, in 5 seconds 251 mean bytes/connection 9.8 fetches/sec, 2459.8 bytes/sec msecs/connect: 0.0583878 mean, 0.103 max, 0.05 min msecs/first-response: 1.23051 mean, 3.907 max, 1.059 min HTTP response codes: code 200 -- 49 Добавлено @ 17:41 Результаты: Теперь посмотрим на TurboGears Память и время CPU до теста:
после теста:
Далее "ab": Document Path: / Document Length: 178 bytes Concurrency Level: 5 Complete requests: 1000
Теперь тест http_load: 49 fetches, 1 max parallel, 8722 bytes, in 5.00001 seconds 178 mean bytes/connection 9.79998 fetches/sec, 1744.4 bytes/sec msecs/connect: 0.065551 mean, 0.08 max, 0.055 min msecs/first-response: 6.08039 mean, 8.168 max, 5.929 min HTTP response codes: code 200 -- 49 К сожалению мне так и не удалось запустить psyco на TG. Хотя скрипт и запускается, но запросы не обрабатываются, выдавая ошибки. Но если быть до конца честным, то однажды, когда я только готовился к тестам, у меня получилось все...только я так и не понял что изменил, что опять все перестало |
| Автор: alrond 10.10.2006, 18:21 |
| Выводы: 1) по тестам "ab" Django оказался быстрее Tg примерно в 4.5 раза 2) по тестам "http_load" TG оказался медленнее Django на 18%, а время первого ответа в 4.35 раза больше 3) Сразу при запуске Django экономнее обходится с памятью (50388/4296 против 68364/14160 у TG) После прогонки тестов у обоих CMF потребление памяти возросло. И здесь Django показал себя не с очень хорошей стороны, увеличив размер виртуальной памяти почти в 1.5 раза, а реальной в 1.7 раза. TG же показал увеличение виртуальной в 1.38 раза и реальной только на 10% И все же Django потребляет существенно меньше памяти 4) TG за время тестов TG потребил процессорного времени в 6 раз больше! 5) Модуль Psyco увеличил скорость отдачи в 1.16 раза (результаты только по Django), при этом увеличив потребление виртуальной памяти в 1.74 раза и реальной в 2.16 раза После тестов память увеличилась заметнее, по сравнению с тестами без psyco (1.7 раза и 2.92 раза) Хочется заметить, что если отбросить первый проход теста, то модуль показывает себя лучше (ускорение в 1.21 раза против 1.16) 6) тесты "http_load" для Django без Psyco и Django+Psyco противоречивы. С одной стороны модуль в среднем ускорил время первого обращения, с другой максимальный коннект стал в 2 раза больше. С чем связаны такие неужачные результаты у TG я не знаю, возможно что-то в настройках или проекте...спешите поделиться мнением! Добавлено @ 18:25 Только что прогнал http_load для обоих вариантов по несколько раз подряд. Как и думал, первый проход был плохим. Поэтому в расчет не брался. Судя по результатам других проходов psyco улучшил свои показатели для первого ответа, но время коннекта все равно плохо http_load -rate 10 -seconds 5 url 49 fetches, 1 max parallel, 12299 bytes, in 5 seconds 251 mean bytes/connection 9.8 fetches/sec, 2459.8 bytes/sec msecs/connect: 0.0555306 mean, 0.074 max, 0.046 min msecs/first-response: 1.41573 mean, 1.864 max, 1.31 min HTTP response codes: code 200 -- 49 http_load -rate 10 -seconds 5 url 49 fetches, 1 max parallel, 12299 bytes, in 5.00001 seconds 251 mean bytes/connection 9.79998 fetches/sec, 2459.8 bytes/sec msecs/connect: 0.0626327 mean, 0.141 max, 0.05 min msecs/first-response: 1.17227 mean, 1.618 max, 1.052 min HTTP response codes: code 200 -- 49 |
| Автор: J2A 10.10.2006, 19:14 |
| AFAIR, у TG разные конфиги для dev и production. Какой использован? Какие db-backend-ы использованы? В обеих случаях sqlite? Что понимается под виртуальной памятью, что под реальной? На какой ОС производились тесты? Какова методика замера используемой памяти? И неплохо было б прикрепить Django и TG проекты, а то не совсем понятно какие условия моделировались. P.S. http://softwaremaniacs.org/blog/2006/10/08/framework-performance/ P.P.S. Я вообще весьма скептически отношусь к идее увеличения производительности средствами psyco и ему подобных инструментов. На поиграться интересно, а использовать на реальных приложениях - риск, причем где проявятся баги от использования psyco предугадать практически невозможно (не так давно в ZoPyRus пробегало сообщение о глюках Zope при включенном psyco) |
| Автор: alrond 10.10.2006, 23:31 |
| да, конфиги разные, только вот отличаются они кажется (если мне не изменяет память) только дебаг-режимом. DB вообще не использовал. Методика довольно внятно описана вначале, вместе с исходниками, как и ОС и все остальное... ссылку я читал... про психо - это всего лишь вариант, кому-то подходит, кому-то нет... |
| Автор: isagalaev 11.10.2006, 12:00 |
| Просили замечания по методике: - FastCGI сервер запущен в threaded-режиме. Известно, что Питон в тредах работает существенно медленно из-за GIL (Global Interpreter Lock) из-за которого все треды очень часть просто ждут друг-друга, потому что интерпретатором может владеть только кто-то один. Поэтому в юниксах, если есть возможность, серверы с питоновским кодом стоит запускать в prefork-режиме - будет быстрее. Кстати, под Windows ситуация обратная, потому что там создание процесса существенно медленней, чем в юниксах, и там на тредах Питон тормозит, насколько я знаю, все же меньше. - Насчет Psyco. Джанговские девелоперы тестировали его, и нашли интересную штуку. На 32-битных системах он действительно дает прирост в производительности. А вот на 64-битных - наоборот, производительность падает. Происходит так из-за того, что под Psyco процессор переключается в 32-битный режим и не использует всех прелестей своей архитектуры. Если все это так, то тот факт, что под Psyco Django таки работал быстрее означает, вероятно, что Linux и Python скомпилены не в 64 битах (несмотря на то, что работает это все на Opteron'е). Это так? P.S. Жаль, статья не на блоге! Никаких пингбеков, и чтобы прокомментировать, приходится проходить регистрацию... |
| Автор: pythonwin 11.10.2006, 13:01 |
Спасибо за ссылку! |
| Автор: Smaug 23.10.2006, 00:26 |
| cорри что пишу тут (почемуто не получается создать тему в этом разделе) мне нужно помощь по Django тут предложил себя поработать в одном проекте на этом фреймворке (разумеется бесплатно,нужны знания и опыт),к моему удивлению заявку приняли, и передо мной в скором времени станут реальные задачи (написание todo list,calendar etc).Я знаю базовый Питон,ПХП,но совсем без опыта разработки - какую литературу-туториалы (кроме выложенных на офиц. сайтах) вы могли бы мне посоветовать? вообще приму с благодарностью любые советы заранее спасибо с уважением |
| Автор: pythonwin 23.10.2006, 08:32 |
| Smaug, можешь описать проблему в http://python.com.ua/forum/viewforum.php?id=17 |
| Автор: pythonwin 23.10.2006, 16:00 | ||||
http://www.developers.org.ua/archives/max/2006/04/18/knigoman-postmortem-notes/
|
| Автор: J2A 22.11.2006, 18:13 | ||||||
| http://omsk.lug.ru/wacko/Django/DjangoVsTurboGears Весьма толковая и вежливая беседа в группе turbogears. В итоге приходят к мнению, что нет идеала и нужно потратить выходные, чтобы попробовать и Django, и TG, и выбрать что по душе. Понравились слова Марка Рамма:
|
| Автор: pythonwin 24.11.2006, 08:25 | ||
J2A, спасибо за статью!
вот с этим не согласен - в TG есть CatWalk и Web Shell. а вот в TG 0.9a1 и старше CatWalk уже есть, но в TG 0.8.9 админки действительно нет. про CatWalk прочитать можно в: http://checkandshare.com/catwalk/ http://www.turbogears.org/docs/toolbox/catwalk.html http://www.turbogears.org/docs/TurboTunes/ PS сейчас последняя версия TurboGears 1.0b1 и уже есть идея http://www.checkandshare.com/blog/?p=41 |
| Автор: pythonwin 1.12.2006, 13:14 |
| вот ещё по админовкой части в TG http://trac.turbogears.org/turbogears/wiki/DataController |
| Автор: Daevaorn 1.12.2006, 18:53 |
| http://comlounge.tv/blog/topics/turbogears http://comlounge.tv/blog/topics/django |
| Автор: slav0nic 11.12.2006, 12:39 |
| пример с CatWalk в ТГ конечно радует при знакомстве с фреймворком, а ваще обалдел когда увидел такую красоту) (с вэбом как-то не дружу), но всё равно джанга мне ближе) простая, лёгкая и одновременно мощная |
| Автор: pythonwin 11.12.2006, 12:53 | ||
сейчас вышел CherryPy 3.0.0RC1 и что он быстрее чем 2x так что ТГ догоняет по скорости Джанго. PS а в CatWalk нужно разработчикам добавить проверку на стороне клиента или хотя бы на стороне сервера. |
| Автор: dvska 11.12.2006, 14:25 | ||
TurboGears на СherryPy 3.x переделают ещё не скоро, видимо в версии TG 2.0 (а ещё и 1.0 не вышла) ( http://groups.google.com/group/turbogears-trunk/browse_frm/thread/b89e973fd357107e/c77c5e59b3571993 ) Добавлено @ 14:26 ( http://trac.turbogears.org/turbogears/ticket/1181 ) |
| Автор: pythonwin 20.12.2006, 08:20 | ||
dvska, уже есть версия 1.0 (TurboGears 1.0b2) за ссылки - спасибо! |
| Автор: Daevaorn 27.12.2006, 12:24 |
| презантация Django одним из разработчиков: http://video.google.com/videoplay?docid=-70449010942275062&q=Google+techtalks |
| Автор: alrond 29.1.2007, 12:42 |
| Я провел подробное тестирование шести фреймворков ;) django занял первое место, turbogears второе на пару с руби http://www.alrond.com/ru/2007/jan/25/rezultaty-testirovanija-6-frameworks/ |
| Автор: pythonwin 1.2.2007, 13:57 |
| alrond, ++1. было бы хорошо, если бы протестировал фреймворки с разными шаблонами (cheetah, kid и т.д.) и перед тестирование лучше спросить код у программеров, которые пишут на этих фреймворках - лишнее повырезают |
| Автор: alrond 1.2.2007, 22:50 |
| хочу провести такой тест. только вот не знаю как в TG заменить шаблон... + добавлю CakePHP и Pylons |
| Автор: pythonwin 2.2.2007, 07:19 | ||
http://docs.turbogears.org/1.0/AlternativeTemplating http://docs.turbogears.org/1.0/CheetahTemplating http://docs.turbogears.org/1.0/GenshiTemplating http://docs.turbogears.org/1.0/DjangoTemplating |
| Автор: alrond 5.2.2007, 01:54 |
| Дополнил тестирование другими PHP-ными фреймворками, Pylons и TG c разными обработчиками темплейтов http://www.alrond.com/ru/2007/feb/04/dopolnenie-k-test-mvc-frameworks/ |
| Автор: pythonwin 5.2.2007, 08:19 |
| alrond, спасибо, за тест а сможешь показать код проектов? |
| Автор: alrond 5.2.2007, 14:16 | ||||||
Вот пример с jinja
Здесь не привел закомментированные...
Для других темплейтов просто здесь менял название: @expose(template="jinja:tg.templates.world") |
| Автор: pythonwin 5.2.2007, 15:00 | ||
в принципе - замечательно - только несколько моментов лишних
|
| Автор: alrond 5.2.2007, 15:52 |
| нда...можно было и убрать, но насколько я понимаю, это не могло так сильно сыграть на производительности... пару процентов... |
| Автор: pythonwin 6.2.2007, 13:24 | ||
к сожелению в ТГ тот же принцип если бы заменили бы в самом ТГ (+ пакеты - CherryPy и т.д.), то и читабельность и эффективность кода было больше |