![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 9 Dołączył: 23.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam pewne pytanie .
Czy kod napisany obiektowo jest wolniejszy do napisanego standardowo ? Nie chodzi mi o szybkość pisania takiego kodu tylko o to który typ jest bardziej wydajniejszy (czyt. szybciej się ładuje itp.) . Bo spotkałem się z opinią że kod napisany obiektowo jest mniej wydajny niż kod napisany w normalny tradycyjny sposób. Czy to prawda ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W 99% przypadków tak. Ale różnice w przeciętnych zastosowaniach są bardzo małe - praktycznie niezauważalne. Jest to mała cena jaką się płaci za lepszą strukturę kodu.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Czasami nawet i duża...
Gdy mamy np. zbieranie 50 różnych danych o użytkowniku na jednej stronie to obiektowo robimy 50 zapytań, a normalnie to jedno zapytanie i wszystkie wyniki są w tablicy. Dziękuję, Babcia@Stefa |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czasami nawet i duża... Gdy mamy np. zbieranie 50 różnych danych o użytkowniku na jednej stronie to obiektowo robimy 50 zapytań, a normalnie to jedno zapytanie i wszystkie wyniki są w tablicy. Ciekawe. Jak masz dobrze zaprojektowaną bazę i relacje to da się mniejszą ilością. Jak kiepsko napiszesz strukturalnie to też możesz 50 wydać.. Gdyby programowanie obiektowe było dużo wolniejsze to ludzie nadal pisaliby strukturalnie.. (...)Ale różnice w przeciętnych zastosowaniach są bardzo małe - praktycznie niezauważalne. Co masz na myśli pisząc w "przeciętnych zastosowaniach" ? |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kod obiektowy jest wolniejszy.
Czy dużo? To zależy. To zależy od tego jaki to jest kod i jak napisany. W rzeczywistości to spowolnienie nie jest duże. Ma ono jest nawet mniejsze niż małe. Nie mniej jednak szybkość jest tylko jednym z czynników wyboru stylu kodowania. OOP ma tyle zalet, że to spowolnienie jest czymś co można przyjąć bez problemu. Gdy mamy np. zbieranie 50 różnych danych o użytkowniku na jednej stronie to obiektowo robimy 50 zapytań, a normalnie to jedno zapytanie i wszystkie wyniki są w tablicy. Nie wygaduj takich bzdur bo ludzie zaczną powtarzać. Przez taki bełkot rośnie niewiedza ludzka. |
|
|
![]()
Post
#6
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
w takiej sytuacji podaję zawsze pewien przykład.
Parę lat temu był konkurs gdzieś tam za oceanem, na napisanie skryptu w php, wykonującego pewne operacje symulujące sortowanie kart czy coś w tym stylu. Zainteresowanie konkursem było duże, nagroda za kilkaset $, a wygrał ją człowiek z polski (bodajże carget - choć nie bijcie, jeśli pomyliłem ksywę - ostatnio robię to nagminnie) Założeniem było to, że praca miała wykonać określone zadanie i miała być jak najszybsza. Prace były bardzo różne. Niektórzy posuwali się nawet do tego, że usuwali spacje i komentarze z kodu, po to by ten działał szybciej. (O skracaniu nazw zmiennych i funkcji nawet nie wspominając.) Oczywiście większość osób, z uwagi na to, że przecież kluczowym kryterium była prędkość, pisała strukturalnie. Nasz Polak wygrał ten konkurs kodem w pełni obiektowym, świetnie skomentowanym, sformatowanym i z u standaryzowanymi nazwami zmiennych i funkcji. Na dodatek jego kod był od kliku do kilkudziesięciu razy szybszy niż większość oddanych prac. Dlaczego? Bo pisząc obiektowo mógł skupiać się na budowie algorytmu działania tego mechanizmu, a nie martwić się strukturą kodu. Wtedy byłem w szoku. Teraz nie wyobrażam sobie kodowania strukturalnego... (i dlatego np. nie chciałbym zajmować się programowaniem driverów albo układów scalonych, gdzie niestety - kod prawie zawsze musi być strukturalny) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Co masz na myśli pisząc w "przeciętnych zastosowaniach" ? Przeciętny projekt to taki nie za duży nie za mały :-) A tak na serio - jeśli system aukcyjny to jest to przeciętny projekt - jeśli robisz to samo ale dla Allegro (zakładając taką a taką liczbę userów itp, skomplikowanie itp.) wtedy jest to projekt "nieprzeciętny". W takim wypadku dobrze napisany kod strukturalny byłby prawdopodobnie szybszy niż obiektowy - tylko to jest przypadek podobny do tego co napisał DeyV czyli prawdopodobnie w praktyce kod obiektowy byłby szybszy bo byłby bardziej przemyślany. Innymi słowy - kod obiektowy jest wolniejszy bo ma narzuty na tworzenie obiektów, ale z drugiej strony jest bardziej "poukładany" przez co nadrabia. IMHO na szybkość kodu wpływa bardzo wiele czynników przy czym różnica w szybkości kodu strukturalnego i obiektowego jest jednym z najmniej ważnych. Babcia@Stefa - jeśli wykonujesz 50 operacji na bazie pisząc obiektowo o 1 pisząc strukturalnie to znaczy, że coś źle zrozumiałeś jeśli chodzi o OOP. Pisałem kiedyś sklep internetowy - jedna strona z prezentacja produktów + menu + kila bajerów powodowała wywołanie 40-50 zapytań. Działo się tak dlatego, że produkty pochodziły z różnych kategorii, miały rodzaje cech i ich ilości itd itp. Wtedy nie potrafiłem zaprojektować tego systemu poprawnie. Miałem mnóstwo obiektów, różnych tabel itd itp. Wtedy dopiero zaczynałem swoją zabawę z programowaniem. Teraz po pół roku przepisuje ten kod, gdyż nauczyłem się kilku nowych rzeczy takich jak w miarę poprawne konstruowanie baz danych, korzystanie z dziedziczenia, kompozycji, kolekcji, fabryk itp itd. Strona realizująca dokładnie te same zadania czyli wyświetlająca wielopoziomowe menu, produkty, koszyk + więcej bajerów wywoła około 4-6 zapytań. Obiektowość nie ma nic do rzeczy jeśli chodzi o ilość wywoływanych zapytań. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 9 Dołączył: 23.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czyli reasumując wasze wypowiedzi lepiej pisać obiektowo niż strukturalnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Reasumując to zależy co piszesz - im coś jest bardziej "wysokopoziomowe" i złożone tym więcej korzyści odnosisz pisząc obiektowo.
|
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie to na prędkości najbardziej tracą chyba projekty pisane w językach kompilowanych. Dla języków interpretowanych to tylko kwestia dodatkowe listy przechowującej obiekty, albo coś w tym stylu. W językach kompilowanych to już zupełnie inna sprawa, bo tam trzeba niektóre operacje zaimplementować, które w odróżnienieniu do swoich strukturalnych odpowiedników są dużo bardziej skomplikowane a przez to wolniejsze.
Dlatego jeżeli zależy Ci na szybkości w C/C++ to pomyśl, którego z tych języków użyć, w php możesz pisać tak jak chcesz. A tak poza tym pisanie o prędkości aplikacji pisanych w php to już w ogóle troszkę przegięcie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 0 Dołączył: 15.01.2007 Ostrzeżenie: (60%) ![]() ![]() |
KOD NAPISANY OBIEKTOWO JEST WOLNIEJSZY NIZ NAPISANY STRUKTURALNIE.
Jedna krótka odpowiedź. |
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
KOD NAPISANY OBIEKTOWO JEST WOLNIEJSZY NIZ NAPISANY STRUKTURALNIE. Jedna krótka odpowiedź. Twoje argumenty są imponujące. Proszę Cię jeśli masz pisać głupoty rób to gdzie indziej ok ? Bo mnie jak i resztę Twoje bezsensowne wypowiedzi już nudzą. Przepraszam za OT. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 0 Dołączył: 15.01.2007 Ostrzeżenie: (60%) ![]() ![]() |
Cóż żeby wytłumaczyć co jest szybsze musialbym dac jakies przyklady.
A to naprawde sporo energii by mi zajelo, i jak sie domyslam nasz pytajacy ma nikle pojecie o takim progrmaowaniu poniewaz zadaje podstawowe pytania. Gdyby na commodore uzywali obiektowych jezykow to wypisanie hello world trwalo by tyle co wgranie gry bez turbo abc (albo black boxa) :F Ten post edytował Kisiol_Ent 15.02.2007, 01:22:14 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 9 Dołączył: 23.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cóż żeby wytłumaczyć co jest szybsze musialbym dac jakies przyklady. A to naprawde sporo energii by mi zajelo, i jak sie domyslam nasz pytajacy ma nikle pojecie o takim progrmaowaniu poniewaz zadaje podstawowe pytania. Gdyby na commodore uzywali obiektowych jezykow to wypisanie hello world trwalo by tyle co wgranie gry bez turbo abc (albo black boxa) :F Hmmm... z tego co widze to większość odpowiedzi które uzyskałem są sprzeczne z twoim zdaniem. To po 1 . Po 2 co ma commodore do php? Po 3 jak szkoda Ci energii to po co w ogóle piszesz posty? Mógłbyś sobie darować bo i tak są bez sensu. Po 4 nie podważaj mojej wiedzy jeśli mnie w ogóle nie znasz. BTW. Sorry za ot ale nie mogłem się powstrzymać (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 0 Dołączył: 15.01.2007 Ostrzeżenie: (60%) ![]() ![]() |
Po 2 co ma commodore do php? A sorry... myslalem ze chodzi tu ogolnie o programowanie obiektowe... a nie o jakis php ktory tak naprawd niejest prawdziwym jezykiem progrmaowania tlyko jakims skryptowym niewiadomo czym. A te testy ktore przeprowadzil kolega powyzej to sa bez sensu totalnie... Co za roznica cz wywolanie fukncji samodzielnej czy umieszcoznej w klasie? Chcial pokazac ze niema roznicy... no na pewno na takim przykladzie niebedzie roznicy bo jest totalnie bezsensowy. I nieukazuje roznic miedzy tymi dwoma rodzajami programowania. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
@Kisiol_Ent: niech Ci będzie, że jednak napiszę kilka słów wyjaśnienia.
Wykonywanie programu napisanego obiektowo będzie zawsze nieco wolniejsze od proceduralnego. Pewien narzut, który właśnie pokazałem w teście powyżej, a którego nie zaszczyciłeś swoją uwagą w stopniu większym niż minimalny, zawsze istnieje, i nie da się tego uniknąć. Nie zmienia to faktu, że w zależności od stopnia skomplikowania aplikacji, ten narzut maleje, by w pewnym momencie stać się niezuważalnym. Do tego dochodzą także względy ekonomiczne tworzenia, a później konserwacji programu, które przy odpowiednim kodzie obiektowym będą nieco mniejsze niż przy strukturalnym (i tak, wiem, że są różne wyjątki działające w różne strony, ale odnośnie php generalnei jest tak jak napisałem). |
|
|
![]()
Post
#18
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat A sorry... myslalem ze chodzi tu ogolnie o programowanie obiektowe... a nie o jakis php ktory tak naprawd niejest prawdziwym jezykiem progrmaowania tlyko jakims skryptowym niewiadomo czym. Kisiol_Ent: to po co tracisz czas na php? I nie porownoj OOP z php bo to zupelnie inne dziedziny (tak jak drifting a prosche) Cytat A te testy ktore przeprowadzil kolega powyzej to sa bez sensu totalnie... Za to ty przedstawiles rzeczywiscie mocne argumenty za swoja teza: Cytat Cóż żeby wytłumaczyć co jest szybsze musialbym dac jakies przyklady. I o to chodzi, zeby napisac ten sam system na dwa sposoby OO i strukturalnie. Prosty nie, 'bo za prosty', skomplikowany nie, bo kto sie podejmie napisac go strukturalnie. OOP zostalo wymyslone zeby ulatwic pisanie skomplikowanych systemow (podzial na moduly, odpowiedzialnosc obiektow itd) Cytat Gdyby na commodore uzywali obiektowych jezykow to wypisanie hello world trwalo by tyle co wgranie gry bez turbo abc (albo black boxa) :F Cytat A te testy ktore przeprowadzil kolega powyzej to sa bez sensu totalnie... A to czemu, pokazal ze HelloWorl w obiektowym zapisie nie jest wcale tak masakrycznie wolny. |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 28.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Moglby mi ktos wytlumaczyc (najlepiej na przykladzie) dlaczego lepiej (jesli tak) programowac obiektowo? Bo mi sie wydaje, ze to wolniejsze i mniej przejrzyste i dluzsze w pisaniu (byc moze dlatego, ze mam inne przyzwyczajenia)... Pozdrawiam Pan o nicku "nospor" zamknal ten temat, podajac jedynie link do tego tematu, tak wiec chyba tu mam kontynuowac. Ok, juz wiem, ze programowanie obiektowe jest nieznacznie wolniejsze, ale nadal nie widze plusow takiego programowania. Czy moglby ktos podac jakis przyklad, aby wytlumaczyc mi dlaczego warto programowac obiektowo? |
|
|
![]()
Post
#20
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Cytat OOP zostalo wymyslone zeby ulatwic pisanie skomplikowanych systemow (podzial na moduly, odpowiedzialnosc obiektow itd) OOP - lepsza organizacja, lepsza orientacja w kodzie, wygoda etc. etc .etc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:42 |