Jak zmierzyć wydajność zapytań na bazie danych w entityframework i nhbirnate

0

Hej,
mam serwisy w których mam proste zapytania na bazie. Baza jest wypełniona kilkoma tysiącami rekordami i chciałbym zmierzyć wydajność tych zapytan.
Chce porównać które zapytania szybciej się wykonają, przy użyciu której warstwy dostępu do danych EntityFramework czy NHbirnate.

Wiecie przy pomocy czego bym był w stanie wykonać takie pomiary?

2

Tracisz czas na głupoty. Jeśli chodzi Ci o porównanie czasów, to już inni to zrobili. Np: http://gergelyorosz.com/2009/08/nhibernate-vs-entity-framework-a-performance-test/ albo https://www.linkedin.com/pulse/orm-read-performance-ef-vs-dapper-balazs-hideghety
Chcesz wybierać technologię pod kątem wydajności. Nie zawsze jest to dobre. Czasem trzeba po prostu wybrać lepszą technologię. W zależności od tego, co piszesz.

Jeśli to mają być proste zapytania, to NIKT nie zwróci uwagi na czas ich wykonania. Naprawdę, nikt nie zauważy różnicy.

Jeśli bardzo Ci zależy na wydajności, to posłuż się procedurami składowanymi. Wtedy wszystko będzie się wykonywać na serwerze, a ponadto będziesz mógł badać plany wykonania.

Złota zasada mówi: Nie zaczynaj optymalizować aplikacji, póki nie ma takiej potrzeby.

0

Bardziej chyba chodzi o wydajność Seleta. W tym wypadku struktura bazy danych może wspomóc trochę szybkość wykonania query (odpowiednie indeksy w bazie). Istnieje coś takiego jak query plan, prawie każdą baza to obsługuje. Łopatologicznie rozbita jest tam kolejność przetwarzania i czasy.

1

Do robienia porównań najlepszy jest BenchmarkDotNet.

Wbrew pozorom w internecie nie ma wielu gotowych porównań najnowszych wersji ORM, o ile Dapper i NHibernate są już dojrzałymi produktami o tyle EF Core zmienia się dość często.

0

Młocie, nie idź tą drogą. Sądząc po tym co piszesz nie będzie to miało dla Ciebie jeszcze przez jakiś czas zadnego znaczenia. A później też raczej nie.
Masz kilka tysięcy i chcesz sprawdzać jak się szybko wykona jakiś select? Pisz po prostu kod i sprzedawaj.

1

Niedawno sprawdzałem i np. postgreSQL przestaje korzystać (w podstawowej konfiguracji) z indeksów, gdy liczba rekordów przekracza ok 800 tys. rekordów.
Ale to zależy również od wielu innych czynników

0

również skorzystam z waszych odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1