konto usunięte

Temat: Fabien Potencier o PHP

Widzę, że nie ma sensu się odzywać na tym forum, bo same bystrzaki tu siedzą. Taką wiedzą się popisujecie, że tylko załamać ręce...
Tomasz Zadora

Tomasz Zadora programuję

Temat: Fabien Potencier o PHP

To pokaż artysto ten kod w PHP który spłodziliście... pewnie zapomniało się o unset albo pracy ze wskaźnikami. Przetwarzałem już w PHP w trybie CLI gigabajty danych i nie było większego problemu.Tomasz Zadora edytował(a) ten post dnia 05.07.12 o godzinie 21:06

konto usunięte

Temat: Fabien Potencier o PHP

Łukasz K.:
a jaki był ten "artystyczny" algorytm tego narzędzia?

Masz jakiś problem, o którym chciałbyś porozmawiać?

jestem ciekaw jak wyglądał kod który takie błędy generował

uczyć można się na błędach swoich lub cudzych

konto usunięte

Temat: Fabien Potencier o PHP

Mogę wiedzieć czego się czepiliście tego "artysty"? Bo nie bardzo rozumiem? Zrobiłem tu komuś jakąś krzywdę, albo coś? Nie wiem... jakieś herezje prawiłem? Kogoś obraziłem? Skąd domniemania o złej jakości kodu? Bardzo jestem tego ciekaw - nie przypominam sobie, bym dawał podstawy do takiego filtra.

[Powyższe to pytania retoryczne]

Unset i referencje poszły ostro w ruch. Skrypt musiał sporo rzeczy agregować, przeliczać. Nieważne, w każdym razie nie były to zadania trywialne. I też myślałem, że PHP da radę, inaczej nie zaczęlibyśmy go w PHP. Prawda jest taka, że PHP jest pamięciożerne i powolne. Nie wyrobił. Analogiczny kod w Pythonie tak. Bez żadnej specjalnej gospodarki zasobami. Po prostu zarobił. Nawet jeśli jakość byłaby bliska zeru, to w skrypcie pythonowym też taka musiała być, a różnica efektywności obu skryptów była paru klas.

Co do samych czasów operacji - rzutowało na to na pewno środowisko działania i ilość operacji na danych - ale nie chcę w to wchodzić, bo to nie ma znaczenia. Nie rozumiem za bardzo stwierdzenia "VBA daje radę". Pewnie, że zgrepować PHP-em też idzie i 100GB, ale to nie o to chodziło. Nie ma to też żadnego znaczenia jeśli chodzi o porównanie języków m.in. z powodu wymienionego w poprzednim akapicie.Łukasz K. edytował(a) ten post dnia 05.07.12 o godzinie 21:28

konto usunięte

Temat: Fabien Potencier o PHP

Łukasz K.:
Mieliśmy kiedyś małą zagwostkę, musieliśmy szybko i efektywnie przeorać kilkanaście giga logów. Na szybko napisaliśmy skrypt w PHP... zonk... memory exceeded. Optymalizowaliśmy to maksymalnie jak się dało, zonk, zonk, zonk. Kilkanaście minut orania przez PHP logów ważących z giga (tylko) i na końcu zonk z pamięcią.

No jaki programista takie efekty.

Wobec tego, napisaliśmy naprędce podobny oracz w Pythonie. 15GB w 3 minuty, znikome zużycie pamięci, statystyki potworzone jakie chcieliśmy. W zaoszczędzonym czasie porysowaliśmy wykresy, co szybko i przyjemnie pozwoliło nam rozwiązać kłopot.

Tzn że napisaliście skrypt w PHP, wczytaliście dane i przekroczyło Wam limit pamięci a później napisaliście podobny w Pythonie i wszystkie te dane MAGICZNIE się skompresowały i zużycie pamięci było znikome. Nie wiem czy próbujesz robić idiotę z nas czy z siebie i nie wnikam.

Już dawno udowodniłeś że dyskusja z Tobą nie ma sensu.Dariusz Półtorak edytował(a) ten post dnia 05.07.12 o godzinie 22:05

konto usunięte

Temat: Fabien Potencier o PHP

Dariusz Półtorak:
Łukasz K.:
No jaki programista takie efekty.

Już dawno udowodniłeś że dyskusja z Tobą nie ma sensu.

Chłopaki, może tak spróbować bez personalnych wycieczek?

Miał być flame na PHP a nie solówki jeden na jednego ;).

konto usunięte

Temat: Fabien Potencier o PHP

Adam Piotrowski:
Dariusz Półtorak:
Łukasz K.:
No jaki programista takie efekty.

Już dawno udowodniłeś że dyskusja z Tobą nie ma sensu.

Chłopaki, może tak spróbować bez personalnych wycieczek?

Miał być flame na PHP a nie solówki jeden na jednego ;).

Dzięki.

konto usunięte

Temat: Fabien Potencier o PHP

Adam Piotrowski:
Chłopaki, może tak spróbować bez personalnych wycieczek?

Miał być flame na PHP a nie solówki jeden na jednego ;).

Tylko wypada mi przeprosić. Po prostu nie lubię jak ktoś próbuje mi wciskać bzdury. W dyskusji trzeba oddzielać argumenty od baśni tysiąca i jednej nocy.Dariusz Półtorak edytował(a) ten post dnia 05.07.12 o godzinie 23:47

konto usunięte

Temat: Fabien Potencier o PHP

Dobra:
- to co piszę, to są fakty, a nie gdybania,
- nie zajmuję się wróżeniem z fusów,
- nigdy nie odważyłbym się oceniać umiejętności innego programisty na podst. jednego posta,
- jestem świadom tego, że niektórzy po prostu nie mogą znieść, że mam rację ;)

Niezależne obserwacje zachowania pamięci w PHP:
- http://www.blograndom.com/blog/2010/09/php-vs-python-a...
- http://athos.blogs.balabit.com/2011/02/betrayed-by-php/

Oni też się mylą? Zapewne tak...

Nie ma chyba sensu o tym rozmawiać. PHP w takiej czy innej wersji ma problemy z obsługą pamięci. Python nie. Wersje użyte wówczas przeze mnie to PHP 5.2.x i Python 2.4.x.

Bonus: każdy język (skrót myślowy) inaczej gospodaruje pamięcią - stwierdzenie, że te same dane (logicznie) nie mogą zajmować innej przestrzeni (fizycznie) w pamięci jest oznaką dość swobodnego podejścia do tematu, tak to nazwijmy. Wobec tego post, z zaznaczonym słowem "MAGICZNIE" i pytaniem o idiotów pozostawię bez odpowiedzi. Bo co musiałbym napisać? EOT.Łukasz K. edytował(a) ten post dnia 06.07.12 o godzinie 00:51

konto usunięte

Temat: Fabien Potencier o PHP

Łukasz K.:
Dobra:
- to co piszę, to są fakty, a nie gdybania,
- nie zajmuję się wróżeniem z fusów,
- nigdy nie odważyłbym się oceniać umiejętności innego programisty na podst. jednego posta,
- jestem świadom tego, że niektórzy po prostu nie mogą znieść, że mam rację ;)

Niezależne obserwacje zachowania pamięci w PHP:
- http://www.blograndom.com/blog/2010/09/php-vs-python-a...
- http://athos.blogs.balabit.com/2011/02/betrayed-by-php/

Oni też się mylą? Zapewne tak...

Nie ma chyba sensu o tym rozmawiać. PHP w takiej czy innej wersji ma problemy z obsługą pamięci. Python nie. Wersje użyte wówczas przeze mnie to PHP 5.2.x i Python 2.4.x.

Bonus: każdy język (skrót myślowy) inaczej gospodaruje pamięcią - stwierdzenie, że te same dane (logicznie) nie mogą zajmować innej przestrzeni (fizycznie) w pamięci jest oznaką dość swobodnego podejścia do tematu, tak to nazwijmy. Wobec tego post, z zaznaczonym słowem "MAGICZNIE" i pytaniem o idiotów pozostawię bez odpowiedzi. Bo co musiałbym napisać? EOT.

Łukasz, problem jest innego typu. Wyrobiłeś sobie opinię na podstawie zabawy z 5.2 gdzie wiadomo, że ono nie daje się porównywać z 5.3. W moim środowisku testowym ten sam test, który wkleiłeś daje wynik ~3x niższy.

Masz zresztą nawet podany link w komentarzach do tego wpisu: http://www.php.net/manual/en/features.gc.performance-c...

Ze swojego doświadczenia powiem, że w 5.4 jest jeszcze lepiej. Język idzie w dobrym kierunku i do typowych zastosowań web przez swoją prostotę nadaje się wybitnie. Parsowanie logów 15GB+ nie jest typową czynnością i osobiście zastosowałbym tutaj wszystko, ale nie PHP.Adam Piotrowski edytował(a) ten post dnia 06.07.12 o godzinie 01:02

konto usunięte

Temat: Fabien Potencier o PHP

Adam Piotrowski:

Łukasz, problem jest innego typu. Wyrobiłeś sobie opinię na podstawie zabawy z 5.2 gdzie wiadomo, że ono nie daje się porównywać z 5.3. W moim środowisku testowym ten sam test, który wkleiłeś daje wynik ~3x niższy.

Masz zresztą nawet podany link w komentarzach do tego wpisu: http://www.php.net/manual/en/features.gc.performance-c...

Ze swojego doświadczenia powiem, że w 5.4 jest jeszcze lepiej.

Nie przeczę. Piszę tylko jak było i uważam, że Python jest bardziej wiarygodną platformą do pracy niż PHP. Moja prywatna opinia. Zarzuty postawione mi nie miały żadnego związku z przytoczonymi przeze mnie obserwacjami, a były jedynie atakami ad personam z powodu znanego tylko ich autorom.

Sam bawię się PHP 5.4 teraz, uważam że to wersja na plus, ale mimo wszystko wolę Pythona. Kwestia gustu i zaufania. (EDIT: I zastosowań.)Łukasz K. edytował(a) ten post dnia 06.07.12 o godzinie 01:23

konto usunięte

Temat: Fabien Potencier o PHP

Łukasz K.:
Adam Piotrowski:

Łukasz, problem jest innego typu. Wyrobiłeś sobie opinię na podstawie zabawy z 5.2 gdzie wiadomo, że ono nie daje się porównywać z 5.3. W moim środowisku testowym ten sam test, który wkleiłeś daje wynik ~3x niższy.

Masz zresztą nawet podany link w komentarzach do tego wpisu: http://www.php.net/manual/en/features.gc.performance-c...

Ze swojego doświadczenia powiem, że w 5.4 jest jeszcze lepiej.

Nie przeczę. Piszę tylko jak było i uważam, że Python jest bardziej wiarygodną platformą do pracy niż PHP. Moja prywatna opinia. Zarzuty postawione mi nie miały żadnego związku z przytoczonymi przeze mnie obserwacjami, a były jedynie atakami ad personam z powodu znanego tylko ich autorom.

Sam bawię się PHP 5.4 teraz, uważam że to wersja na plus, ale mimo wszystko wolę Pythona. Kwestia gustu i zaufania. (EDIT: I zastosowań.)

Tak sprawdziłem te testy. W momencie jak dorzucasz count do elementów tablicy (a w wypadku PHP $i) to zużycie w wypadku Pythona gwałtownie wzrasta. Zaraz zarzucę wyniki.

Ok, nie znam dość dobrze Pythona, pisałem w nim tylko okazyjnie więc fajnie by było jak by ktoś rzucił na to okiem:

Python:

data = []
count = 0

while (count < 10000):
data.append(['one %d' % count, 'two %d' % count, 'three %d' % count, 'four %d' % count, 'five %d' % count, 'six %d' % count])
count = count + 1


PHP:

<?php

$data = array();
for($i = 0; $i < 10000; $i++){
$data[] = array('one'.$i, 'two'.$i, 'three'.$i, 'four'.$i, 'five'.$i, 'six'.$i);
}


Wyniki:
Python 7615408 czyli ok 7.2
PHP 5.3.5 11010048 czyli ok 10.5

O ile nadal wypada to na korzyść Pythona o tyle nie jest to u diabła 10x różnica tym razem. Wszystko kwestią konfiguracji.

PS: Jak by ktoś wyłapał poprzedni post z dziwnym niskim wynikiem dla PHP :) Przypadkowo wrzuciłem $i++ w kod zapominając o for (upał) co przeskoczyło sporą ilość iteracji :| Mój błąd.

//EDIT akurat teraz nie mam pod ręką php 5.4. Ktoś może to sprawdzić ? Z tego co wiem 5.4 wprowadziło sporo ulepszeń jeżeli chodzi o zarządzanie pamięcią i wydajność. Dariusz Półtorak edytował(a) ten post dnia 06.07.12 o godzinie 10:04
Marcin Staniszczak

Marcin Staniszczak Programista Python

Temat: Fabien Potencier o PHP

Zmień na:


data = []

for count in range(1, 10000):
data.append(['one %d' % count, 'two %d' % count, 'three %d' % count, 'four %d' % count, 'five %d' % count, 'six %d' % count])


Ale to raczej niewiele zmieni jeśli chodzi o zużycie pamięci;-) Jest tylko troszkę bardziej pythonow ;-)

konto usunięte

Temat: Fabien Potencier o PHP

Marcin Staniszczak:
Ale to raczej niewiele zmieni jeśli chodzi o zużycie pamięci;-) Jest tylko troszkę bardziej pythonow ;-)
Bardziej xrange ;)
Marcin Staniszczak

Marcin Staniszczak Programista Python

Temat: Fabien Potencier o PHP

A niech będzie xrange ;-)

konto usunięte

Temat: Fabien Potencier o PHP

Marcin Staniszczak:
Zmień na:


data = []

for count in range(1, 10000):
data.append(['one %d' % count, 'two %d' % count, 'three %d' % count, 'four %d' % count, 'five %d' % count, 'six %d' % count])


Ale to raczej niewiele zmieni jeśli chodzi o zużycie pamięci;-) Jest tylko troszkę bardziej pythonow ;-)

No wyniki są niemal identyczne. Swoją drogą coś extra w postaci Node.js

var data = [];
for(i = 0; i < 10000; i++) {
data.push(['one'+i, 'two'+i, 'three'+i, 'four'+i, 'five'+i, 'six'+i]);}


Wynik:
rss: 16211968
heapTotal: 11417856
heapUsed: 5306744


//EDIT, swoją drogą ciekawi mnie jedna rzecz. Może ktoś wytłumaczy. Zainteresowałem się wartością RSS. Wg Wikipedii http://en.wikipedia.org/wiki/Resident_set_size to ilość pamięci RAM zajętej przez proces zgadza się ? No to skonstruowałem coś takiego:

Dla Node.js to samo co było z uwagi na to że rss jest podany:
console.log(util.inspect(process.memoryUsage()));


Dla Pythona
print resource.getrusage(resource.RUSAGE_SELF).ru_maxrss * 1024


Dla PHP:
exec("ps -o rss -p ".getmypid(), $output); 
echo $output[1] *1024;


I spróbowałem to dla 10000, 20000 i 50000 operacji
Node.js

10000 - 16220160
20000 - 18923520
50000 - 36773888


PHP

10000 - 33681408
20000 - 53956608
50000 - 114728960


Python

10000 - 10129408
20000 - 14974976
50000 - 29102080


// EDIT, to nie ważne, był błąd w skrypcie, podstawiłem prawidłowe wyniki
// Dziwi mnie niemal identyczna wartość dla PHP. Ktoś zna PHP // bardziej od środka by to wyjaśnić ?Dariusz Półtorak edytował(a) ten post dnia 07.07.12 o godzinie 20:54
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Fabien Potencier o PHP

Dariusz Półtorak:
Dziwi mnie niemal identyczna wartość dla PHP. Ktoś zna PHP bardziej od środka by to wyjaśnić ?
http://www.informit.com/articles/article.aspx?p=516587

konto usunięte

Temat: Fabien Potencier o PHP

Łukasz K.:
Widzę, że nie ma sensu się odzywać na tym forum, bo same bystrzaki tu siedzą. Taką wiedzą się popisujecie, że tylko załamać ręce...

:)

jestesmy glodni i mamy ostre zeby

Następna dyskusja:

Narzędzia do PHP




Wyślij zaproszenie do