ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
297
297
EMPFEHLEN
-
Hi,
ich habe ein kleines Countdown Skript gebastelt, was 100% Systemleistung frisst. (Bei Dualcore nur 50%).
Kann mir einer Tipps geben, wie ich dies verhindern kann?
Hier einmal das Skript:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> void wait ( int seconds ) { clock_t endwait; endwait = clock () + seconds * CLOCKS_PER_SEC ; while (clock() < endwait) {} } int main (int argc, char * argv) { int test=argv[0]; int test2=argv[1]; int m=10; for(int x=0;x<m;x++) { printf ("Starting countdown...\n"); for (int n=8000; n>0; n--) { printf ("%d\n",n); wait (1); } int y=10; for(int i=0;i<y;i++) { mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); printf ("ausgeführt\n"); Sleep(5000); //5 Sekunde } } getch(); return 0; }Leg dich mit dem Besten an, und stirb wie alle dann******
-
Hallo, füge mal in der wait-Funktion ein kurzes Sleep() mit ein:
GrußCode cpp:1
while (clock() < endwait) { Sleep(10); }
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Besten Dank für deine Antwort.
Jetzt ist die Systemauslastung des Skripts max. 2%.
Könntest du mir evt. auch erklären, warum dieses Sleep(10) in der While-Schleife den Fehler behebt?Leg dich mit dem Besten an, und stirb wie alle dann******
-
Code :
1
while (clock() < endwait) {}
Eine whileschleife geht bei jedem Durchgang die If-Abfrage ab.
Da du nichts im Schleifenblock (heißt das so?) ausführen lässt
heißt das für die whileschleife das der Durchgang vorbei ist
und guckt sich wieder die If-Abfrage an. Das heißt das er nur
am Abfragen ist. Und die Funktion clock() muss bestimmt
irgendwelche Werte initialisieren, ausrechnen und returnen.
Das kostet Resourcen. Das ist so als wenn du jemanden Pausenlos
und ohne Zwischenpausen mit der Frage "Wieviel Uhr ist es?"
zumüllst und der dann immer auf die Uhr guckt um es dir zu sagen.
Dieses "auf die Uhr gucken" verbraucht Resourcen
Darum hilft das Sleep(n);
Das schläft dann das Programm für n-Millisekunden ein und lässt dem
"Befragten" ein bissel Ruhe
Ich hoffe ich konnte dir das irgendwie näher bringen.
edit:
Oder überhaupt richtig erklärt hab.
Schlagt mich nicht wenns falsch ist den so hab ichs verstanden D:Geändert von _Van (02.04.08 um 19:34 Uhr)
-
02.04.08 19:52 #5
- Registriert seit
- Jan 2004
- Ort
- Wannweil
- Beiträge
- 302
Quatsch, hier wird niemand geschlagen, war perfekt ; )
Besser ließe es sich aber noch machen:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// statt void wait ( int seconds ) { while (clock() < endwait) { Sleep(10); } } // Noch besser (eigtl auch sinniger denke ich) void wait(int seconds) { Sleep(seconds * 1000); }
Also theoretisch könntest du dir die wait()-Fkt auch sparen und direkt mit Sleep() im Quelltext arbeiten.. naja, wie es dir halt besser gefällt..Noch weiter helfen jetzt nur noch google, msdn, Tutorials, Forumssuche, Eingebungen, Glück und ein wenig Hirnanstrengung.
Ähnliche Themen
-
Leistung MySql?
Von skee im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 04.12.07, 08:58 -
Was ist in diesem Countdownskript falsch?
Von MaWe4585 im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 12.01.07, 16:15 -
C4D Leistung hochschrauben
Von PhoenixEN im Forum Cinema 4DAntworten: 4Letzter Beitrag: 12.06.05, 13:04 -
Leistung steigern
Von Bigbutcher im Forum C/C++Antworten: 5Letzter Beitrag: 03.03.05, 22:18 -
Zu wenig Leistung :(
Von Raek im Forum HardwareAntworten: 5Letzter Beitrag: 19.06.04, 00:58





Zitieren

Login






