Kezdőoldal » Számítástechnika » Programozás » Mitől függ egy Windows-os...

Mitől függ egy Windows-os program memóriafogyasztása? Miért fordulhat elő az alábbi?

Figyelt kérdés

Üdv! Lenne egy félig elméleti, félig gyakorlati jellegű kérdésem, Windows-al, meg természetesen programozással (programozáselmélettel) kapcsolatban.

Konkrétan Windows XP-ről szól a kérdés.


Elöljáróban annyit - hogy ezt később ne kelljen magyarázni -, hogy maradt egy régi konfiguráció. Ez pont kapóra jött, hogy erről tudjak MIDI kommunikációval egy leharcolt YAMAHA szintit használni, aminek a kijelzője már tönkrement ezért praktikusan önmagában nem használható.

Főleg mivel VST-ket is szeretnék majd használni (bár nem mind valós időben, inkább renderelésre), ezért Windows-t kellett, hogy válasszak. Emellett voltak olyan kívánalmaim is - pl. virtuális MIDI driver, az alap standard túlontúl gagyi MIDI hangszínek lecserélésére - amikhez ingyenes és jól működő szoftvermegoldásokat csak XP SP3-ra találtam eddig, így még Win2k SP4-re se tudtam volna lemenni.

Így maradt az XP.


Nos, mivel a zenei programokon lesz a hangsúly, s egyébként Linux-ról egy kicsit ismét Windows-ra visszatérve elfogott a kísérletezgetős kedv, nekiálltam körülnézni annak - amin biztos a Windows-t használó kreatív informatikusok tiniként egyszer életükben átesnek -, hogy az átlag programokra, szoftverszolgáltatásokra, (amik nem a zeneszerzést szolgáják, de olyan alapszintűek, hogy azért kellenek egy PC-re a szükség esetére), milyen erőforrástakarékos alternatívák vannak. (gondolok itt a következőkre, pl.: shell (explorer.exe), fájlkezelő, ablakkezelő, webböngésző. feladatkezelő, logonui, stb-stb.


A keresgélés során aztán többek között rátaláltam, hogy még a puritán jegyzettömbökre is készültek alternatívák, nem is csak elvétve 1-2, hanem komplett gyűjtemény is van belőlük, amig direkt a régi, Pentium-os, vagy néhol még az előtti gépeket célozza meg, vagy tényleg az egyeseknek "extrémnek" tűnő egyszerűséget célozza meg.


Nos, az előzmények után, ami a kérdésem lenne:

Kipróbálgattam pár ilyen Assembly-ben, C-ben írt a Windows-os jegyzettömb egyszerű szintjén levő (vagy néhol kicsivel több, de azért célratörő) grafikus programot. - A DOS-osakat inkább hanyagoltam.

Mivel úm. ennél a kategóriánál spontán annyira nem látszik meg (működésében), melyik használ több, melyik kevesebb erőforrást, ezért az XP feladatkezelőjében próbátam megfigyelni, hogy melyik mennyi memóriát használ _megnyitott_ állapotban (mivel a RAM értéke tűnt a legszembeötlőbbnek), ill. miközben írok is bele. (bár nagy különbség ebben semelyiknél sem volt, csak ha letettem a tálcára)


Nos, a furcsa az volt, hogy egyik sem tudta megverni, de jobbára még csak beérni sem (bár volt, ami majdnem) az XP eredet jegyzettömbjét.

Próbáltam tisztán MASM-ban készült jegyzettömbö(ke)t (ilyen pl. a TopGun, EXE-méretre ez a legkisebb, amit eddig találtam), próbáltam, olyat is, amit szintén ASM-ben próbáltak erőforrásokra optimalizálni.

Utána kipróbáltam a Win98 és a Win95 jegyzettömbjét is, de még ezek is több memóriát ettek meg minden esetben is, mint az XP jegyzettömbje.

Pedig ugye az ember azt gondolná, hogy azok egyszerűbbek, egyszerűbb grafikát használnak, kevesebb funkció, így betöltendő kód lett beléjük programozva.... nemde? Pedig a gyakorlat mást mutatott.

Egyedül egy NASM-ban írt jegyzettömböt találtam, aminél ki volt emelve az erőforrásokra, köztük a memóriára történt optimalizáció. Ez majdnem beérte az XP-s notepad.exe-t, de pár száz KB RAM-al ez is mindig többet evett, akárhogy is próbálgattam.


Ez miért lehet? Mi v. mik magyarázhatja/magyarázhatják az, hogy az XP-nek a saját - bizonyára nem Assembly-ben, hanem minimum C-ben, vagy VisualBasic-ben írt - jegyzettömbje memóriahasználat terén jobban teljesít, mint az egyszerűbb, csúnyább, ASM-ben írt alternatíva?


Persze senki se gondolja, hogy ezt a kérdést praktikussági célzatok miatt vetettem volna fel, nem szándékozok KB-okra kisakkozni mindent egy 32 bites, 512MB RAM-os gépen, csupán ELMÉLETI SZINTEN ÉRDEKEL a dolgok lehetséges magyarázata.


Valamint, és nem utolsó sorban globális kérdéskörként is érdekelne - melyben talán több ember fog értelmet látni -, hogy min múlik az, hogy egy (grafikus) program memóriahasználatban optimalizált legyen. Miket kell figyelembe venni, amik nem annyira egyértelműek? Mennyire és hol játszik szerepet ebben az OS? (grafikus, ablakkezelőt használó programokról révén szó)

Pl. arra már elvétve láttam 1-2 példát, hogy nem mindig a ránézésre egyszerűbb, vagy a rövidebb kód a gyorsabb a CPU-n való bináris fordítás futásakkor. Pl. vannak olyan matematikai feladatok, amiknek az elvégzése sokkal gyorsabb, vagy más szmpontból optimálisabb, hogy ha az értékeket előre számolt táblázatokból - még ha azok nagynak is tűnnek - számolják, mint valami furfangos matematikai képlettel. Gondolom, memóriahasználatra való optimalizáláskor is megvannak az ehhez hasonló paraszti ésszel nem feltétlen egyértelmű szabályok... pl. (ebben nem vagyok biztos, csak blikkre mondom) kevesebb kód igényelhet több RAM-ot, mint ugyanazt végző, hosszabb kód.... de pontosan mik ezek a szabályszerűségek?

Valaki tudja ezeket?



2016. máj. 12. 18:00
1 2
 1/14 anonim ***** válasza:
35%

Mér nem lehet ezt a sok szart pár sorban értelmesen leírni?

A negyedénél az életkedvem is elment.

2016. máj. 12. 18:24
Hasznos számodra ez a válasz?
 2/14 A kérdező kommentje:

"Mér nem lehet ezt a sok szart pár sorban értelmesen leírni?"


Mert ha nem írom le, akkor általában az első min. két komment a következő kvázi kötözködő kérdések/megjegyzések egyike (a további kettő pedig az azok melletti kiállás):


"Miért használsz Windows XP-t? Elavult, nincs értelme a kérdésnek..."

"Miért kell ez Neked? Ha elmondanád, könnyebben tudnánk segíteni!" (bár ez utóbbi inkább 2 kommentre bontva, csakhogy húzzuk az időt)

"Bővebben nem tudnád? Ez így értelmetlen..."

"Mire akarod használni a gépet, hogy ennyire fontos a RAM-fogyasztás?"

"Miért nem jó a Win2000? Az is futtatja az XP-s programokat."


És még sorolhatnám, de azonkívül aki kötözködni jön, mint Te, még ezeknél is kreatívabb tud lenni.... csakhogy az illető odaírja a maga két "szar" sorát, és levetesse a kérdésemet a megválaszolatlan kérdések listájáról, nehogy az értelmesebbek nagyobb esélyel megtalálják.

A hozzád hasonló írás- és olvasásfóbiásokról amúgy is nagy százalékban mindig kiderül, hogy legföljebb nyim-nyam junior rendszergazdácskák, WebMesterek, de inkább félválról vett hobbisták... de persze ha megelőlegezném ezt veled is, még én lennék a csúnya előítéletes.


Csakhogy a furcsa az, hogy aki valóban is ért hozzá, az bár odaírja ugyanazt, mint Te, de mellette valami releváns választ is ad... ellenben Te csak azt érted el, hogy legföljebb 2 hét múlva tudom ismét kiemelni ezt a kérdést, hogy esetleg mások lássák, hogy nem lett megválaszolva, csak két "szar" sor oda lett böffentve.


Ateista révén én kívánom, hogy a hozzád hasonló ego-kal is csinálják meg ugyanezt, sőt, akkor, amikor valami fontosra várnád a kérdést.

2016. máj. 12. 19:33
 3/14 anonim ***** válasza:
0%

Muszáj fosni a szót, mi?

Írd már le mi a szart akarsz könyörgöm.

2016. máj. 12. 19:38
Hasznos számodra ez a válasz?
 4/14 A kérdező kommentje:
Személyreszólóan külön megküldtem a rövidített változatot. ;)
2016. máj. 12. 21:16
 5/14 anonim ***** válasza:

Csak 2 példa:

Pl ha több bool változód van, ha külön deklarálod ezeket, akkor 1 bit miatt elfoglal legalább 1 bájtot, de lehet hogy 4-et. Ha megítod, hogy egy int bizonyos bitjeit használja maszkolva, akkor az nyilván kevesebb memóriát fog használni, de több/hosszabb lesz a kód. (Nyílván pár változó esetén nem érdemes vacakolni, lehet a kód miatt több lesz a memória felahsználás, de mondjuk egy jó nagy bit tömb esetén már van értelme)

2: Ez nem pont a te eseted, de 32/64 bites programok esetén a 64 bites több memóriát fogyaszt(valószínűleg), mert midnne pointer 2x akkora, de gyorsabb is (lehet) a futtatás.

2016. máj. 13. 09:55
Hasznos számodra ez a válasz?
 6/14 tabaki ***** válasza:
Nem vagyok szakmabeli, de szerintem te az optimalizálás kérdését nincs értelme arra egyszerűsíteni, hogy mennyire használ sok vagy kevés memóriát, lehetséges, hogy az jelenti az optimálisabb megoldást, ha bátran él a rendelkezésére álló lehetőségekkel. Ha értenék hozzá, egy-egy konkrét program esetében bizonyára meg lehetne találni azt a programozói gondolatmenetet, amelynek az alapján a nagyobb memóriahasználat kívánatosabb megoldást eredményez.
2016. máj. 13. 23:38
Hasznos számodra ez a válasz?
 7/14 A kérdező kommentje:

Tabaki, hogy érted, hogy nem vagy szakmabeli?

Nem Te voltál az, aki megírta azt a programindító programot, ami lehetővé tette a program indulása előtti és zárása utáni hanglejátszást - a Sibelius kottázóprogramhoz hasonlóan, de bármely bináris esetében? o.O


...... bár, igaz, attól se lehet benne biztos, hogyha programozó, az ember, hogy éppen mi a kénye ennek a finnyás OP-rendszernek. :/

2016. máj. 14. 20:26
 8/14 tabaki ***** válasza:
Annak ellenére, hogy igen alacsony tudásfokon néha tényleg beleártom magam a programozásba egyszerű feladatokban, az említett akcióra egyáltalán nem emlékszem a gyakorlatomból. Ha már a közelben kell keresnünk a tettest, ez inkább SimkoL kezeszennyének tűnik. Ő szívesen el is játszik ilyesmivel, meg ért is hozzá.
2016. máj. 14. 22:39
Hasznos számodra ez a válasz?
 9/14 A kérdező kommentje:

Ja, igen!!!

Ezer bocsánat, tényleg Simkó László volt, aki azt megírta! Összetévesztettelek vele hirtelen.


No, hát, itt megesik az ilyesmi.

2016. máj. 15. 01:30
 10/14 tabaki ***** válasza:
Ha még egy ezeregyedik bocsánat is belefér: Lajos...
2016. máj. 15. 01:39
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!