To LINQ or !to LINQ

poruka: 59
|
čitano: 14.241
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
To LINQ or !to LINQ

Nisam LINQ baš jako koristio jer je to samo verzija za $%##"! , onako iz prve mi se čini da je to samo primjer kako se mogu nadograđivati Generics-i.

Svake tablice imaju različite potrebe.  Očekivati da za sve ima kračica je preambiciozno.

 

 
0 0 hvala 0
16 godina
offline
RE: To LINQ or !to LINQ
braindozer kaže...

Nisam LINQ baš jako koristio jer je to samo verzija za $%##"! , onako iz prve mi se čini da je to samo primjer kako se mogu nadograđivati Generics-i.

Svake tablice imaju različite potrebe.  Očekivati da za sve ima kračica je preambiciozno.

 

Nema LINQ (ili govorimo o LINQ2SQL?) neke posebne veze sa genericsima. Ne kuzim bas sto si htio reci da svaka tablica ima svoje potrebe, i da je to sve preambiciozno?

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...
braindozer kaže...

Nisam LINQ baš jako koristio jer je to samo verzija za $%##"! , onako iz prve mi se čini da je to samo primjer kako se mogu nadograđivati Generics-i.

Svake tablice imaju različite potrebe.  Očekivati da za sve ima kračica je preambiciozno.

 

Nema LINQ (ili govorimo o LINQ2SQL?) neke posebne veze sa genericsima. Ne kuzim bas sto si htio reci da svaka tablica ima svoje potrebe, i da je to sve preambiciozno?

 
var a = from item in list orderby item descending select item;
IEnumerable<string>  r = list.OrderBy(x => x);
to je moja poanta
16 godina
offline
RE: To LINQ or !to LINQ
braindozer kaže...
 
var a = from item in list orderby item descending select item;
IEnumerable<string>  r = list.OrderBy(x => x);
to je moja poanta
jos ne kuzim poantu :)

ali ovaj tvoj upit mi se cini neispravan. Mora ici ovako:
var a = from item in list orderby item.Polje descending select item;
IEnumerable<string>  r = list.OrderBy(x => x.Polje);
ovaj prvi "a" query se ispod haube u biti prevodi u lambda izraze, ovaj drugi "r", pa se onda razlaze na stablo izraza (expression tree), i tek onda izvrsi, dali nad objektima u memoriji ili se prevodi u sql.

IEnumerable<T> nema veze sa LINQon (dosao je sa .net 2), ako si to mislio. Taj tip (klasa) nasljedzuje IQueriable<T>, koji moze sadrzavati Expression Tree, sto je u biti osnova na koji se kaci LINQ.
"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...
braindozer kaže...
 
var a = from item in list orderby item descending select item;
IEnumerable<string>  r = list.OrderBy(x => x);
to je moja poanta
jos ne kuzim poantu :)

ali ovaj tvoj upit mi se cini neispravan. Mora ici ovako:
var a = from item in list orderby item.Polje descending select item;
IEnumerable<string>  r = list.OrderBy(x => x.Polje);
ovaj prvi "a" query se ispod haube u biti prevodi u lambda izraze, ovaj drugi "r", pa se onda razlaze na stablo izraza (expression tree), i tek onda izvrsi, dali nad objektima u memoriji ili se prevodi u sql.

IEnumerable<T> nema veze sa LINQon (dosao je sa .net 2), ako si to mislio. Taj tip (klasa) nasljedzuje IQueriable<T>, koji moze sadrzavati Expression Tree, sto je u biti osnova na koji se kaci LINQ.
 napravio sam test prije gdje sam stavio List<string> list = new ...  i onda imam jednodimenzionalno polje sa value typeovima.
IEnumerable je return type od OrderBy.
16 godina
offline
To LINQ or !to LINQ

Istina, OrderBy je extension metoda na bilo koji objekt tipa IEnumerable<T>, znaci i za List<T>, IList<T>, array (iako tu ne vraca IEn.<T>), ...

 

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Poruka je uređivana zadnji put čet 2.4.2009 13:33 (hudo).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...

Istina, OrderBy je extension metoda na bilo koji objekt tipa IEnumerable<T>, znaci i za List<T>, IList<T>, array (iako tu ne vraca IEn.<T>), ...

 

 mjerio sam brzinu for i foreach petlje. dobio sam da je foreach brži za referenced typeove, a for za value typeove.
array uvijek koristi foreach oslanjajući se na IEnumerable. Tako da za LINQ bi trebalo još jedno mjerenje.
Ako se netko hoće zabaviti...
int[] i = new int[int.MaxValue];
private class RInt : List<int>;
RInt j = new RInt<int>();
Random rnd = new Random();
for(int k = 0; k < i.Count; k++) i[k] = rnd.Next();
for(int k = 0; k < int.MaxValue; k++) j.Add(rnd.Next());
...
i izmjeriti vrijeme npr. za sort, order, where....
16 godina
offline
To LINQ or !to LINQ

Takvih mjerenja sam vidio brdo vec, ali jos nisam nasao u praksi da netko koristi array ili listu od stotine tisuca objekata! To su gluposti.

 

LINQ na objekte u memoriji je poprilicno brz, i moze se koristiti svagdje osim za 3d i fizikalne proracune koji se izvrsavaju satima.

LINQ2SQL je sporiji od drugih metoda rada sa bazom (SqlReader), a dosta vremena ode na pretvorbu linq upita u sql upit, i na materijalizaciju objekata kada su podaci dobiveni iz baze.

Sa druge strane, LINQ2SQL moze podnijeti 100-200 000 unique posjeta dnevno na web server.

 

A sto se tice genericsa, oni se u compile time ionako zamjene za pridodjeljeni tip, tako da nema pada u brzini. Oni su napravljeni da se zamjeni enkapsulacija u "object" i da se dobije intellisense (strongly typed) objekata.

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...

Takvih mjerenja sam vidio brdo vec, ali jos nisam nasao u praksi da netko koristi array ili listu od stotine tisuca objekata! To su gluposti.

 

LINQ na objekte u memoriji je poprilicno brz, i moze se koristiti svagdje osim za 3d i fizikalne proracune koji se izvrsavaju satima.

LINQ2SQL je sporiji od drugih metoda rada sa bazom (SqlReader), a dosta vremena ode na pretvorbu linq upita u sql upit, i na materijalizaciju objekata kada su podaci dobiveni iz baze.

Sa druge strane, LINQ2SQL moze podnijeti 100-200 000 unique posjeta dnevno na web server.

 

A sto se tice genericsa, oni se u compile time ionako zamjene za pridodjeljeni tip, tako da nema pada u brzini. Oni su napravljeni da se zamjeni enkapsulacija u "object" i da se dobije intellisense (strongly typed) objekata.

 
Pa int.MaxValue sam stavio da se zna o čemu pričam, a ne zbilja 2^32
btw. ja sam radio sa gigabajtnim bazama
daj mi ti svoju viziju kako strpati 100k redova u listview da user može normalno scrollati, a uz to da i mreža nije pod heavy loadom, o serverima sa sqlom da ne pričam
eto, čekam mudraca, a onda ću ti reći šta sam ja napravio.
16 godina
offline
To LINQ or !to LINQ

Evo upravo sam nekidan radio nesto slicno. Naime, imam Silverlight aplikaciju, i u Listboxu moram prikazati jako puno itema koji se onda pak mogu scrollati, selektirati, mjenjati i sl.

Za takve stvari nije dobra praksa da se sve ucita u listbox, to se tako ne radi, ne zbog brzine ORMa (u ovom slucaju LINQ2SQL), nego zbog samog listboxa.

Pogotovo je tu problem jer Silverlight komunicira sa serverom preko interneta i propusnost je relativno malena.

To se radi sa kontrolama koje podrzavaju Virtualisation, odnosno bindanje objekata na listbox (ili neki datalist, svejedno) koji se moraju prikazati, a ne svih. Ako tablica u bazi ima par tisuca recorda, sigurno ju necu ucitati cijelu odjednom. Ma i da ima vise od 50 redova ne bi to ucitavao odjednom...

To sve opet nema veze sa LINQom, jer nije on tu onaj koji usporava.

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
To LINQ or !to LINQ

Učitavaš samo ono što vidiš, to je najbolja praksa.

Avatar odgovara mojim reakcijama dok čitam ovaj forum...
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
naxeem kaže...

Učitavaš samo ono što vidiš, to je najbolja praksa.

 ali svejedno moraš imati negdje nekakvu sortiranu listu. Značajno manje podataka za razliku od cijelog objekta, ali opet treba sortirati listu i zapamtiti indexe.
Mislim da bi bilo dobro da napravim jednu test bazu za razgledavanje. Možda ovako u kratko, imaš 20ak tablica. u svakoj tablici 100k+ rowsa (20-30 kolona) i glavnu tablicu sa 300k+ rowsa. Mislim da je tu u pitanju LINQ (da ne misliš da skrećem sa teme)
16 godina
offline
To LINQ or !to LINQ

Nikada, bas nikada se ne ucitavaju podaci u memoriju da bi se sortirali ili slicno. Sve sta se moze mora se obaviti u bazi, sa SQLom. Treba razlikovati izradu LINQ upita gdje se tek stvara expression tree, i kada su vec podaci povuceni iz baze i onda nad njima radi LINQ manipulacija!

 

Za takve "slozenije" upite, ja koristim StoredProcedure, koje onda L2S mapira na metodu unutar DataContexta, pa dobijem strongly typed rezultat.

U firmi znam tu i tamo vrtit neke analitike nad logovima u bazi. A to je jedna tablica od gigabajt, sigurno. Da probam i sa najboljim ORM alatom zo ucitati i sortirati, kompjuter bi mi eksplodirao vjerojatno :)

I to je prica za jednog usera koji koristi app, zamisli da se njih 10-tak nakelji na server...

 

Druga stvar je svojsto L2S da uvjek radi Lazy Load, sto zna dovesti do velikom broja uzastopnih query-a na bazu. Za razliku od L2S, Entity Framework-u, koji isto koristi LINQ za upite, se mora explicitno reci sto da dohvati. I on ima nesto brzu materijalizaciju objekata u memoriji.

 

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...

Nikada, bas nikada se ne ucitavaju podaci u memoriju da bi se sortirali ili slicno. Sve sta se moze mora se obaviti u bazi, sa SQLom. Treba razlikovati izradu LINQ upita gdje se tek stvara expression tree, i kada su vec podaci povuceni iz baze i onda nad njima radi LINQ manipulacija!

 

Za takve "slozenije" upite, ja koristim StoredProcedure, koje onda L2S mapira na metodu unutar DataContexta, pa dobijem strongly typed rezultat.

U firmi znam tu i tamo vrtit neke analitike nad logovima u bazi. A to je jedna tablica od gigabajt, sigurno. Da probam i sa najboljim ORM alatom zo ucitati i sortirati, kompjuter bi mi eksplodirao vjerojatno :)

I to je prica za jednog usera koji koristi app, zamisli da se njih 10-tak nakelji na server...

 

Druga stvar je svojsto L2S da uvjek radi Lazy Load, sto zna dovesti do velikom broja uzastopnih query-a na bazu. Za razliku od L2S, Entity Framework-u, koji isto koristi LINQ za upite, se mora explicitno reci sto da dohvati. I on ima nesto brzu materijalizaciju objekata u memoriji.

 

 ja sam na ms sql 2k kreuno sa "cursor"-ima. Neznam jel si upućen.
Ne koristim LINQ pa da znaš nisam još stigao do toga.
Ti si mi prezentirao sada LINQ kao još jedan middle-tier između T-SQL i .net.
Znači moram znati sql da napišem storu koja mi vrati "DataContext" koji još jednom prevrtim sa LINQom i na kraju GUI.
4 layera različitih jezika... Ne shvačam zašto storu pišem u T-SQLu po kojem su vadili sličnosti, tako i tako.
Zašto je bitan data layer ako sa LINQom fino prosijem bazu. Misliš da je teško napraviti smart data gridove za GUI ?
Lejmersko pitanje, daj mi navedi 3-4 algoritma za sortiranje brojeva ?!
16 godina
offline
RE: To LINQ or !to LINQ
braindozer kaže...
 ja sam na ms sql 2k kreuno sa "cursor"-ima. Neznam jel si upućen.
Ne koristim LINQ pa da znaš nisam još stigao do toga.
Ti si mi prezentirao sada LINQ kao još jedan middle-tier između T-SQL i .net.
Znači moram znati sql da napišem storu koja mi vrati "DataContext" koji još jednom prevrtim sa LINQom i na kraju GUI.
4 layera različitih jezika... Ne shvačam zašto storu pišem u T-SQLu po kojem su vadili sličnosti, tako i tako.
Zašto je bitan data layer ako sa LINQom fino prosijem bazu. Misliš da je teško napraviti smart data gridove za GUI ?
Lejmersko pitanje, daj mi navedi 3-4 algoritma za sortiranje brojeva ?!
 haha, mora da se zezas sa ovim "lejmerskim" pitanjem :) Mislim, mogao bi otici na wikipediju i prepisati, koji je smisao toga?
Koji sorting algoritam koristi LINQ interno, da ja tebe pitam?

Drugo, da, znam sta su kursori. I ne hvala, ne bi to vise koristio. Nadam se da je vrijeme Clariona i FoxProa proslo. (Iako tu zalim Oracle developere kojima zivot zasigurno nije ljep! Al ajde, imaju Javu da im ne smrdi toliko posao.)

I dobro si krenuo s ovim layerima i jezicima: to je i glavni razlog koristenja svega ovoga.

.net i c# su objektne razvojne okoline. SQL je funkcijski jezik koji koristi relacijski vezane tablicne podatke. To su dva svijeta s kojima se radi i koje treba povezati.
Ako GUI i poslovni logiku svoje aplikacije radim u .net-u, onda radim sa objektima. Baza tu tablice. I zati imam ORM kao sto je LINQ2SQL, ili jos bolje NHibernate da prebrodim tu razliku, i da koristim samo objekte. Ako na to dodam jos i LINQ - skoro-pa-funkcijski jezik unutar statickog c# jezika (dali znas razliku izmedzu statickog i dinamickog jezika, i koji su to funkcijski jezici sve?), onda imam vrlo mocan objektni framework za razvijati. I sto je (meni) najvaznije, gust je u tome razvijati!
Layeri uvelike doprinose organizaciji aplikacije - da nema njih onda vjerojatno ne bi postojala niti jedna slozenija i veca aplikacija jer ne bi nitko mogao pohvatati konce! (khm, khm, PHP, khm:)

Ako gledamo layere onda je praksa upotrebljavati ovo: Data Access Layer (citanje iz baze i prepisivanje podataka na objekte), BLL (poslobna logika), UI (interface i njegova logika). Ili jos bolje, kako ja koristim: Core/Infrastruktura sloj, Repositoriji, Servisi, UI (koji pak ima 3 layera- Model, View i Controller, MVC, a u win/Silverlight aplikacijama je MVVM pattern/slojevi).

I na kraju price, mogu samo reci da ORM alati poput L2S skrate posao i poboljsaju kvalitetu aplikacije. To je na kraju jedino sto vrijedi i sto se broji. Developer se vise ne mora toliko zezat sa pisanje SQL-a,p osto je to posao koji u vecini slucajeva stroj moze sam obavit. A ako zatreba, ORM alat dopusta pristup direktno podacima i pisanje SQLa.
A sto se tice brzine, to je jedna sasvim druga prica...

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ

Iz moje perspektive to izgleda otprilike ovako

Dođe korisnik sa idejom (moj simultani prijevod) var r = from ladica1 in stol select kemijska orderby iskorištenost desc.

Eto, zbog želja korisnika znam lambda expressions, a zbog prijevoda imam LINQ koje sve zabindam na datagrid kontrolu, bilo web ili windows.

(da mi još to netko i pošteno plati)

A što se tiče brzine, ms u dokumentaciji obično koristi bubble sort što sumljam da stavlja u vlastite proizvode.

Neznam baš in-depth SQL server, ali znam da je cijela poanta u indeksiranju i optimiziranom-parametriziranom sortiranju.

 

Svatko izabere svoj stil.  Na kraju je bitno, što očigledno znaš, da je kôd uredan, ali za kodera.

 

Možda nočas otkuckam neki iole vjerodostojan podatak o misteriju LINQ. Javim na kanalu rezultate.

 

16 godina
offline
To LINQ or !to LINQ

.net framework za sort liste koristi Quick sort interno.

Bubble sort je dovoljno jednostavan da se moze koristiti u MSDN primjerima.

 

LINQ i lambda izrazi sadasnjost i buducnost c# i vb jezika. Ja radim s time svaki dan, ali i ucim isto svaki dan nesto novo, i svidza mi se smjer u kojem to sve ide. Jos bi se cak volio pozabaviti sa Ruby-em, odnosno IronRubyem. E to su tek lambda izrazi...

A da bi L2S dobro radio, trebaju biti ispravno postavljeni indexi, relacije, kljucevi i sve ostalo sto ide uz teoriju izrade baze podataka. Znanje ORM alata kao sto je Linq2Sql ne znaci da se mora vise znati posloziti i normalizirati baza. Dapace, ORM alati to ocekuju da bi mogli obaviti svoj posao!

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
hudo kaže...

E to su tek lambda izrazi...

Ako je pre sporo napravi kompliciranije! :}

 

Možda treba pregledati temelje. Bez obzira na iskoristivost LINQa činjenica je da je sortiranje Veliki Problem, jer da nije bilo bi nešto drugo :D

 

16 godina
neaktivan
offline
To LINQ or !to LINQ

Ti bi našao nešto drugo, mislio si reći?:)

Avatar odgovara mojim reakcijama dok čitam ovaj forum...
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ
naxeem kaže...

Ti bi našao nešto drugo, mislio si reći?:)

 frajeru, daj se posortiraj !
16 godina
neaktivan
offline
RE: To LINQ or !to LINQ

Ja bih bubble! :))))

 

Sad ozbiljno, zašto se uopće baviš ručnim sortiranjima ako dovlačenja iz baze možeš obavljati u praktički sortiranom obliku preko stvari koje su iznimno brze na serveru?

Avatar odgovara mojim reakcijama dok čitam ovaj forum...
15 godina
neaktivan
offline
To LINQ or !to LINQ

u FOR petljama sam korisitio Array.Sort(),  a u FOREACH List<int>.Sort()

 

Start FOR Sorting: Start Time -  56385812 ticks
End FOR Sorting: End Time -  56387953 ticks
Score: 2141 ms
Start FOR int[10000] 56385812 ticks
End FOR int[10000] 56385812 ticks
Score: 0 ms
Start FOR int[100000] 56385812 ticks
End FOR int[100000] 56385828 ticks
Score: 16 ms
Start FOR int[1000000] 56385828 ticks
End FOR int[1000000] 56386000 ticks
Score: 172 ms
Start FOR int[10000000] 56386000 ticks
End FOR int[10000000] 56387953 ticks
Score: 1953 ms

 

Start FOREACH Sorting: Start Time -  56415906 ticks
End FOREACH Sorting: End Time -  56418156 ticks
Score: 2250 ms
Start FOREACH int[10000] 56415906 ticks
End FOREACH int[10000] 56415906 ticks
Score: 0 ms
Start FOREACH int[100000] 56415921 ticks
End FOREACH int[100000] 56415937 ticks
Score: 16 ms
Start FOREACH int[1000000] 56415937 ticks
End FOREACH int[1000000] 56416109 ticks
Score: 172 ms
Start FOREACH int[10000000] 56416187 ticks
End FOREACH int[10000000] 56418156 ticks
Score: 1969 ms

 

... za napraviti je test sa LINQ pa jel ima prijedloga za neki sort ?

 

 

 

 

Isti Sort algoritam, isto vrijeme izvršavanja.

Poruka je uređivana zadnji put pet 3.4.2009 9:30 (braindozer).
 
0 0 hvala 0
16 godina
offline
To LINQ or !to LINQ

Razlika je neprimjetna. Ja bi rekao da oni u mscorlibu koriste isti sorting algoritam. Vidim i da oba dvije klase upotrebljavaju IComparable interface za sortiranje.

Uostalom, ako je sortiranje toliko kriticna stvar u tom teskom proracunu koji radis, ljepo dodaj unsafe oznaku, i udri po pointerima, da vidis tek onda brzine!

 

Pregled animiranih sorting alrgoritama:

http://www.hanselman.com/blog/BackToBasicsAlgorithmsAndGoingBackToVirtualSchool.aspx

 

Usput, koju klasu si koristio za mjerenje? Trebala bi se koristiti Stopwatch, meni se cini da ona nije koristena u tvome slucaju posto vidim one tickove.

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Poruka je uređivana zadnji put pet 3.4.2009 9:00 (hudo).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ

Evo tražeći po dokumentaciji da te razuvjerim nađem ovo za List<T>

This method uses Array.Sort, which uses the QuickSort algorithm.

 

Tako da Sort iz .Net 1 je identičan Sortu iz .Net 2 i cijeli post je uzalud.

Svejedno me zanima za LINQ, izgleda da OrderBy isto koristi QuickSort. Budem još malo pogledao.

 

TickCount za mjerenje. (Mislim da je dovoljno precizno).

 

 

 Zanimljivo mi je da za 2 sekunde samo 10mb value typeova sortira.

Znači 5 mb/sec sortiranje.

Nekako mi se to čini sporo.

Poruka je uređivana zadnji put pet 3.4.2009 9:47 (braindozer).
16 godina
offline
To LINQ or !to LINQ

LINQ vjerojatno koristi isti Sort, jer u pozadini opet radi s istom kolekcijom, bilo ona array ili list, jer oba dvije nasljedzuju IEnumerable, a LINQ se kaci na taj interface. 

Dali ti je aplikacija u Release nacinu rada?

I LINQ2SQL OrderBy prevodi u SQL, pa se sortiranje obavi na sql serveru. Prije si spominjao da koristis neke velike baze, pa je vazno to napomenuti.

 

I koristi StopWatch klasu, a ne tickcount, jer ona koristi hardwaresko mjerenje koje je preciznije od cistom oduzimanja dva vremena, sto koristi tickcount.

 

Jos jedna ideja: PLINQ (paraller linq), mozda on ima neki visenitni sort algoritam? Ili cak uzeti neku implementaciju GPGPU frameworka (CUDA.NET), pa se taj posao delegira grafickoj.

 

Benchmark sortinga liste, arraya i linq-a, ima graf na dnu stranice:

http://dotnetperls.com/Content/Sorting-String-Array.aspx

 

Jedna starija usporedba, ima .net 2 beta, iako su rucno napravili heap sort:

http://www.ddj.com/showArticle.jhtml?documentID=cuj0507bruckschlegel&pgno=3

 

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: To LINQ or !to LINQ

Compile je u Debugu, ali mi nije najbitnije da bude najbrže već da vidim omjere i šta se događa.

Zato mi je sekundarno paziti na svaku instrukciju ili milisekundu, bitno da konzistentno provedem mjerenje i tek onda možda razmišljati o optimizacijama.

 

OK, od sada ću korisiti StopWatch!

 

PLINQ i CUDA ću pogledati.(za vikend)

 

Za to mi je i trebala usporedna lista brzine sortiranja.  Da znam da binary sort radi 5mb/sec, što je smiješno malo.

 

Slijedeće ću staviti prave objekte da sortira i proći kroz OrderBy.

-Budem iste funkcije otkuckao i u SQLu, pa da usporedim SQL i LINQ. Možda LINQ2SQL ima smisla.

 

 

 

 

16 godina
offline
To LINQ or !to LINQ

Pogledaj grafove na linkovi koji sam poslao - razlike izmedzu arraya, list<t> i Linqa gotova da i nema.

 

Takodzer, kazes da ti je cudno sto je sortiranje sporo, a nije ti vazno dali je aplikacija pokrenuta u Release ili Debug nacinu rada!? Pa u debugu je dosta sporiji, prebaci to.

 

sorting kod linq2sql ce obaviti sql server na bazi, i tu ce sve ovisiti kako su postavljeni indexi u bazi, i citanje podataka - dali se citaju sva polja ili se radi projekcija samo nekih, i naravno vrijeme potrebno za kreiranje zasebnih objekata (ne value tipova u heapu, nego reference tipova na stacku koji je sporiji od heapa!), i vrijeme potrebno za punjenje istih iz ado.net datareadera. Nemogu se usporedzivati kruske i jabuke.

 

"A developer is a machine that converts coffee into code" | http://twitter.com/hhrvoje
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: To LINQ or !to LINQ

Na grupi smo prije godinu dana imali demonstraciju LINQ2SQL-a u kontrastu s klasičnim SQL upitima. LINQ je u nekim situacijama brži.

Avatar odgovara mojim reakcijama dok čitam ovaj forum...
15 godina
neaktivan
offline
To LINQ or !to LINQ

Imam backup žive baze sa cca 150mb. Sa storama koje mogu zamjeniti LINQom i vidjeti real life scenario.

 

 

samo za tebe sam pokrenuo Realase i razlika na sortiranju najvećeg je svega 50ak ms (1900 vs 1950).

Poruka je uređivana zadnji put pet 3.4.2009 15:00 (braindozer).
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice