![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie
Chciałbym udostępnić autorski system framework, który teoretycznie (hmm, nawet praktycznie) kładzie inne systemy. Wykonałem prosty test na surówkach dwóch frameworków. Konfig domyślny i bez połączenia z bazą danych. Zwykłe wyświetlenie tekstu "Hello world!". Bez wykorzystania eAccelerator'a CodeIgniter: [0.011924028396606] 1 mb Yii: [0.050626039505005] 5 mb Autorski: [0.005169153213501] 768 kb System jest okrojony i pozbawiony śmieci takich jak generatory do tworzenia formularzy czy też tworzenie zapytań SQL. Tworzony był dla szybkiego stawiania serwisów (wiele stron korzystało i korzysta z tego systemu), dlatego nie ma wzorca projektowego MVC, lecz autorski model CCV (Controller - Component - View) dzięki któremu osiąga takie wyniki (ale czepiając się innych frameworków zasada działania jest bardzo zbliżona). Ładowarka klas Singleton i Router nieszablonowego wywoływania kontrolerów. Yii czy CI nie powinien ładować bibliotek, których nie potrzebuje aktualnie więc co o tym sądzicie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tylko tyle? I ze niby ma kłaść narzędzia dla programistów i web developerów na kolana? Udostepnic zawsze mozesz, frontendowcom moze sie przydac, ale dla powaznych programistow raczej to nie pomoze.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cyferki to i Ja Ci mogę pokazać. Mogę Ci nawet powiedzieć że Moje rozwiązanie kładzie Twoje na łopatki.
Chcesz to udostępniaj i wtedy chwal się wynikami "benchmarków", jak nie to nie. Co mamy Ci powiedzieć? Rozwiązać dylemat typu: "Kanapka z chlebem czy bułką?" |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) ![]() ![]() |
Napisałeś jakieś testy do niego? (TDD, BDD), jeżeli tak to jakie masz pokrycie testami? Pytam bo to jest kolejny aspekt często pomijany przez amatorów (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Testowanie szybkości frameworka poprzez `echo "Hello world"`. Czasami zwyczajnie nie potrafię sobie wyobrazić rzeczy, które mogłyby mnie tak zaskoczyć (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi tylko o wyrażenie opinii na ten temat (IMG:style_emoticons/default/biggrin.gif)
Cytat Cyferki to i Ja Ci mogę pokazać. Mogę Ci nawet powiedzieć że Moje rozwiązanie kładzie Twoje na łopatki. Chcesz to udostępniaj i wtedy chwal się wynikami "benchmarków", jak nie to nie. Co mamy Ci powiedzieć? Rozwiązać dylemat typu: "Kanapka z chlebem czy bułką?" Jeśli masz problem z czytaniem ze zrozumieniem to współczuję, jak wyraźnie napisałem "prosty test", który już coś wnosi. Co z tego, że może masz lepsze rozwiązanie? Skąd wiesz, że akurat do tego będzie pasować? A na siłę nie zmuszam żeby sobie robił bułkę z chlebem, to jego decyzja. Cytat dla powaznych programistow raczej to nie pomoze masz jakieś ogólne zasady poważnych programistów? Jak zwykle na tym forum chamstwo jakiego nie mało... Jeden przez drugiego chce pokazać tylko kto go bardziej zjedzie, lepiej? Ale cóż taki polak cebulak... Może moim błędem było napisanie tego tematu dla niepoważnego społeczeństwa? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak zwykle na tym forum chamstwo jakiego nie mało... Jeden przez drugiego chce pokazać tylko kto go bardziej zjedzie, lepiej? Ale cóż taki polak cebulak... Może moim błędem było napisanie tego tematu dla niepoważnego społeczeństwa? A może zamiast się obrażać to przyjmij krytyke i pokaż coś więcej. Masz testy do tego? Mówisz, że korzysta z czystym zapytań sql, podczas gdy ORM bardzo ułatwia pracę. Ten twój prosty test nie wiele mówi (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Forti
Krytyka czasem jest taka, że czasem trzeba się bronić... ORM może i ułatwia pracę, ale stawiam tylko na optymalizację a nie na ułatwienie pracy. Prostym przykładem może być zapytanie "SELECT * FROM t1 LEFT OUTER JOIN t2 ON(t1.p1=t2.p2)", zajmuje Ci to napisanie pare sekund. Facebook korzysta z ORM? Google korzysta z innych tego typu rzeczy, które spowaniają pracę całego serwisu? Przy dużym ruchu te milisekundy robią różnicę a chcąc ograniczać koszty związane z administracją serwerami (loadbalancer, cały cluster a może nawet i chmura) lepiej się zastanowić nad lepszymi rozwiązaniami a nie stawiać na tą wygodę pracy, która po dłuższym użytkowaniu serwisu staję się wolniejszy dodając czynnik wzrostu bazy danych gdzie nawet relacje i partycjonowanie nie pomaga. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 6 Dołączył: 19.12.2010 Skąd: Krzyżanowice Ostrzeżenie: (0%) ![]() ![]() |
Za mnie framework ma robić 3 rzeczy:
1. bezpieczeństwo 2. obsługa bazy (zamiast rzeźbić w sql niech to będzie chociaż select składany jak w Zend czy fluent ORM jak w Laravel) 3. obsługa frontendu (całe te walidacje, formatowanie, przerzucanie z formularza do bazy i z powrotem, NUDA) Ponieważ Twój nie robi 2 i 3, dla mnie - nieprzydatny. Testy wydajnościowe obchodzą mnie coraz mniej - najwyżej się dorzuci jeszcze jeden procesor, to nie to co 20 lat temu. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
@matrik trochę więcej samokrytycyzmu. Co z tego że mówisz że masz superzajebisteochahhehhrozwiązanienaframweork które pokazuje debilny ihmo test "hello World" (ten sam test na Phalconie wykoona się dużo szybciej niż twoje rozwiązania więc jakie tu porównania). Takie testy nie pokazują zupełnie żadnej wiedzy nt. wydajności frameworka. Ot ile pamięci zajmuje czysty system. Koniec wiedzy.
W benchmarku FW trzeba by było postawić coś bardziej skomplikowanego, coś do da lepszy obraz niż głupie wyświetlenie tekstu. Wiadomo że jedne zrobią tak, inne tak. Co do Twojego autorskiego rozwiązania... Hmm.. dopóki nie pokażesz jakiegoś kodu i super rozwiązań śmiem twierdzić że nie nada się to do niczego bo: - jest/może być dziurawe jak ser - wydajność jest super ale tylko na poziomie Hello World - brakuje testów jesdnostkowych - stworzenie czegoś bardziej skomplikowanego będzie wymagało 20x większego nakładu pracy, sił - itd. itd. itd. To są tylko moje spekulacje i domysłu bo tylko tyle można wywnioskować na podstawie Twojego "ogłoszenia" |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wydajność może być super, bez żadnych libów, nakładek etc ta wydajność też będzie super. Ale wtedy dochodzi kwestia jak szybko za pomocą takiego "frameworka" stworze coś. Jeżeli powiedzmy za pomocą laravela wygeneruje jakiegoś prostego cruda w 2 minuty, a z twoim rozwiązaniem to będzie ponad godzina. To pracodawca wówczas woli dołożyć ramu, czy procka, niż opóźniać prace nad projektem.
Taki slim czy jemu podobne micro frameworki, też osiągają mega wydajność, co z tego skoro w niewielu rzeczach mi pomagają? Modele musisz tworzyć samemu od podstaw, walidacje tak samo. Można powiedzieć że do twojego FW można dołożyć jakieś modele, jakieś walidatory, tyle że wtedy ta wydajność będzie zbliżona do innych już istniejących FW, które będą bardziej popularne niż twoje rozwiązanie, będą miały pokrycie testami, będą miały aktywnie pracującą nad tym społeczność etc. To jest jak z kernelem linuxa. Nie jest on idealny, bo można go tu i ówdzie zoptymalizować pod konkretne rozwiązanie. Tyle że czas jaki się przekłada na taką optymalizacje jest dużo bardziej kosztowny, niż te 500kb pamięci ram, czy 10 cykli procesora. Kiedyś miałem zapały na swojego FW, wydawało mi się że mogę pewne rzeczy zrobić lepiej, koniec końców, dość szybko wycofałem się z tego zdania i teraz raczej wolę coś tworzyć z gotowych, dobrze udokumentowanych frameworków, niż na siłę skupiać się nad swoim rozwiązaniem.. Tak czy inaczej, pokaż swój kod, wrzuć go gdzieś na githuba, czy innego bitbucketa. PS. źle odebrałeś słowa krytyki, zamiast zapytać się skąd taka krytyka, od razu strzeliłeś focha. Przyzwyczaj się do tego że ktoś kto już powtarzał 10 osobą przed tobą, z takim samym podejściem (napisze fw lepiej niż wszyscy inni!) może nie mieć już cierpliwości do kolejnego narwańca. Ale z drugiej strony masz rację, że mimo wszystko trzeba jakąś kulturę osobistą zachować. Bo bez tego jesteśmy zwykłymi małpami stukającymi w guziki. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 272 Pomógł: 28 Dołączył: 13.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Yet another PHP framework... Jeśli dla Twoich zastosowań robi robotę to chwała, ale lepiej po prostu zachowaj go dla siebie, bo juniorowi nie wytłumaczysz dlaczego ORM jest zły, po prostu nie wytłumaczysz... (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o "Hello World!" to specjalnie tak zrobiłem, żeby przedstawić ile na starcie wszystkiego się wykonuje.
Co do dziur to przez 4 lata nie miałem żadnej takiej akcji, wystarczy nie korzystać ze zmiennych get/post/request bezposrednio tylko przez filtr i nie ma sera Skomplikowane rzeczy są różne, wszystko zależy od sposobu ich wykonania i dobrego zorganizowania by uzyskać pożądany rezultat. Dla jednych logowanie to udręka a dla innych to codzienność. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@matrik, jeżeli tak bardzo Ci zależy na milisekundach pomijając zupełnie użytecznośc, wygodę, czytelność, zużycie procesora i tysiąc innych rzeczy to proponuję zacząć pisać strony w Assembly
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
14 postów w temacie, a Wy rozmawiacie o czymś co istnieje tylko w głowie jego twórcy... Już wiem, czemu tak rzadko zaglądam na to forum...
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ojj tam @!*! Trzeba jakoś dzień odreagować (IMG:style_emoticons/default/wink.gif) Na piwo za wcześnie, na seks nie ma czasu to chociaż trzeba sobie pomagać (IMG:style_emoticons/default/haha.gif)
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
14 postów w temacie, a Wy rozmawiacie o czymś co istnieje tylko w głowie jego twórcy... Już wiem, czemu tak rzadko zaglądam na to forum... Nie no, chyba coś tam jednak istnieje, bo jakieś testy jednostkowe były. Wracając do tematu - udostępnij jakiś fragment kodu, pokaż jakieś unikalne rozwiązanie z którego jesteś szczególnie dumny. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem co z tym... Wrzuciłem:
smarty (wiem, że ostry hejt na to leci ale spełnia swoja rolę (IMG:style_emoticons/default/biggrin.gif) ), autoryzację, + pobieranie danych z 4 baz SQLite, brak cache Wynik: [0.03563404083252]1835008b. W sumie prawie wszędzie mam tyle. Wiem, że Smarty spowalnia. Akurat tworzę coś w stylu OpenID z REST API i działa zadowalająco. Znowu inny serwis, budowany pod społeczność, tablica, znajomi i pełno relacji pomiędzy komponentami ma znowu: [0.19151997566223]2.5 mb: - przyciski al'a "lubie to" - komentarze - sqlite jako podstrony komentarzy, - powiadomienia i inne bzdety które ma fb A takie demo bloga Yii? Jest ktoś w stanie zrobić taki test, żebym nie tylko ja miał takie dane? W wolnej chwili postawie xdebug i sprawdzę co się dzieje ale to by było bliżej początku udostępniania tego systemu bo tak jak @fizzlebubble wspomniał, że nie wytłumaczysz niektórych rzeczy. Nie no, chyba coś tam jednak istnieje, bo jakieś testy jednostkowe były. Wracając do tematu - udostępnij jakiś fragment kodu, pokaż jakieś unikalne rozwiązanie z którego jesteś szczególnie dumny. Może nie tyle co unikalne, zwykły singleton, ładowarka klas i główna klasa odpalenia skryptu (widać w metodzie run) (IMG:style_emoticons/default/biggrin.gif) Swoje zadanie spełnia, mało kodu i to się liczy, nie ma co kombinować i wymyślać a póżniej z igły robią się widły jak to się mowi (IMG:style_emoticons/default/biggrin.gif) http://pastebin.com/7Rg8eCYF CCV byłby widoczny przy rozbudowanym kontrolerze i komponencie. |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dawno nie widziałem takiego "nested if/else" ;]
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dawno nie widziałem takiego "nested if/else" ;] Stare ale jare (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wszystko co jest za throw nie zostanie wykonane, tak samo jak wszystko co jest za exit, die, return i podobnymi, więc ten return false tam jest zbędny. is_file zwraca tylko czy plik istnieje, a plik może istnieć ale możesz nie mieć do niego uprawnień. Warunek:
Kod if(self::$baseClass[$strtolower]) { // some code } będzie wyświetlać notice jeżeli włączysz raportowanie błędów na E_ALL. require_once jest zbędny (i wolniejszy) jeżeli wcześniej i tak sprawdzasz czy klasa już istnieje. Kiepsko trochę, sporo błędów logicznych. Nie zrozum mnie źle, ale śmieszne trochę jest kiedy mówisz o super optymalizacji, jednocześnie używając wyrażenia regularnego do wyszukiwania "stałego" ciągu. O czym nawet jest napisane w dokumentacji preg_match, że jak masz go użyć do wyszukania ciągu w podciągu, użyj strpos lub strstr. Niby to nie jest jakaś kolosalna różnica, ale to już widać na pierwszy rzut oka że nie bardzo wiesz jak dane funkcje/elementy języka działają. Tak samo mnie zastanawia, bo napisałeś że jest bezpieczny jak ktoś nie korzysta bezpośrednio z post, get etc. Czyli co, ty te dane traktujesz htmlspecialchar w jakiejś pętli, czy jak? Konkluzja jest taka, że twój "framework" jest szybszy od innych, bo nie ma wielu innych ficzerów. Jakbyś miał z użyciem 2 frameworków napisać 2 takie same aplikacje, i użył byś swojego fw, jak i powiedzmy laravela; to jest wysokie prawdopodobieństwo że w obu przypadkach te prędkości czy użycie danych będą bardzo zbliżone. Ten post edytował by_ikar 9.02.2015, 15:53:01 |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
@up Ba, ten kod który został pokazany można by było spokojnie odchudzić do ok 35 linijek i to nie dla tego że wszystko w jednej, ale wywalając część i zamieniając bardziej odpowiednimi elementami.
Poza tym te 2 metody autoloadu są podobne. Zmienia się w sumie na dobrą sprawę sprawdzenie czy klasa jest smarty i zmiana ścieżki. Razi mnie też użycie referencji. Blee. Nie lubimy tego bo potem kwiatki wychodzą.
Na prawdę nie uważasz że to jest bez sensu? |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ok, skoro jest kod do review, to zrobię pobieżny (uwagi w komentarzach)
Ten post edytował vokiel 9.02.2015, 21:17:42 |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 10 Dołączył: 17.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie Chciałbym udostępnić autorski system framework, który teoretycznie (hmm, nawet praktycznie) kładzie inne systemy. Minimum benchmarków: https://github.com/TechEmpower/FrameworkBenchmarks Możesz zrobić pull requesta ze swoim frameworkiem. |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 20.02.2015 Skąd: localhost Ostrzeżenie: (10%) ![]() ![]() |
CodeIgniter: [0.011924028396606] 1 mb Yii: [0.050626039505005] 5 mb Autorski: [0.005169153213501] 768 kb Ja też tak mogę mówić: O a ja robiłem testy na surówkach dwóch frameworków bez połączenia z bazą danych na "Hello world": CodeIgniter: [0.011924028396606] 1 mb Yii: [0.050626039505005] 5 mb Autorski matrika: [0.005169153213501] 768 kb Autorski Neymara11: [0.000000000000001] 1 b No bo ja mam najlepsiejszy framework i nie mam tam zbędnych pierdouff co by tylko spowalniały ... [bla bla] [bla bla] Daj dowód, udostępnij frameworka no i już. Każdy sobie oblooka skrytykuje i wszyscy będą "happy" (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Skoro kładziesz na lekkość, to po co w Twoim FW smarty ? PHP sam w sobie jest systemem szablonów.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.08.2025 - 00:09 |