Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# archi memoriju...

[es] :: .NET :: .NET Desktop razvoj :: C# archi memoriju...

[ Pregleda: 3018 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Bope

Član broj: 62233
Poruke: 291
*.COOL.ADSL.VLine.verat.net.

Sajt: www.shortsms.me


+4 Profil

icon C# archi memoriju...26.08.2006. u 19:54 - pre 215 meseci
Jedan program koji sam jos davno napravio u VB6 sam prepisao u C#,optimizovao ga ali imam problem:Prilikom izvrsavanja on zauzima 21MB Rama!!!!
Isti program,potpuno ne optimizovan i pocetnicki pisan u VB6 zauzima samo 3 MB-a.Kako????

Iskljucio sam VisualStyles,program pokrecem preko Application.Run() (znaci prozor se ne prikazuje,program radi u pozadini),program ima jednu listBox i 2 FileSystemWatcher-a,60 linija koda i koristi System,System.Diagnostics,System.Drawing,System.Windows.Forms i System.IO.

Sta trebam da ucunim,kako da smanjim potrosnju memorije?Da li je C++ sudjen?

P.S. program sam pisao u #develop-u 2.0 (dok VS kompajlira,dok pokrene,dok ugasi mogu da odem da jedem).
 
Odgovor na temu

aleksandarpopov
IT consultant
Senta

Član broj: 57172
Poruke: 484
*.sabotronic.co.yu.

Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: C# archi memoriju...26.08.2006. u 21:03 - pre 215 meseci
Nije problem u nacinu pisanja vec su programi radjeni/kompajlirani u C# su izvrsivi jedino preko .NET frameworka, nesto kao virtuelna masina, nesto izmedju tvoje masine i tvog programa, sto zauzima dosta memorije. Ako ti je bitna kolicina memorije uzmi neki alat / kompajler koji kompajlira u masinski kod c/c++ ili delphi.
RTFM
 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...26.08.2006. u 21:49 - pre 215 meseci
bedak....stvarno ne znam sta mi bi da se posvetim C#-u....
Cim mi neki principi OOP-a "udju u ruku" prelazim na ++
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: C# archi memoriju...26.08.2006. u 21:52 - pre 215 meseci
Stvar je u tome da kod malih aplikacija zaista ume da bude nezgodno, dok kod vecih (a dobro napisanih) razlika nije tako dramaticna.
Medjutim, tih 21MB je zaista deluje malo previse ali to naravno zavisi sta tvoj program radi.
 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...26.08.2006. u 22:07 - pre 215 meseci
Sad sam probao u C++-u .NET i o5 sam se razocarao-obican prazan prozor,bez
obzira na visualstyles uzima 30 Rama....
Kad sam vec kod ++-a da li mogu da mu kazem da ne pravi "VC++ Intellisense
Database" pri pravljenju projekta jer je taj fajl i kod prostih aplikacija
veliki po nekoliko MB-a?
Da li je to neki kljucan fajl ili moze da se zaobidje/smanji?
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.ptt.yu.



+3 Profil

icon Re: C# archi memoriju...27.08.2006. u 01:04 - pre 215 meseci
Napises mali program sa jednom formom, on uzme 20tak mega.

Onda dodas jos 40 formi, a program bude 30tak mega.

Nema tu velike drame, stara prica o kornjaci i zecu. Koliko se secam, svaki put kad sam je citao kornjaca je dobila.

Evo ja sam upalio sw na kojem sad radim. Unutra ima 4 vrste 3rd party kontrola (C1, Plexity, RemObjects, DevExpress), jedan deo tabela se puni pri startovanju programa. Ukljucio sam nekoliko formi, sa sto tezzim kontrolama i koje vuku podatke i oko 60tak mega.. dalje nije maklo. Outlook zgazi u cugu 30 mega.
 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...27.08.2006. u 03:15 - pre 215 meseci
Ja sam imao ovakav problem: kad sam pisao pomenuti program u basic-u hteo
sam (i uspeo) da napravim poseban mali program koj i radi neku jednostavnu
operaciju (npr pretragu foldera koji dobije preko command line-a) i koji
glavni program na pocetku pokrene recimo 40 puta (za 40 razlicitih
foldera).Cilj mi je bio da tih 40 malih programa rade paralelno...U C#-u sam
odustao od tog resenja jer 40x20 MB rama je mnogo :)

Hteo sam da napravim nesto slicno u C#-u ali sam pre par sati shvatio da
nema svrhe i da postoje bolji nacini ali me jos uvek zanima da li u C#-u
postoji nesto pomocu cega mogu da kazem da se dve linije koda istog programa
izvrsavaju paralelno?
 
Odgovor na temu

bjevta
Bratislav Jevtic
http://www.tojesoft.co.rs
Beograd

Član broj: 5216
Poruke: 367
89.216.229.*

Sajt: www.tojesoft.co.rs


+5 Profil

icon Re: C# archi memoriju...27.08.2006. u 06:41 - pre 215 meseci
1. bope, pogledaj malo taj algoritam. imam utisak da bi to moglo i malo bolje.

2. istovremeno "kopanje" po disku od strane više programa degradira performanse svakog od njih. poželjno za izbegavanje.

3. za paralelno izvršavanje pogledaj Thread klasu


Acta, non verba!
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: C# archi memoriju...27.08.2006. u 08:29 - pre 215 meseci
To se ionako nece zaista istovremeno izvrsavati tako da je jednostavnije da u jednom programu vrsis pretragu folder po folder. Tj. manje ce resursa trebati i brze ce biti zavrseno.
 
Odgovor na temu

TheAlas
Bojan Sala
Senior Software Eng
IGT
Beograd

Član broj: 36584
Poruke: 119
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: C# archi memoriju...27.08.2006. u 12:36 - pre 215 meseci
Moraš da budeš vrlo vešt sa memorijom i performansama u svim okruženjima, pa tako i u C#, a o c++ da ne pričam. Radio sam i u VB6, on dobro upravlja memorijom ako znaš šta radiš.

Ja sam pravio mnogo malih aplikacija u C# koji rade u pozadini. Samo WinForms zauzima minimum 1.5MB, tako da ako je prozor VIDLJIV na ekranu tvom programu se dodaje tih minimalnih 1.5MB.
Moja najveća mala aplikacija u C# je jedan IRC bot koji ima oko 4500 linija koda, korsiti ADO baze, i "baferuje" velike količine podataka. Kada je prozor (sa 5-6 osnovnih komponenti) sakriven, program zauzima 1.6MB memorije + 2.5MB punog bafera koji se puni duže vreme.

Kada praviš aplikaciju u C++ bez MFC-a, možeš preko kalkulatora i izvornog koda da izračunaš koliko će memorije zauzeti tvoj program, tako da tu nema tajni. A sam MFC dodaje oko 2MB.
Moj IconMasterXP je pravljen u C++ 7.1, koristi poslednji MFC, i zauzima samo 5-10MB. Inače ceo program ima oko 25 000 linija koda, što naravno ne utiže na RAM zauzeće ni malo. Kao što rekoh, možeš i u glavi da proceniš koliko će ti zauzeti program, ako zauzima više - onda si neku gadnu grešku napravio. VS 7.1 i dalje verzije imaju mogućnost automatske detekcija leak-ova u klasama, tako da koristi OOP ako ne 100% onda 99%, tvoj program će biti zahvalan. Takođe, mislim da ljudi prave grešku kad veruju da su stare Win32 aplikacije imale mnogo bolju organizaciju memorije nego današnji "virtualni" programi, upravo je suprotno.

Zaboravio sam da napomenem da je .NET 2.0 druga priča - generalno, više zauzima od 1.1.


[Ovu poruku je menjao TheAlas dana 27.08.2006. u 14:02 GMT+1]
 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...28.08.2006. u 02:11 - pre 215 meseci
Evo napravio sam sta sam hteo-program ima 4 form-e i kad radi zauzima 26 MB
rama.
 
Odgovor na temu

bjevta
Bratislav Jevtic
http://www.tojesoft.co.rs
Beograd

Član broj: 5216
Poruke: 367
89.216.229.*

Sajt: www.tojesoft.co.rs


+5 Profil

icon Re: C# archi memoriju...28.08.2006. u 07:18 - pre 215 meseci
kako framework radi garbage col. u sledećoj situaciji:

imamo dve klase i njihove instance (A i B, na primer). objekat A ima referencu na objekat B preko nekog property-ja a i objekat B ima referencu na objekat A preko svog property-ija. drugim rečima, objekti A i B se uzajamno referenciraju.

treba uništiti oba objekta - recimo da nam više ne trebaju. hoće li ih gc počistiti iako su još uvek referencirani?
Acta, non verba!
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: C# archi memoriju...28.08.2006. u 08:58 - pre 215 meseci
Hoce ukoliko su samo medjusobno bili referencirani, ako niko vise ne drzi njihove reference. GC cisti objekte tako sto krece od root-a aplikacije pa na dalje. Ukoliko niko od ovih prethodnih "parent" objekata ne drzi referencu na tvoj objekat GC smatra da se objekat vise ne koristi. Uostalom evo dobar tekst o tome kako GC radi na http://msdn.microsoft.com/msdnmag/issues/1100/gci/

E sad vidim da ovde svi iznose neke svoje informacije o tome koliko .NET zauzima meomorije na osnovu, pa ne znam tacno kojih ocitavanja ali pretostavljam preko task managera (za one koji preko TM ocitavaju - minimizirajte aplikaciju pa onda pogledajte koliko zauzima )

Mali savet
ko god hoce da gleda neki performance monitoring neka koristi neki specijalizovani program za to ili neka koristi performance monitor u win-u (perfmon.exe) a isto bi preporucio za .NET aplikacije jedan mali programcic CLR Profiler koji je odlican za ove stvari, ima lepe boje

@Bope
Ukoliko vec hoces da imas vise instanci tvoje aplikacije mozda bi trebalo da razmislis da koristis ngen umesto JIT-a tj. da kreiras ngen image (dolazi uz .NET SDK). Ovako ces dobiti malo na performansama i ustedeces memoriju (tako bi trebalo).





 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...28.08.2006. u 09:04 - pre 215 meseci
Ja mislim da hoce.Ako su reference deklarisane u,npr button1_click metodi
onda sam siguran da hoce,cim se izvrsi button1_click.
Jel to bio bit pitanja ili....?
 
Odgovor na temu

Bope

Član broj: 62233
Poruke: 291
*.net
Via: [es] mailing liste

Sajt: www.shortsms.me


+4 Profil

icon Re: C# archi memoriju...28.08.2006. u 09:09 - pre 215 meseci
sto se minimiziranja tice: Jaaako interesantno! pre prvog minimiziranja
uzima oko 20 Mb-a,kad minimiziram zauzima oko 13 ali kad je ponovo vratim u
normal zauzima 15 (a ne 20)!
?????
O cemu se radi?
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# archi memoriju...

[ Pregleda: 3018 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.