dat is net zoiets als: Kun je met een lada, F1 racen?
het kan uiteraard...
Steun Elkaar, Kopieer Nederlands Waar!
Verwijderd
Wellicht kan je dan ook aangeven welke API's hij moet gebruiken en niet meteen z'n taal afkraken...Op zaterdag 15 juni 2002 11:21 schreef Skinkie het volgende:
waarom wil je dat in vredesnaam in VB doen?
dat is net zoiets als: Kun je met een lada, F1 racen?
het kan uiteraard...
Verwijderd
Er zijn al tools die het kunnen, dus waarom zelf maken
Dan zou je net zo goed niet kunnen leren coden.Op zaterdag 15 juni 2002 12:15 schreef ACM het volgende:
Zoek eerst eens uit of je het wel wil en kan maken.
Er zijn al tools die het kunnen, dus waarom zelf maken
Betekent dat, dat alles wat ooit gemaakt zou kunnen worden, al bestaat?Op zaterdag 15 juni 2002 17:31 schreef CArNi4 het volgende:
Dan zou je net zo goed niet kunnen leren coden.
Verwijderd
Verwijderd
Ik denk dat Carni4 bedoelt dat we niets opnieuw mogen maken, dat we dan 1 OperatingSystem, 1 Tekstverwerker, 1 SpreadSheet, etc zouden hebben gehad...Op zaterdag 15 juni 2002 17:41 schreef Soultaker het volgende:
Betekent dat, dat alles wat ooit gemaakt zou kunnen worden, al bestaat?
Als ik kijk naar WinRAM-Booster 2001 (die ik geinstalled heb), dan gooit die al het geheugen vol (zie je mbv TaskManager). Blijkbaar verplaatst Windows daardoor alle andere programma's naar het virtuele geheugen/swap-file, waardoor er meer conventioneel geheugen overblijft.Op zaterdag 15 juni 2002 17:50 schreef Yarvieh het volgende:
Maargoed wat moet zo'n applicatie doen dan volgens jouw? heb je zowiezo kennis van de achterliggende theorie zoals de memory manager, working sets virtual memory etc...
Als andere programma's ook op deze manier werken, dan zou VB (die toch al niet zuinig is met het geheugen) uitermate geschikt zijn om dit op te lossen
Als jij het wil coden om het te leren, dan heb je iig een goede reden dit te coden.Op zaterdag 15 juni 2002 17:31 schreef CArNi4 het volgende:
Dan zou je net zo goed niet kunnen leren coden.
Als jij wilt coden om te leren programmeren, dan is dit absoluut niet iets waarmee je moet beginnen
http://216.26.161.91/vbapi/ref/c/copymemory.html
Hoewel je wel uit moet kijken met deze API in VB. Kan er effectief zijn (voor handige snelle string-add's bijvoorbeeld), maar kan ook je programma flink laten crashen.
Welcome to the wonderfull world of VB
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Verwijderd
Ik breng de topicstarter een richting op. Ik kan hem niet de oplossing op een presenteerblaadje geven, maar middels deze link vertel ik em wel waar hij een beetje kan zoeken. Er staan binnen die page nog wat verwijzingen. Het is dus nuttig.Op zondag 16 juni 2002 02:19 schreef Yarvieh het volgende:
Ehh 't kan aan mij liggen, maar als je iets kopieerd dan had je het 1x, en heb je het daarna 2x, hoe past dit ook al weer in "optimalisatie" waar de topic starter opzoek naar is?
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Verwijderd
Ok, dat was inderdaad een beetje een overdreven uitspraak van mij, maar de meeste programma's bestaan al wel, dus daarom...Op zaterdag 15 juni 2002 18:54 schreef Debbus het volgende:
[..]
Ik denk dat Carni4 bedoelt dat we niets opnieuw mogen maken, dat we dan 1 OperatingSystem, 1 Tekstverwerker, 1 SpreadSheet, etc zouden hebben gehad...
[..]
Ik kan al wel coden in VB, is ook niet zo moeilijk ofzo, dus ik ga voor de eerste:Op zaterdag 15 juni 2002 19:09 schreef ACM het volgende:
[..]
Als jij het wil coden om het te leren, dan heb je iig een goede reden dit te coden.
Als jij wilt coden om te leren programmeren, dan is dit absoluut niet iets waarmee je moet beginnen
Als jij het wil coden om het te leren, dan heb je iig een goede reden dit te coden.
Ik heb de maker van MemBoost gemaild, hij heeft MemBoost in Delphi 5 geschreven en code vroeger ook in VB, hij dacht dat het ongeveer zo moest in vb:
1
2
3
4
5
6
| dim somestring as string private sub Freeram() somestring = space (1024000) '1MB to allocate somestring = " " 'make it just a space end sub |
Zou dat nou echt goed werken?
alle geheugen van een pc te alloceren en het dan vullen met spatie's ofzo?
K'denk dat je toch eerst maar eens moet gaan kijken hoe het hudige geheugen management werkt, en hoe je daaraan dingen zou kunnen aanpassen, dus ook zien hoe je het kan aanspreken en of het kan uit vb.
If it ain't broken it doesn't have enough features
Verwijderd
Strings in VB zijn altijd unicode dus je alloceerd zowiezo 2mb daar..Op zondag 16 juni 2002 13:51 schreef CArNi4 het volgende:
code:
1 2 3 4 5 6 dim somestring as string private sub Freeram() somestring = space (1024000) '1MB to allocate somestring = " " 'make it just a space end sub
Zou dat nou echt goed werken?
En sowieso zal Space$() sneller zijnOp zondag 16 juni 2002 14:46 schreef Yarvieh het volgende:
[..]
Strings in VB zijn altijd unicode dus je alloceerd zowiezo 2mb daar..
Verwijderd
Verwijderd
Verwijderd
Ja oke, dat snap ik. Maar wat moet je dan met al die spaties? Ga je die later nog unloaden ofzo, of hoe maak je die ruimte weer vrij? Of is dat niet nodig? (Ik ben n00b met geheugen en hoe windows dat aanpakt, programeertechnisch gezien) maar het lijkt me wel leuk om te weten.Op zondag 16 juni 2002 14:54 schreef Yarvieh het volgende:
Je plakt niet je fysieke geheugen vol, je prakt je virtual geheugen vol, in de hoop dat de VMM pagina's die al 'n tijdje niet aangesproken zijn uit geheugen paged en naar je pagefile schrijft zodat ie daar je pagina's met spaties neer kan zetten.
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include <windows.h>
#include <Psapi.h>
int main(int argc, char* argv[])
{
DWORD pids[4096];
DWORD Needed=0;
EnumProcesses(pids,4096,&Needed);
for (DWORD i=0; i<Needed/sizeof(DWORD); i++ )
{
HANDLE h=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pids[i]);
EmptyWorkingSet(h);
CloseHandle(h);
}
return 0;
} |
Zoals ik al eerder zei, 4 niet al te spannende apicalls, moet best lukken in VB lijkt me.
Verwijderd
Kijk es 1 regel lager? daar kent ie aan die zelfde string weer 1 spatie toe, waardoor dus de data die er in stond door onze vriend VB (die alles voor ons regeld) vanzelf het geheugen weer vrij geeft.Op zondag 16 juni 2002 15:13 schreef K-Mile het volgende:
[..]
Ja oke, dat snap ik. Maar wat moet je dan met al die spaties? Ga je die later nog unloaden ofzo, of hoe maak je die ruimte weer vrij? Of is dat niet nodig?
Verwijderd
ik ben niet zo thuis in VB, maar ik dacht dat ie een spatie van 1 Mb ofzo in het geheugen zette
hmz, wel lachuh, maar dan zit je alsnog met die spaties in je geheugen
Verwijderd
dat klopt niet 100%, bij EnumProcesses moet je 4096*sizeof(DWORD) meegeven ipv 4096, nml. de grootte van het array in bytesOp zondag 16 juni 2002 15:14 schreef Yarvieh het volgende:
code:
1 2 DWORD pids[4096]; EnumProcesses(pids,4096,&Needed);
Verwijderd
Verwijderd
"Zeg dan niets."Op zondag 16 juni 2002 16:36 schreef Skizmo het volgende:
vreemde vraag. . maare het antwoord is NEE. . . VB is van M$. ... tja. .en M$ en optimalisatie in 1 zin . .dat is vragen naar problemen
Kom met normale argumenten, of zeg idd gewoon niets, maar ga niet lopen trollenOp zondag 16 juni 2002 16:36 schreef Skizmo het volgende:
vreemde vraag. . maare het antwoord is NEE. . . VB is van M$. ... tja. .en M$ en optimalisatie in 1 zin . .dat is vragen naar problemen
Afgezien van het feit dat je opmerking kant noch wal raakt lokt het alleen maar boze reacties uit van andere mensen, waardoor het hele draadje verpest kan worden
Ik zou dan ook de andere mensen willen verzoeken verder niet op de opmerking van Skizmo in te gaan
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Nee, VB maakt een string van 2 mb, die string bestaat alleen maar uit spaties. Daarna verkleint hij de string weer tot 1 spatieOp zondag 16 juni 2002 15:20 schreef K-Mile het volgende:
Aaah... ik snap hem..
ik ben niet zo thuis in VB, maar ik dacht dat ie een spatie van 1 Mb ofzo in het geheugen zette![]()
of iig 1 mb ruimte reserveren voor die spatie, maar als je die spatie zet wordt dus die 1MB die vrij is gemaakt met alleen een spatie opgevuld, dus dan houd je 0.9999 MB over right?
hmz, wel lachuh, maar dan zit je alsnog met die spaties in je geheugen![]()
Wat een lelijke methode om het geheugen leeg te gooien zeg. Zelfs als het gegarandeerd werkt onder elke mogelijk implementatie van VB (al zijn dat er vrij weinig), codeer je in je programmeertaal iets heel anders dan je met die code wilt bereiken. Erg portable (tussen verschillende versies van VB en verschilende Windows operating systems) is je code dus niet.Op zondag 16 juni 2002 18:28 schreef 41.6C.6D.61.72 het volgende:
Nee, VB maakt een string van 2 mb, die string bestaat alleen maar uit spaties. Daarna verkleint hij de string weer tot 1 spatie
Verder kwam ik Silberschatz (Operating System Concepts) de volgende tekst tegen over geheugenmanagement in Windows 2000: "If no page frames are available on the free list, Windows 2000 uses a per-process FIFO replacement policy to take pages from processes that are using more than their minimum working-set size. Windows 2000 monitors the page faulting of each process that is at minimum working-set size and adjusts the working-set size accordingly."
De voorgestelde strategie zal dus niet werken, zonder eerst de working-set size op 0 te zetten. Daarbij kan je programma nooit direct pages van andere processen stelen. Het zou me dus niets verbazen, dat door die 2 MB grote string aan te maken, een deel van de pages van je eigen proces worden weggeswapt. Aangezien je ze daarna niet meer nodig hebt (je refereert niet meer aan de string) worden ze nooit meer ingeswapt, heeft niemand een probleem en blijven dus alle processen in het geheugen. De kans is dus erg groot dat de voorgestelde strategie onder Windows 2000 helemaal niet werkt.
Ik snap sowieso niet wat het nut zou kunnen zijn, van het vrijmaken van fysiek geheugen. De hoeveelheid geheugen die processen nodig hebben (het virtuele geheugengebruik) verandert er niet door en het gevolg van pages wegswappen is alleen maar dat je processen er trager van worden. Je kunt er in principe vanuit gaan dat bij de ontwikkeling van Windows 2000 (en elk ander serieus operating system) goed is nagedacht over 't memory management en de kans dat je daar als user application iets aan kunt verbeteren, is nagenoeg nihil.
Eventuele verbeteringen zijn wel te behalven met het goed instellen van de parameters van de memory manager. Hierbij doe je dus zelf niets met geheugen. Je kunt dan ook gewoon de beschikbare API calls gebruiken.
Zoals in het begin al is gezegd, zul je, om ueberhaupt winst te kunnen boeken, wel enig benul moeten hebben van de memory manager waar je mee te maken hebt.
Dit is ook niet mijn ideeOp zondag 16 juni 2002 19:04 schreef iets interessants:
[..]
Verwijderd
Ik heb geschreven dat ik WinRAM Booster mijn geheugen vol zag gooien, waardoor ik dacht dat daardoor Windows programma's ging swappen (op zich niet zo'n gek idee
Zoals ik al vermeldde, zal je in eerste instantie de pagina's van je eigen proces wegswappen. Als je de geinitialiseerde string vervolgens niet meer gebruikt, zullen jou pagina's nooit ingeswapped worden (en blijven pagina's van andere processen gewoon in het fysieke geheugen). Waarom zou Windows immers je working set willen verhogen als je geen page faults genereert?Op zondag 16 juni 2002 21:51 schreef Debbus het volgende:
Even ter correctie.
Ik heb geschreven dat ik WinRAM Booster mijn geheugen vol zag gooien, waardoor ik dacht dat daardoor Windows programma's ging swappen (op zich niet zo'n gek idee).
Verwijderd
want wat jij dus zegt is dat ie voor die 2 Mb steeds hetzelfde stukkie pakt.. ?
Je ziet wel altijd als je StatBar aan hebt en je laat je RAM met één of ander prog optimizen, dat ie eerst helemaal naar 0 gaat, dus hij gaat gewoon door tot ie alles heeft, en dan verlaat ie de functie, zodat alles weer vrijkomt. Denk ik.Op zondag 16 juni 2002 23:12 schreef K-Mile het volgende:
moet je dan dus een 396 Mb tegelijk aan spaties in je geheugen proppen als je zoveel geheugen hebt?
want wat jij dus zegt is dat ie voor die 2 Mb steeds hetzelfde stukkie pakt.. ?