Скрываемые Недостатки Python
Мы живем в 21 веке! IT-технологии развиты на высоком уровне, что не удивительно. Каждый день в интернете появляется сотни тысяч сайтов по всему миру. Свои личные сайты имеют не только бизнесмены, политики, но и множество простых людей.
Что такое сайт и что он из себя представляет знает каждый, даже бабушки, дедушки и блондинки ;) Внешний вид сайтов пишется программистами на стандартизированных языках для WEB: HTML, CSS, JavaScript. Этими языками программируются браузеры, иначе говоря пишутся условия для интерпретаторов браузера, обрабатывающих понятный код человеку высокого уровня, отображая полноценный вид (представление) в браузере.
Сервера программируются 80% случаев на языке программирования PHP. Этот язык был изначально создан для WEB-программирования именно серверов, оправдал себя по скорости и высокой безопасности, но стали появляться и другие аналоги.
В последнее время стал набирать популярность язык Python в WEB-программировании серверов. В соц. сетях "Facebook", "ВКонтакте", "Instagramm", видео-хостинге "YouTube" и других сайтах активно крутится реклама с платными курсами обучения языку Python. В погонях за нечто новым люди толпами "кинулись" изучать и использовать Python в WEB-разработке. Заказчики стали заказывать сайты на Python, поддаваясь рекламе посредников.
Пока немного сайтов написаны на Python но всплыл вопрос: Какие подводные камни и опасности проекту принесет Python? Для ответа на данный вопрос логически правильным решением будет протестировать этот язык.
Скорость работы
Проверим скорость работы кода языков программирования PHP и Python, выполняющего одинаковые программные действия на оборудовании Emachines E729Z, CPU Intel Pentium P6200 (2x2.13 GHz). От комментариев по коду удержусь, ведь речь не об этом.
Код Python:
import time
start=time.time()
f=open(u'D:\\Python/base.bd','r')
s=f.read()
f.close()
buf=s.split("\n")
i=0
c=len(buf)
while(i<c):
str=buf[i].split(';')
if(str[0]=='Статья 33'):
print(str[0])
i=i+1
i=0
c=80000
while(i<c):
i=i+1
b='Мы пришли и начали жарить шашлыки и отдыхать 77 ';
b=b.replace('пришли', 'приехали')
b=b.replace('начали','закончили');
print(b)
str='Статья;1020;привет;'
mas=str.split(';')
print(mas)
print(time.time()-start)
input("Press Enter to continue...")
Код PHP выполняющий аналогичные задачи:
<?php
$start=microtime(true);
$root=$_SERVER['DOCUMENT_ROOT'];
$f=fopen($root.'/base.bd','r');
$buf=explode("\n", fread($f,filesize ($root.'/base.bd')));
fclose($f);
$i=0;$c=count($buf);while($i<$c){$str=explode('~|~',$buf[$i]);
if($str[0]=='Статья 33'){echo $str[0];}
$i++;}
$i=0;$c=80000;while($i<$c){
$i++;}
$b='Мы пришли и начали жарить шашлыки и отдыхать 77 ';
$b=str_replace('пришли', 'приехали',$b);
$b=str_replace('начали', 'закончили',$b);
echo $b
$str='Статья~|~1020~|~привет~|~';
$mas=explode('~|~',$str);
print_r($mas);
echo '<br>Время выполнения PHP-скрипта: '.(microtime (true)-$start);
Время выполнения задачи:
- PHP - 0.0060000419616699 сек.
- Python - 0.17300987243652344 сек.
Кто был послушным мальчиком, или девочкой, изучал математику в школе и разбирается в десятичных дробях видит, что проиграл по времени Python. Двигаемся на шаг вперёд и высчитаем, в сколько раз проигрывает. Для этого, время интерпретации кода Python делим на время интерпретации PHP (больше число на меньше) следующим образом: 0.17300987243652344 / 0.0060000419616699 = 17.834889727797. Python проиграл почти в 18 раз за PHP и, безусловно, проигрывает в любых других операциях и задачах (многократно протестировано).
Многие убеждены, что скомпилированый код Python в исполняемый файл выполняется сверхбыстро. Принимаю вызов и пользуясь популярным компилятором PIP проделываю это. Получем скорость 0.034001827239990234 сек. Применив вышеописанную формулу убеждаюсь, что это далеко не спасло ситуацию и мы видим следующее: 0.034001827239990234 / 0.0060000419616699 = 5.6669315743464. Даже не спасла компиляция и Python проиграл почти в 6 раз.
Почему скорость работы кода (скриптов) важна в WEB-программировании?
Из этого вопроса следует простой ответ:
Сервер - это компьютер, который получает запросы от пользователей на выдачу нужных страниц сайта. Одновременно на сервер может поступать более тысячи запросов. Чем больше скорость обработки кода интерпретатором - тем больше пользователей сервер может обработать за ед. времени, исключая длительные ожидания на загрузку страниц сайтов.
Подходит Python для WEB-программирования?
Теперь посчитаем, за сколько времени сервер сможет обработать 500 пользователей сайта одновременно, выполняя вышеприведённый код:
- PHP: 0.0060000419616699 * 500 = 3.000020980835. За 3 сек.
- Python: 0.10700583457946777 * 500 = 53.502917289734. За 53,5 сек.
- Python скомпилирован в исполняемый файл: 0.034001827239990234 * 500 = 17.000913619995. 17 сек. Но для сервера его не нужно копилировать.
Скрываемые недостатки Python разоблачили. Казалось бы, миллисекунды - это ерунда, а разница между Python и PHP сногсшибательная. PHP, как не странно, выигрывает по скорости намного и за счет этого лидирует и будет лидировать в будущем на рынке много лет. Использование Python в веб-проектах повлечёт немедленный смертельный приговор. Ответ очевиден, почему программисты отказываются использовать Python в ВЕБ-разработке!
Не поддавайтесь красноречивой рекламе, не дайте себя ввести в заблуждение, как это делают супермаркеты, рекламируя "качественную и полезную" колбаску. Выбирайте PHP для программирования серверов и Ваш проект никогда не завалится, как на Python!
Как говорится в народе: "Доверяй, но проверяй!"