<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>php vs python » enterv.pl</title>
	<atom:link href="https://enterv.pl/tag/php-vs-python/feed/" rel="self" type="application/rss+xml" />
	<link>https://enterv.pl</link>
	<description>Więcej niż tylko portfolio i blog</description>
	<lastBuildDate>Tue, 04 Mar 2025 17:27:05 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://enterv.pl/wp-content/uploads/2022/12/cropped-1024_bt-32x32.png</url>
	<title>php vs python » enterv.pl</title>
	<link>https://enterv.pl</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP vs Python &#8211; krótki test</title>
		<link>https://enterv.pl/2022/11/21/programowanie-php-vs-python-krotki-test/</link>
					<comments>https://enterv.pl/2022/11/21/programowanie-php-vs-python-krotki-test/#comments</comments>
		
		<dc:creator><![CDATA[enterv]]></dc:creator>
		<pubDate>Mon, 21 Nov 2022 22:05:47 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php vs python]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[test prędkości]]></category>
		<guid isPermaLink="false">https://enterv.pl/?p=474</guid>

					<description><![CDATA[<p>Cześć moje słonie kochane 🐘 i węże tuląco-jadowite 🐍. W tym wpisie poznacie pewne różnice pomiędzy PHP, a Python oraz poznacie, co jest tak na prawdę szybsze</p>
Artykuł <a href="https://enterv.pl/2022/11/21/programowanie-php-vs-python-krotki-test/">PHP vs Python – krótki test</a> pochodzi z serwisu <a href="https://enterv.pl">enterv.pl</a>.]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Wstęp</h2>



<p>Cześć moje słonie kochane 🐘 i węże tuląco-jadowite 🐍. Nadszedł ten wiekopomny moment <s>(do którego mnie zmusiliscie)</s> do którego zostałem bardzo zachęcony, w którym napiszę o tym co jest lepsze: PHP czy Python?</p>



<p>Już na wstępie powiem, że żadne w powyższych, <strong>bo prawdziwy programista powinien umieć kontrolować wszystkimi napięciami, które powstają w komputerze tak, aby tym pisać m.in kod binarny, ale i też sterować każdym podzespołem. Wszystko inne to języki wyższych poziomów</strong> &#8211; tego pogrubionego fragmentu jak to coś nie brać na poważnie 😆</p>



<p>Więc&#8230; dzisiaj pomimo tego, że coś tutaj ukażę to niekoniecznie będzie to świadczyć o tym, który z tych języków będzie lepszy. Języki programowania są tylko różnymi narzędziami i bardzo łatwo je porównać do śrubokrętów, które powstały do konkretnych typów wkrętów (na internecie wpisać &#8222;typy śrubokrętów&#8221; to świadomość wskoczy na wyższy lvl) albo do różnych typów klejów, bo są takie do kartek, a inne są do tapet (też różne rodzaje), a jeszcze inne kleje są do drewna itd. itd&#8230; No tak samo są różne naczynia.. dobra chyba nie muszę dalej porównywać czegoś nierealnego z realnymi przedmiotami 🤣</p>



<h2 class="wp-block-heading">Przygotowanie</h2>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_-1024x683.jpg" alt="" class="wp-image-479" srcset="https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_-1024x683.jpg 1024w, https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_-300x200.jpg 300w, https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_-768x512.jpg 768w, https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_-1536x1024.jpg 1536w, https://enterv.pl/wp-content/uploads/2022/11/vecteezy_graphic-designer-learning-program-software-painting-on-computer_.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Aby cokolwiek móc przetestować, należy wymyślić jak coś przetestować i takie punktowe cusie, np. lista rzeczy do przetestowania, ma nam też coś powiedzieć i to nie jest wcale takie proste, zatem uznałem, że nie będę robić wyrafinowanych testów lecz przetestuję jakieś rzeczy, które w obu językach da się prosto utworzyć i uruchomić.</p>



<p>Mój test polegać będzie na pobraniu z jednego źródła danych (z pliku lokanego) dokumentu w formacie JSON, a następnie sprawdzić:</p>



<ol class="wp-block-list">
<li>Prędkość parsowania JSON na Obiekt</li>



<li>Szybkość z jaką połączy się wszystkie elementy z tablicy za pomocą pętli i konkatenacji (nie będę korzystać ze specjalnych metod służących temu)</li>



<li>Szybkości serializacji JSON do obiektu klasy DTO</li>



<li>Tak jak 3. tylko że będę chciał uzyskać błąd i przetestować szybkość obsługi wyjątku</li>



<li>Prędkość deserializacji z DTO na JSON i utworzeniu nowego pliku dokumentu JSON &#8211; z tego zrezygnowałem (wyjaśnię później)</li>
</ol>



<p>Więc co nam to udowodni? Oprócz tego że będę mógł zdać relację pisania obu skryptów to i też poznamy prędkości. </p>



<p>Do testów użyję PHP 8.2 oraz Python3. Każdy punkt zrealizuję jako osobny plik, a całość wrzucę na GitHub, abyście mogli mój test powtórzyć no albo czegoś się nauczyć albo przerobić pod własne testy.</p>



<h2 class="wp-block-heading">O pisaniu skryptów</h2>



<p>W obu przypadkach googlowałem proste rzeczy, a jak to pobrać dane z pliku, a jak to przerobić na JSON, a jak to mierzyć czas wykonania kodu. No i tutaj generalnie w obu językach nie miałem aż tak większego problemu, aby cokolwiek znaleźć. Z Pythonem miałem problem taki, że kompletnie jego składni nie znam, a nawet myślałem, że skoro średników nie trzeba to tym bardziej jakiś dwukropków i &#8222;selfiaków&#8221; nie będę potrzebować, więc problemy były ze nieznajomością narzędzia. Z tego powodu musiałem zrezygnować całkowicie z piątego punktu testu.</p>



<p>Co do PHP, generalnie poza drobnymi zmianami w nazwach zmiennych to większość kodu była kopiuj wklej z internetu. Struktury w obu językach staram się zrobić identico (z drobnymi różnicami w składniach). Więc jak w PHP zrobiłem foreach to na internecie szukałem odpowiednika dla Pythona i znalazłem for in. </p>



<p>Bardzo ważne było też dla mnie to, aby skrypty w obu językach wyglądały bardzo podobnie, aby w łatwy sposób dało się porównać co z czym jak szybko działa. Pisanie kodu zacząłem wczoraj (20 list 2022) o godzinie około 20:00 co z PHP skończyłem o 20:30, co jak z Pythonem zacząłem koło 21:00 to skończyłem o 23:30 i powiedziałem, że to nie jest język na moje nerwy.</p>



<h2 class="wp-block-heading">Porównanie</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="611" src="https://enterv.pl/wp-content/uploads/2022/11/Research-of-tiny-employees-price-innovation-on-unbalanced-scales-1024x611.webp" alt="" class="wp-image-481" srcset="https://enterv.pl/wp-content/uploads/2022/11/Research-of-tiny-employees-price-innovation-on-unbalanced-scales-1024x611.webp 1024w, https://enterv.pl/wp-content/uploads/2022/11/Research-of-tiny-employees-price-innovation-on-unbalanced-scales-300x179.webp 300w, https://enterv.pl/wp-content/uploads/2022/11/Research-of-tiny-employees-price-innovation-on-unbalanced-scales-768x458.webp 768w, https://enterv.pl/wp-content/uploads/2022/11/Research-of-tiny-employees-price-innovation-on-unbalanced-scales-1536x917.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jako iż jestem jeszcze przed analizą wyników na wstępie mogę powiedzieć co wydaje mi się, a wydaje mi się, że Python jest dużo wolniejszy od PHP no i tak, bo w PHP można przeiterować 5-cio-milionową elementów tablicy w miej niż sekundę używając tylko bardzo prosty foreach, co w Pythonie, aby takie samo zrobić wydajniej trzeba napisać jednak więcej kodu, ale bez kombinacji w kodzie jednak chciałem robić porównanie, no bo foreach i for in to dla mnie i pewnie dla wielu to samo i w założeniu działać ma tak samo. </p>



<p>Gdy miałem przygotowany 30 MB plik z danymi to PHP poradził sobie ze wszystkim, a Python drugiego punktu testu nie potrafił dokończyć w rozsądnym czasie. Tak w sumie przerwałem mu działanie po 2 minutach. PHP poradził sobie poniżej 1 sekundy (a dokładniej to w 0,199593&#8230; sek) tworząc zmienną ze 16968000 znakami.</p>



<p>No ale chciałem jednak dać szansę wężowi, aby nie było, że specjalnie na start go uwaliłem. No chociaż myślę, że język programowania, który jest tak długo &#8222;wspierany&#8221; i uznawany jest za język wysokiego poziomu powinien mieć w miarę dojrzałą formę foreach (nawet ten for in) tak, aby zawsze szybko to działało i już na tym etapie nasuwa mi się wniosek, że to nie jest język, w którym cele biznesowe da się osiągnąć stosując strukturę heksagonalną i wszelakich zasad programowania domenowego, i jeszcze aby to działało optymalnie. Zasada jest prosta: 20 mln itemów w tablicy i chcę je przeiterować. Dla mnie według zasady <a href="https://enterv.pl/2022/08/15/programowanie-zasada-kiss/" target="_blank" rel="noopener" title="Zasada KISS">KISS</a> powinienem był użyć tylko i wyłącznie foreach.</p>



<p>Zatem.. zmniejszyłem rozmiar pliku z danymi do około 300 KB (dużo dużo mniej) i dostałem następujące wyniki</p>







<h2 class="wp-block-heading">Wnioski</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" src="https://enterv.pl/wp-content/uploads/2022/11/7720441-1024x1024.jpg" alt="" class="wp-image-484" srcset="https://enterv.pl/wp-content/uploads/2022/11/7720441-1024x1024.jpg 1024w, https://enterv.pl/wp-content/uploads/2022/11/7720441-300x300.jpg 300w, https://enterv.pl/wp-content/uploads/2022/11/7720441-150x150.jpg 150w, https://enterv.pl/wp-content/uploads/2022/11/7720441-768x768.jpg 768w, https://enterv.pl/wp-content/uploads/2022/11/7720441-1536x1536.jpg 1536w, https://enterv.pl/wp-content/uploads/2022/11/7720441.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Trudno tutaj jednoznacznie powiedzieć że Python jest gorszy, bo mój test tego nie dowodzi. Raz że musiałbym ten język lepiej poznać to dwa w nim tak ja ja to zrobiłem nie pisze się. To co już jednak ustaliłem, że PHP działa jednak dużo szybciej niż zakładałem 😅 W wersji 5.4 takich czasów bym już nie uzyskał, więc widzę duży postęp w optymalizacji tego języka, co pewnie skłoni mnie do porównania prędkości pomiędzy wersjami, a co bardziej, bym miał kolejny powód do aktualizowania wszystkiego 😈</p>



<p>Jeśli chodzi o jakieś dalsze wnioski idące za zdobytymi przeze mnie cyferkami to zostawię wam moje misiaczki pole do popisu, bo może jest coś, co ja mogłem przeoczyć&#8230; na pewno jest 😆</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p>Zatem poświęciłem dwa wieczory specjalnie pod ten pseudo-naukowy wyczyn, który zasadniczo mało co udowadnia. Za to mogłem ujrzeć wężowy odwłok odchodzący ku zachodzącemu słońcu na tle słoniowych chmur.. Czy straciłem czas?&#8230; 😬 Powiem tylko, że czas poświęconych dla moich kochanych misiaczków nigdy nie jest stracony 🫂</p>



<p class="has-small-font-size">Wolę PHP</p>



<p>Także do następnego miłego 😘</p>



<p>Repozytorium: <a href="https://github.com/EnterVPL/PHPvsPython" target="_blank" rel="noopener nofollow" title="">https://github.com/EnterVPL/PHPvsPython</a></p>Artykuł <a href="https://enterv.pl/2022/11/21/programowanie-php-vs-python-krotki-test/">PHP vs Python – krótki test</a> pochodzi z serwisu <a href="https://enterv.pl">enterv.pl</a>.]]></content:encoded>
					
					<wfw:commentRss>https://enterv.pl/2022/11/21/programowanie-php-vs-python-krotki-test/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
