Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Performanse


Dok vara aplikaciju, pre ili kasnije, svaki programer mora da se suoči sa njenim performansama. Da biste obezbedili performanse aplikacija, morate da razmislite o njihovoj arhitekturi, pokupite potrebne komponente i koristite ih ispravno. Inače, na kasnim fazama razvoja, kada ima dosta kodova, poboljšanje performansi postaje kompleksan zadatak, koji zahteva promene radnog i koda za otklanjanje grešaka.

Mi, takođe, pružamo veoma koristan tutorijal na osnovu iskustva u razvoju visokih performansi aplikacija i praktične preporuke o tome šta treba da radite, a šta ne.

Ovaj odeljak opisuje funkcije Dapfor .Net Grid i pomaže da procenite performanse aplikacije i razumete, koje režime treba koristiti za specifične aplikacije.

Testirajte konfiguraciju:
  • Intel Core 2 Quad Q6600 2.40 GHz, Memorija: 2 GB, Operativni sistem Windows Vista SP2, rezolucija: 1920 x 1280
  • Testirane mrežne dimenzije: 1890 x 813. Tokom svih testova mreža je uvek vidljiva na ekranu.
Rezultati testa se mogu razlikovati za različite računare ili ako se vidljive mrežne dimenzije promene.
Benchmarking aplikacija se može preuzeti ovde . Izvorni kodovi ove aplikacije su dostupni ovde .

Recimo neke opšte stvari o performansama aplikacija. Pokretanje aplikacija troši resurse za preračunavanje i ponovo iscrtava podatke pomoću GDI/GDI + alata. Ove dve operacije nisu povezane jedna sa drugom. Pod preračunavanjem se podrazumeva sortiranje, filtriranje, grupisanje i svi drugi poslovi, osim ponovnog iscrtavanja. Sve ove operacije u mreži se obavljaju samo u GUI niti. Ako je promena podataka u drugoj niti, mreža obavlja potrebnu sinhronizaciju, obično sinhroni prenos podataka do GUI niti. Menadžer događaja može predstaviti asinhroni transfer obaveštenja, kada pozivanje niti nije blokirano. I podaci preračunavanja i ponovnog iscrtavanja troše procesorske resurse u različitim proporcijama, sa različitim brojem redova. Ako postoji nekoliko redova, repainting je najviše resursno-intenzivan zadatak, jer se većina redova nalazi u vidljivom delu mreže koja zahteva intenzivni repainting. Kada postoji više redova, samo mali broj njih se nalaze u vidljivom delu, dakle, repainting troši manje resursa.

Takođe, napomenimo da ovi pokazatelji prikazuju maksimalne parametre mrežene performanse. To ne znači da će svaka aplikacija raditi u takvom stresnom okruženju. Osim toga, teško je zamisliti situaciju kada će svaka ćelija u vidljivom delu mreže (može biti više od 500 njih) biti ažurirana po stopi od preko 10 ažuriranja u sekundi. U realnom životu, vrednost ove aplikacije ne prelazi 1-2 ažuriranja za 5-10 ćelija po sekundi. Podaci dobijeni u nastavku, omogućavaju programeru da proceni opseg performanse aplikacija na početku projekta i da počne stvaranje znajući kod, i koji režim je najbolje da koriste naše vizuelne komponente.

Performanse unosa podataka u mrežu

Najefikasnije je da umetnete elemenate na kraj mreže. (ovo važi za sve mreže). Ovaj metod dodavanja podataka, u suštini, ne zavisi od broja već ubačenih elemenata. Dodavanje podataka na početak mreže ili na sortiranu mrežu, u velikoj meri zavisi od broja već ubačenih elemenata. Ovo je posebno važi za ubacivanje na početak mreže, koje treba izbegavati.

Ubacivanje podataka na početak sortirane mreže:

Ubacivanje podataka na kraj:

Uklanjanje podataka

Uklanjanje podataka je, takođe, važna karakteristika mreže. Sporo uklanjanje podataka može izazvati pad aplikacija, pogotovo kada su zatvorene. Najefikasnije je ukloniti podatke sa kraja mreže. Stopa uklanjanja podataka ne zavisi mnogo od obima podataka. Bolje je da se izbegne uklanjanje podataka sa početka mreže ili iz sortirane mreže, zbog ove metode to je efikasno samo za male količine podataka. Savet: Da biste ubrzali uklanjanje podataka, otkažite sortiranje sa metodom Header.SortedColumns.Clear().

Uklanjanje podataka sa početka sortirane mreže:

Uklanjanje podataka sa kraja:

Ažuriranje podataka u non-event modelu

Ovaj model podrazumeva da podaci ne sprovode INotifyPropertyChanged interfejs. Primer:

grid.Rows.Add(new object[]{"value1", 123, true, DateTime.Now});
//Data is updated by calling Cell.Value property.
Row row = ...;
Cell cell = row[0] ;
cell.Value = "value2";

Ovo svojstvo može biti pozvano iz bilo koje niti, ne samo iz GUI niti. U ovom slučaju mreža sinhronizuje teme sa sinhronim pozivom Control.Invoke().

Maksimalna brzina ažuriranja podataka u velikoj meri zavisi od obima podataka. Kada postoji mnogo redova, povećava se brzina ažuriranja, jer ima manje ispravke u vidnom području. Kada se povećava broj redova, kao i stopa ukupnog ažuriranja, sinhronizacija podataka između niti dodatno opterećuje CPU zbog ne-GUI niti.

Treba napomenuti da fading efekat, kada se svaka ćelija oboji svakih 30 ms drugom bojom, ima negativan uticaj na performanse i ne treba da se koristi u realnom vremenu.

Brzina real-time sortiranja takođe u velikoj meri zavisi od broja redova i od vertikalnog scrollbar položaja. Usred mreže sortiranja jednog reda zahteva se repainting mnogih susednih redova, koji takođe menjaju svoje stavove tokom rotacije.

Ažuriranje podataka u event-driven modelu

Ovaj model omogućava rad sa podacima koji primenjuju INotifyPropertyChanged interfejs.
U suštini, karakteristike mreže u ovom režimu su slične non-event režimu. Glavna razlika je sposobnost da sinhronizujete podatke sa asinhronim pozivom koji ne blokira takozvanu nit. Ovaj metod sinhronizacije troši više resursa, ali nit je bezbednija i pomaže da se spreči zastoj niti.





Grupisanje podataka

Ispod, postoje karakteristike mreže za statičko i real-time grupisanje. Tokom statičkog grupisanja, mreža obnavlja sadržaj svih podataka u mreži, dok se meri zavisnost stope grupisanja od obima podataka. Tokom dinamičnih grupisanja, podaci se menjaju u realnom vremenu, što zahteva pretraživanje postojećih grupa, kreiranje novih grupa i uklanjanje grupa koje sadrže više redova. Da biste razumeli grafikon performansi za dinamičko pregrupisavanje podataka, imajte na umu da, kada postoji nekoliko redova, oni moraju često da se boje, a kada postoji mnogo redova, potrebno je više resursa za pretraživanje ili kreiranje grupa.



Dinamično filtriranje

Filtriranje upravlja vidljivošću reda. Programer može postaviti svoje filtere za upravljanje filtriranjem. Svaki put kada se novi podaci dodaju na mrežu, ili kada se podaci modifikuju, mreža proverava da li su ovi podaci ispunili uslove filtriranja.

Performanse u velikoj meri zavise od broja redova i od vertikalnog scrollbar položaja. Kada je palac u sredini, mreža mora da oboji više redova, jer kada se status vidljivosti više-stojećeg reda promeni, svi sledeći redovi menjaju svoje pozicije.





Published (Last edited): 03-12-2012 , source: http://www.dapfor.com/en/net-suite/net-grid/features/performance