NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Neaktivní uživatel:17.7.2017 8:07

Ahoj, vytvářím databázovou aplikaci s pomocí entity frameworku a narazil sem na problém. Tím problémem je rychlost při načtení prvního vyhledání.
Mám aplikaci, která stahuje informace o zákazníkovi a zobrazuje je ve formuláři. Při prvním vyhledání aplikace na mém stroji trvá 1-2 sekundy, zjistil sem však, že na starších strojích...cca 2-3 roky staré ntb. co máme ve firmě je ten čas 4-8 sekund (což už je strašně moc). Všechna následná vyhledání jsou i na starých strojích v rámci 1 sekundy. Chápu, že se při prvním vyhledání načte model atd.,v entity frameworku jsem samozřejmě nastavil

SetDatabaseInitializer<TMT>(null);

Využívám i precompiled "views ":https://www.nuget.org/…activeViews/ ,ale ať dělám co dělám nedostanu ten čas na starých strojích dolů...
Mojí otázkou je, co teď? Jaké jsou mé možnosti?
Logická struktura mojí aplikace je pomocí repositoru oddělená od té datové, takže bych teoreticky mohl změnit ORM nebo využívát SQL...jenže nevím, kterou cestou se vydat....už tak sem na entity frameworku utopil dost času a nechci znovu "zkoušet" řešení, které nemusí fungovat. První načtení je pro mě totiž velmi kritické.

Odpovědět
17.7.2017 8:07
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Marian Benčat:17.7.2017 10:45

Asi to úplně nechápu.. Pokud ti vadí první call 3sec, proč si sahal po ORM? Jinak.. Co ti brání si to volání čas od času strojově zavolat...? MŮŽE TO brzdit cokoliv, jitting, první navázání spojeni, vytvoření modelu, kompilace query.. Vše má řešení.. Na jit se dá sehnat precompiled binarka, na model se to dá precachovat, linq se dá predbuildit.. Ta snaha je ale zbytečná, když je mnohem jednodušší si ten dotaz třeba zavolat pri každém spuštění (po každé recyklaci)

Nahoru Odpovědět
17.7.2017 10:45
Totalitní admini..
Avatar
zelvicek
Člen
Avatar
zelvicek:17.7.2017 13:01

Napadají mě dva postupy:

  1. zkusit ten první call udělat bez EF, tedy SqlConnection+SqlCom­mand+IDataRea­der. Pokud to taky bude trvat dlouho, není problém v EF.
  2. první/inicializační dotaz na data udělat ve vlákně (skrytě) a výsledek zahodit. Ostatní/ostrá volání už budou rychlá.
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
17.7.2017 13:01
Avatar
Neaktivní uživatel:18.7.2017 10:08

Celý projekt sem předělal abych používal SqlConnection, jede to bezproblémově. Jen sem musel vyřešit mapování do svých tříd po svém.

Nahoru Odpovědět
18.7.2017 10:08
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.