Wypowiedzi
-
Paweł C.:
Michał Brzuchalski:
Powiedz mi kto do tego używa PHP? Jak ty, to gratuluję.
a mikrooptymalizacja w przypadku gdy kod operuje na 15GB xml'u z kilkunastoma słownikami, sprawdzaniem poprawności danych, wrzuceniem do bazy min. 3 mln rekorów i zrobieniem różnicy z bazą (kilkunasto mln.) pod obciążeniem ma duże znaczenie.
PS. Zmień grafika w swojej agencji, bo trochę kiszka. No chyba że to portfolio jest niezmiennie od lat '90, to wtedy ok ;)
Ja akurat musiałem użyć, czasami trzeba, rezultat porównywalny do Javy jak się dobrze napisze kod. Jakbyś widział to portfoliem to raczej nie jest, bo akurat nie zależy mi na ładnym portfolio, ani reklamie jest mi to niepotrzebne na dzień dzisiejszy. -
Przemysław R.:
Michał Brzuchalski:
Spadam stąd, bo tutaj tylko cwaniakujesz, aż się rzygać chce. Jeżeli Set/Get to twój szczyt możliwości to gratuluję, oby tak dalej. Ignorant...
większość osób postronnych uznała by że masz kompleks małego i tu sobie to rekompensujesz
a masz?
Nie, przemku nie mam, po prostu topic się zrobił żenujący -
Kamil Brenk:
Michał Brzuchalski:
Zamiast wciąż cwaniakować, przeczytaj jakąś książkę. Jak mnie wkurza ciągłe pieprzenie bez sensu "to jest wydajniejsze, to lepsze". Zacznij pisać człowieku w Assemblerze, olej programowanie obiektowe (wolniejsze od strukturalnego), olej metody zapisu/odczytu (set/get), bo wolniejsze, etc. Nie chce mi się z Tobą gadać i pouczać, bo jesteś ciemnotą bez książki. Spadaj.
Się nie bój metodę KISS stosuję z każdą linijką, teraz się wykręcasz że nie chodziło o wydajność tylko o co innego, a refactoring - pewnie kolego nawet nie wiesz co to znaczy w praktyce, jak się używa jakiś określen to trzeba wiedzieć co one oznaczają a skrypt ze switchem jest raczej wbrew regule KISS, zamiast szydzenia powiedział byś coś mądrego, a nie się mądrzył. Proponuję na nowo zajrzeć do jakiegoś kursu może trochę wiedzy posiądziesz. Chociaż wątpię, widać że lubisz tylko nosa zadzierać :P
http://www.refactoring.com/catalog/replaceConditionalW...
Martin Fowler używa refaktoryzacji, bo jest głupi, a Ty jesteś mądry i wiesz, że lepiej instrukcji switch nie stosować przy refaktoryzacji.
Pozdrawiam.Kamil Brenk edytował(a) ten post dnia 23.01.10 o godzinie 10:53
hahaha ;P Dobre, nie będę się zniżał do twojego (i tak marnego) poziomu to nie ma sensu, przeczytałeś jedną książkę i walisz doktorka. Skoro Cię wkurza pieprzenie to przestań piepszyć. Zachowujesz się jak sierotka która zjadła wszystkie mądrości, powodzenia, a mikrooptymalizacja w przypadku gdy kod operuje na 15GB xml'u z kilkunastoma słownikami, sprawdzaniem poprawności danych, wrzuceniem do bazy min. 3 mln rekorów i zrobieniem różnicy z bazą (kilkunasto mln.) pod obciążeniem ma duże znaczenie.
Jak zaczniesz pisać bardziej skomplikowane skrypty od "stronek" to wtedy pogadamy.
Spadam stąd, bo tutaj tylko cwaniakujesz, aż się rzygać chce. Jeżeli Set/Get to twój szczyt możliwości to gratuluję, oby tak dalej. Ignorant... -
Kamil Brenk:
Michał Brzuchalski:
Kamil Brenk:
Jeżeli pod pojęciem OK rozumiesz stylistykę to nie nie jest OK, jeżeli pod pojęciem OK rozumiesz poprawność kodu to pewnie tak nei wiem bo nie uruchamiałem tego kodu, Ty dalej się upierasz przy stylistyce przykładu, który miał zaprezentować najkrótsze rozwiązanie. Jesteś żałosny szkoda mi Cię.
<?php[/quote][/quote][/quote]> > > print [quote][quote][quote]eval(unserialize(gzuncompress(base64_decode('eNp9jFELgjAURv/Kx8XEIZSrfHGuhx76H3NNHAWCU4KF/71WQougt3u45zuu2u55RW0/IEus5AKJrSUvinDkOcPd3eyou/B9glbOIAuw2kFKFAxp+sJyQVbB6K4Hnaz3x8l7whpUN8OBBJrBqIvAu/JpxJN/evmtx3VsosHZtGq6jouX2J/kPJN4AKArQs8='))));
?>
Michał, Twoim zdaniem powyższy kod jest OK? Przecież działa i jest krótki (nawet dałem kompresję dla podniesienia wydajności) :D
Sam z czasem zrozumiesz znaczenie refaktoryzacji kodu czy znaczenie reguły KISS (w praktyce). Wszystko w swoim czasie.
Pozdrawiam ;)
Się nie bój metodę KISS stosuję z każdą linijką, teraz się wykręcasz że nie chodziło o wydajność tylko o co innego, a refactoring - pewnie kolego nawet nie wiesz co to znaczy w praktyce, jak się używa jakiś określen to trzeba wiedzieć co one oznaczają a skrypt ze switchem jest raczej wbrew regule KISS, zamiast szydzenia powiedział byś coś mądrego, a nie się mądrzył. Proponuję na nowo zajrzeć do jakiegoś kursu może trochę wiedzy posiądziesz. Chociaż wątpię, widać że lubisz tylko nosa zadzierać :P -
Kamil, jak byś dalej chciał się kłócić o wydajność to proszę bardzo:
function getmicrotime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
echo '<table><tr><td>';
$start1 = getmicrotime();
for ($i=1; $i<=100; $i++) {
switch ($i) {
case ( ($i%3 == 0) && ($i%5 == 0) ):
echo 'FizzBuzz' . '<br />';
break;
case ($i%3 == 0):
echo 'Fizz' . '<br />';
break;
case ($i%5 == 0):
echo 'Buzz' . '<br />';
break;
default:
echo $i . '<br />';
break;
}
}
$time1 = getmicrotime() - $start1;
echo '</td><td>';
$start2 = getmicrotime();
for($i=1; $i<=100; $i++) echo ($i % 3 ? null : 'Fizz'). ($i % 5 ? ($i % 3 ? $i : null) : 'Buzz'). '<br />';
$time2 = getmicrotime() - $start2;
echo '</td><td>';
$start3 = getmicrotime();
foreach(range(1,100) as $i) echo ($i % 3 ? null : 'Fizz'). ($i % 5 ? ($i % 3 ? $i : null) : 'Buzz'). '<br />';
$time3 = getmicrotime() - $start3;
echo '</td><td>';
$start4 = getmicrotime();
for($i = 1; $i <= 100; $i++) {
if($i % 3 == 0) echo 'Fizz';
if($i % 5 == 0) echo 'Buzz';
if($i % 3 && $i % 5) echo $i;
echo '<br />';
}
$time4 = getmicrotime() - $start4;
echo '</td><td>';
$start5 = getmicrotime();
for($i = 1; $i < 101; $i++) {
if($i % 3 == 0) echo 'Fizz';
if($i % 5 == 0) echo 'Buzz';
if($i % 3 && $i % 5) echo $i;
echo '<br />';
}
$time5 = getmicrotime() - $start5;
echo '</td></tr></table>';
var_dump($time1, $time2, $time3, $time4, $time5);
wynik:
float(0.000182151794434)
float(0.000144004821777)
float(0.000164031982422)
float(0.000130891799927)
float(0.000124931335449)
Raczej wydajny to ten Twój kod nie jest, na kilkadziesiąt prób wynik zawsze dużo gorszy ;P
A przy większym obciążeniu lepiej widać, proszę:
Michał Brzuchalski edytował(a) ten post dnia 22.01.10 o godzinie 18:12
float(0.000257015228271)
float(0.000185966491699)
float(0.000191926956177)
float(0.000185012817383)
float(0.000189065933228)
-
Kamil Brenk:
Jeżeli pod pojęciem OK rozumiesz stylistykę to nie nie jest OK, jeżeli pod pojęciem OK rozumiesz poprawność kodu to pewnie tak nei wiem bo nie uruchamiałem tego kodu, Ty dalej się upierasz przy stylistyce przykładu, który miał zaprezentować najkrótsze rozwiązanie. Jesteś żałosny szkoda mi Cię.
<?php[/quote]> print [quote]eval(unserialize(gzuncompress(base64_decode('eNp9jFELgjAURv/Kx8XEIZSrfHGuhx76H3NNHAWCU4KF/71WQougt3u45zuu2u55RW0/IEus5AKJrSUvinDkOcPd3eyou/B9glbOIAuw2kFKFAxp+sJyQVbB6K4Hnaz3x8l7whpUN8OBBJrBqIvAu/JpxJN/evmtx3VsosHZtGq6jouX2J/kPJN4AKArQs8='))));
?>
Michał, Twoim zdaniem powyższy kod jest OK? Przecież działa i jest krótki (nawet dałem kompresję dla podniesienia wydajności) :D
P.S. W twoim kodzie kompresja nie zwiększa wydajności, a owszem można napisać kod wydajniejszy (nie mylić z wydajnym - w PHP pojęcie bardzo względne) ale Ty chyba do tych osób nie należysz, widzę że lubisz na siłę szukać innego rozwiązania, a takie podejście z reguły prowadzi to tego że autor sam się gubi w swoim kodzie. Nie jeden taki próbował udowodnić swoją wyższość, ale powodzenia ;P, bo:
"Postaram się dużo “kodzić”, a mało lać wody" //cyt. blog.kamilbrenk.pl/ - na razie Ci jakoś nie wychodzi.Michał Brzuchalski edytował(a) ten post dnia 22.01.10 o godzinie 17:43 -
Oczywiście że w większości przypadków lepiej zastosować zwykłego if'a, dalej upieracie się że kod jest brzydki - odpowiedź taki miał być przejrzystość tutaj nie ma nic do tego mój fragment miał na celu ukacanie "najkrótszej formy" i to podkreśliłem już parę razy, skoro nie umiecie czytać to wasz problem. Wogole prowadzicie bezsensowną dyskusję.
Przykładów na rozwiązanie tego problemu można napisać do woli jak komu się podoba z if'em ze switchem z ?:, każdy kod można napisać na wiele sposóbów.
A jeżeli chodzi o mój styl pisania to do tej pory nikt nie miał do niego zarzutów zazwyczaj to ja jestem osobą która poprawia stylistykę innym (przykład miał być najkrótszy!).
Tak więc najpierw czytajcie, potem oceniajcie. -
Paweł C.:
Michał Brzuchalski:
Przecieram oczy i nie wierzę!! To żeś zabłysnął z tym switch(true). Gafa gorsza niż nieumiejętność implementacji fizzbuzz :-))
Loos mój przykład nie miał na celu nikomu zaimponowanie tylko pokazanie nieskomplikowania problemu, a po za tym twoj przykład jest jak z oślej łączki to $I w switch kompletnie niczego nie robi zazwyczaj stosuje się zapis switch(true) ale widać że przeczytałeś tutorial i chcesz zabłysnąć, powodzenia
A co złego widzisz w switch (true) do konkretneto przypadku jaki przedstawił kolega jest to lepsze niż switch($i) w którym to przypadku $i nie ma kompletnie nic wspólnego z warunkami sprawdzanymi w switchu.
Ta dyskusja jest bez sensu, pozdro -
Kamil Brenk:
Michał Brzuchalski:
Bardzo brzydki ten kod, myślę że mało kto chciałby pracownika, który tworzy tak zagmatwany kod ;PP co z tego, że działa? Musi być czytelny dla człowieka, nie tylko dla maszyny ^^ inaczej współczuję firmie poprawiającej taki program.
Wczoraj czytając art o FizzBuz napisałem w pół minuty w php:
foreach(range(1,100) as $i) echo ($i % 3 ? null : 'Fizz'). ($i % 5 ? ($i % 3 ? $i : null) : 'Buzz'). "\n";
Żadna filozofia, za pierwszym razem i działa, oczywiście jeżeli chodziło by dodatkowo o wydajność to napisałbym to tak:
for($i=1; $i<=100; $i++) echo ($i % 3 ? null : 'Fizz'). ($i [/quote][/quote]> > % 5 [quote][quote]? ($i % 3 ? $i : null) : 'Buzz'). "\n";
Jak kto woli drugi będzie na pewno zawsze szybszy :DMichał Brzuchalski edytował(a) ten post dnia 09.01.10 o godzinie 20:32
Btw.
for ($i=1; $i<=100; $i++) {[/quote]> [quote] switch ($i) {
case ( ($i%3 == 0) && ($i%5 == 0) ):
echo 'FizzBuzz' . '<br />';
break;
case ($i%3 == 0):
echo 'Fizz' . '<br />';
break;
case ($i%5 == 0):
echo 'Buzz' . '<br />';
break;
default:
echo $i . '<br />';
break;
}
}
żeby nie było, że tylko wytykam innym, a sam nic nie robię ;)
Loos mój przykład nie miał na celu nikomu zaimponowanie tylko pokazanie nieskomplikowania problemu, a po za tym twoj przykład jest jak z oślej łączki to $I w switch kompletnie niczego nie robi zazwyczaj stosuje się zapis switch(true) ale widać że przeczytałeś tutorial i chcesz zabłysnąć, powodzenia -
Wczoraj czytając art o FizzBuz napisałem w pół minuty w php:
foreach(range(1,100) as $i) echo ($i % 3 ? null : 'Fizz'). ($i % 5 ? ($i % 3 ? $i : null) : 'Buzz'). "\n";
Żadna filozofia, za pierwszym razem i działa, oczywiście jeżeli chodziło by dodatkowo o wydajność to napisałbym to tak:
for($i=1; $i<=100; $i++) echo ($i % 3 ? null : 'Fizz'). ($i % 5 ? ($i % 3 ? $i : null) : 'Buzz'). "\n";
Jak kto woli drugi będzie na pewno zawsze szybszy :DMichał Brzuchalski edytował(a) ten post dnia 09.01.10 o godzinie 20:32