Przemysław Bagiński

Przemysław Bagiński Programista /
Programista baz
danych

Temat: POMOCY - Porównianie technologii wytwarzania...

Szukam propozycji porównania dwóch aplikacji (najlepiej tym samym narzędziem lub metodą),
korzystam z dwóch środowisk:
Oracel JDeveloper 11g
Visual Studio 2012
na dodatek obydwie aplikacje (ta sama logika) są napisane pod różnymi platformami oraz w różnych językach, jakieś pomysły ?

Analizatory kodu, optymalizacji, zależności między klasami itp?
Selenium ? może ktoś podsunie pomysł by wyniki były rzetelne?

Opłacalność, oraz subiektywne odczucia są mało istotne, potrzebuje konkretów, liczb z których ostatecznie można by wysnuć wnioski na potrzeby pracy mgr.

nie chce błądzić po 30 aplikacjach wspomagających mnie przy analizie...

sugestie ?

Temat: POMOCY - Porównianie technologii wytwarzania...

Ponieważ z Twojego postu wnoszę, że chodzi Ci o kwestie wydajnościowe, poruszę pewne kwestie związane z takimi porównaniami.

Rozumiem, że to bardzo prosta aplikacja, w której użyto dokładnie takich samych mechanizmów np. dostępu do danych (korzystając z - odpowiednio - ODBC i JDBC porównujesz tak naprawdę dodatkowo oba mechanizmy), mechanizmów komunikacji (nawet w ramach samego .NET możesz uzyskać diametralnie różne wyniki jeśli użyjesz WCF i ServiceStack) , bibliotek (przeportowanych z np. .NET do Javy i vice versa)? Inaczej kopletnie stracisz punkt odniesienia. Wystarczy, że w Javie użyto NHibernate, w .NET Entity Framework i już nie porównujesz wyłącznie środowiska .NET z Javą, tylko dodatkowo jeszcze frameworki dostępu do danych. Już nie wspomnę o implementacji sterowników. A takich miejsc będzie cała masa. W obu środowiskach są mechanizmy, które nie sa "wymienne" (np. LINQ, delegaty) i chcąc uzyskać podobny efekt, trzeba stosować właściwe danej platformie "obejścia". Wspomniejmy o bardziej złożonych kwestiach w przypadku porównania całych frameworków i ich wewnętrznych mechanizmów, np. J2EE (EJB + JSF) i ASP.NET (MVC2/3/4 lub WebForms).

W konsekwencji może się okazać, że obie aplikacje działają tak samo szybko i "zasobożernie" jeśli są napisane "pod daną platformę", a może także wychodzić przewaga Javy nad .NET i odwrotnie, ale po zmianie architektury, biblioteki, mechanizmu - uzyskasz już inne wyniki.

Do tego dochodzą także inne kwestie. Np. w .NET jest LINQ, które bardzo ułatwia pisanie zapytań do kolekcji obiektów oraz operacje na zbiorach. Niedawno, w jednym wątku opisywałem algorytm, który napisałem w oparciu o pętlę FOR i miał pewną złożoność obliczeniową. Ktoś zaproponował o wiele bardziej eleganckie, choć jednocześnie mniej elastyczne w oparciu o LINQ. Działało w pewnym zakresie podobnie, wyglądało o wiele bardziej elegancko/czytelnie, ale złożoność obliczeniowa była już inna. Zachowałem podobną (dla uproszczenia - tę samą) funkcjonalność, ale zmienił się algorytm. W Javie trzeba byłoby użyć innych narzędzi. A przecież często o wykorzystaniu danego narzędzia decyduje nie tylko to, jakie jest szybkie (często jest to "bardzo drugorzędna" kwestia), ale także to, jak jest łatwe w użyciu. Załóżmy, że ktoś używa takiego narzędzia, bo pozwala prosto osiągnać efekt, ale jest np. wolniejsze, na czym "cierpi wizerunek" całej aplikacji. Z punktu widzenia użyteczności aplikacji może to być nieistotne, ale w teście liczą się "surowe liczby".

Mrowie takich porównań, prowadzonych od początku powstania .NET wskazuje, że obie platformy, jeśli pisze się "pod nie", pozwalają osiągnąć bardzo zbliżone rezultaty, choć zazwyczaj zupełnie różnymi drogami.

Reasumując - możesz oczywiście porównać dwie aplikacje, co do których wydaje Ci się, że są napisane podobnie, ale wtedy musisz się dokładnie zastanowić co wpłynęło na ewentualne różnice, bo, jak pisałem, być może wystarczy "coś przestawić" i wyniki się znacznie zmienią.

Użyj jakiegoś profilera. Jeśli masz dostęp do kodu i jest on napisany dobrze obiektowo, powinno dać się wrzucić logger czasu wykonania metod lub całych "unit of work".

PS: Jeśli ta sama logika, to po co zależności między klasami i dlaczego miałyby się zmienić?

PS2: zapomniałem o najwazniejszym - a co konkretnie chcesz uzyskać? Co dokładnie badasz? Które środowisko lepiej się nadaje do tworzenia aplikacji?Ten post został edytowany przez Autora dnia 22.08.13 o godzinie 12:13
Przemysław Bagiński

Przemysław Bagiński Programista /
Programista baz
danych

Temat: POMOCY - Porównianie technologii wytwarzania...

Niestety nie chodzi o środowiska lecz o kompletne rozwiązania do tworzenia aplikacji...
Cały temat jest dosyć kontrowersyjny lecz, rozgrzebany i rozpocząty.

Stworzone są dwie aplikacje (raczej ich szkielety)

Jedna pod J2EE za pomocą przepływów task-flow, korzystająca z zalecanego ORM - Business components w ADF
oraz narzędzi jDevelopera, więksozść z nich wg praktyk Oracle. Niestety bardzo często wykorzystywaną metodą jest drag&drop w tym rozwiązaniu, mam wrażenie że nie panuje nad kodem.

W MVC, po wykorzystaniu EF natomiast bardziej tworzymy już od strony kodu, łatwiej zapanować nad tym co robimy.

staram się porównać nie tyle środowiska czy aplikacje lecz technologie... gdzie mam na mysli rozwiązania Oracle vs Microsoftu (całościowe ).

Dochodzę do wniosku ze poza subiektywnymi odczuciami dotyczącymi np. interfejsu użytkownika (ajax w przypadku ADF jest bardzo obszerny i łatwy do użycia), czy dostępności do "wiedzy" (przewaga MVC) będzi ciężko z liczbami.
Coś co przychodzi mi do głowy to np. porównanie czasów tych samych operacji (dodanie rekordu czy jakieś inne modyfikacje operacje)

Aha, jesli chodzi o logikę pod spodem, to jest inna... JDeveloper z ADF generuje zupełnie inny szkielet aplikacji jak MVC pod Visual Studio.

Jakieś inne sugestie jak porównać całościowe podejście do wytwarzania aplikacji ?
jakieś jeszcze liczby do wyników? narzędzia ? potrzebuje suchych danych

koszty powiedzmy że już są (opłacalność)

Następna dyskusja:

ADF vs MVC ASP.NET ? pomoc ...




Wyślij zaproszenie do