![]() |
![]() |
--wNogachSpisz-- |
![]()
Post
#1
|
Goście ![]() |
Witam
Mam pytanie, który kod jest szybszy? wersja #1:
wersja #2:
Gdyby ktoś mnie spytał, bez zastanowienia odpowiedziałbym, że wersja #2, okazuje się że nie koniecznie, na platformie windows otrzymuje wynik dokładnie przeciwny. Wersja #1 jest SZYBSZA od #2, Na platformie linux wyniki testu są identyczne. Wygląda na to, że w niektórych przypadkach "!" może być równie szybkie LUB SZYBSZE od "=== false". Nie wiem w którą stronę iść chcąc optymalizować kod... Co o tym myślcie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Używaj wersji #1, bo jest czytelniejsza. Optymalizacja nie ma tutaj żadnego zastosowania, bo oba kody i tak działają szybko.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Daj sobie spokój z takim "optymalizowaniem". Optymalizacja to w małej mierze problem samego kodu, optymalizacja polega na stosowaniu jak najszybszych algorytmów, cache'owaniu wyników, unikaniu niepotrzebnych działań.
|
|
|
--wNogachSpisz-- |
![]()
Post
#4
|
Goście ![]() |
Używaj wersji #1, bo jest czytelniejsza. Optymalizacja nie ma tutaj żadnego zastosowania, bo oba kody i tak działają szybko. Nie. Będę używał szybszego sposobu. Wg mnie programowanie polega między innymi nad znalezieniem złotego środka między czytelnością kodu a jego szybkością, jestem gotów poświęcić akurat tą konkretną odrobinę czytelności na rzecz wydajności, przede wszystkim dlatego, że uważam, że 'false ===' nie jest mniej czytelne od '!' a tylko dłuższe w zapisie... Daj sobie spokój z takim "optymalizowaniem". Optymalizacja to w małej mierze problem samego kodu, optymalizacja polega na stosowaniu jak najszybszych algorytmów, cache'owaniu wyników, unikaniu niepotrzebnych działań. Nie. To o czym opowiadasz to optymalizacja na poziomie logiki aplikacji. Natomiast ja mówie o optymalizacji na poziomie składni kodu. To osobne dziedziny optymalizacji i prosze Cię drogi uzytkowniku "Mephistofeles" żebyś ich więcej nie mylił i nie mieszał... Serdecznie prosze o kolejne wypowiedzi, jak to możliwe że "!" jest szybsze od "false ===", czy optymalizator rozpozaje że negacja stoi obok fukcji jądra i nie dokonuje już przyrównania typów danych? Innej odpowiedzy nie widze.. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli różnica w wydajności "!xxx" i "xxx === false" ma dla Ciebie znaczenie to dlaczego piszesz w PHP, które samo w sobie jest wolne. A jakbyś przeglądnął sobie jego źródła i zobaczył ile tam jest zbędnych i "niewydajnych" operacji to byś się pewnie popłakał.
To co próbujesz tutaj zrobić to nawet nie jest mikrooptymalizacja... to już jest po prostu marnotrawstwo czasu, bo zyskasz 0.00000001 sek. w skrypcie który wykonuje się przykładowo 0.3 sek. - naprawdę optymalizacja tego jest właśnie potrzebna. Cytat Wg mnie programowanie polega między innymi nad znalezieniem złotego środka między czytelnością kodu a jego szybkością Nie. Programowanie to zmuszenie maszyny do zwrócenia żądanych wyników na podstawie danych wejściowych. Tyle.Cytat jestem gotów poświęcić akurat tą konkretną odrobinę czytelności na rzecz wydajności Nic tej wydajności nie zyskujesz na czymś takim.Cytat To o czym opowiadasz to optymalizacja na poziomie logiki aplikacji. Ale zdajesz sobie sprawę, że ta pierwsza odpowiedzialna jest za 99% wydajności, a druga ma takie znaczenie w tym aspekcie jak ilość kurzu na rowerze na czas przejazdu kolarza?Natomiast ja mówie o optymalizacji na poziomie składni kodu. To osobne dziedziny optymalizacji i prosze Cię drogi uzytkowniku "Mephistofeles" żebyś ich więcej nie mylił i nie mieszał... Cytat Serdecznie prosze o kolejne wypowiedzi, jak to możliwe że "!" jest szybsze od "false ==="
Taka może być różnica. Definicji wszystkich mark nie chce mi się podawać. Nie ma żadnej różnicy wartej uwagi pomiędzy oboma zapisami. A jeżeli twierdzisz, że jest to proszę podaj sposób w jaki mierzyłeś ową różnicę oraz różnicę samą w sobie. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%) ![]() ![]() |
O ile dobrze pamiętam, to najszybszą metodą na sprawdzanie czy tablica jest tablicą (podany w komentarzach na php.net i wg. właśnie tych osób przesiadujących tam) jest:
Ale nie sprawdzałem. Może ktoś się pokusi o teścik. Ten post edytował smietek 4.02.2011, 21:51:33 -------------------- |
|
|
--wNogachSpisz-- |
![]()
Post
#7
|
Goście ![]() |
Jeżeli różnica w wydajności "!xxx" i "xxx === false" ma dla Ciebie znaczenie to dlaczego piszesz w PHP, które samo w sobie jest wolne. A jakbyś przeglądnął sobie jego źródła i zobaczył ile tam jest zbędnych i "niewydajnych" operacji to byś się pewnie popłakał. Pisze w php, gdyż jest on interpretowany przez największą ilość hostingów www. Dzięki temu mam możliwość uruchomienia mojego softu na ogromnej ilości maszyn co jest absolutnie niewykonalne w przypadku każdego innego jezyka. Zadję sobie sprawę, że php jest najwolniejszy z wolnych. Fakt ten nie sprawia że optymalizacja jest bezcelowa, wręcz przeciwnie. To co próbujesz tutaj zrobić to nawet nie jest mikrooptymalizacja... to już jest po prostu marnotrawstwo czasu, bo zyskasz 0.00000001 sek. w skrypcie który wykonuje się przykładowo 0.3 sek. - naprawdę optymalizacja tego jest właśnie potrzebna. Zgadzam się, mikooptymalizacja czy nanooptymalizacja to dobry termin określający to co tutaj opisuje. Marnotractwo czasu to to nie jest, przeciwnie, każde zwiększenie szybkości programu to krok w dobrym kierunku, a ja chce kroczyć w dobrym kierunku. Nie. Programowanie to zmuszenie maszyny do zwrócenia żądanych wyników na podstawie danych wejściowych. Tyle. Doprawdy? W takim razie wszyscy powinniśmy zacząć pisać w kodzie maszynowym, albo w druga stronę, do najprostrzej operacji jak np. "print 'hello world'" includować wszystkie bibltieki PEAR. Podajesz pełna definicję programowania, ma się ona nijak do kwestii które tutaj omawiamy, czyli wyboru lepszej składni kodu. Odpuść sobie. Nic tej wydajności nie zyskujesz na czymś takim. Kwestia otwarta, zyskam? nie zyskam? ile zyskam? Ale zdajesz sobie sprawę, że ta pierwsza odpowiedzialna jest za 99% wydajności, a druga ma takie znaczenie w tym aspekcie jak ilość kurzu na rowerze na czas przejazdu kolarza? I ponownie, zajmujemy się w tym temacie kwestią optymalizacji składni, jeśli chcesz porozmawiać o błędach logicznych, zapraszam do innego topicu. Nie ma żadnej różnicy wartej uwagi pomiędzy oboma zapisami. A jeżeli twierdzisz, że jest to proszę podaj sposób w jaki mierzyłeś ową różnicę oraz różnicę samą w sobie. Jest i to znacząca na korzyść "!", co mnie dziwi bo "false ===" winno być szybsze. Za chwilkę wrzuce kod którym sprawdzam wydajność, chwilunia.... |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Marnotractwo czasu to to nie jest, przeciwnie, każde zwiększenie szybkości programu to krok w dobrym kierunku, a ja chce kroczyć w dobrym kierunku. Nie, to sztuka dla sztuki. Tracisz masę czasu który mógłbyś przeznaczyć na coś wartościowego, nie zyskujesz kompletnie nic.Cytat Doprawdy? W takim razie wszyscy powinniśmy zacząć pisać w kodzie maszynowym, albo w druga stronę, do najprostrzej operacji jak np. "print 'hello world'" includować wszystkie bibltieki PEAR. Nie wiem jak udało Ci się dojść do takich wniosków, naprawdę nie wiem.Cytat Kwestia otwarta, zyskam? nie zyskam? ile zyskam? Kwestia zamknięta. Nie zyskujesz niczego wartego uwagi.Cytat I ponownie, zajmujemy się w tym temacie kwestią optymalizacji składni, jeśli chcesz porozmawiać o błędach logicznych, zapraszam do innego topicu. O jakich Ty błędach logicznych piszesz? Optymalizacja to przede wszystkim znalezienie sposobu na zwrócenie takich samych danych w krótszym czasie czy zużywając mniej zasobów. Logika nie ma tu absolutnie nic do rzeczy...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:21 |