| Autor |
Beitrag |
andras
      
Beiträge: 460
Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
|
Verfasst: Mi 05.10.05 15:51
hallo!
ich hab ein programm, in dem riesige schleifen durchlaufen werden. kann ich da irgendwie das betriebssystem so weit abdrehen, dass es halt nur mehr die speicherverwaltung und so zeug macht, aber damit mein programm den meisten teil aller resourcen verwenden kann.
danke schon im voraus!!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 05.10.05 15:54
Ja, starte einfach kein weiteres Programm, dann bekommt dein Programm 100% der CPU Zeit.
|
|
andras 
      
Beiträge: 460
Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
|
Verfasst: Mi 05.10.05 15:57
so weit war ich auch schon...
aber ich meine die ganze grafiksch.... von windows die wird wohl auch was brauchen, oder?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 05.10.05 16:01
|
|
firus1983
      
Beiträge: 170
Win98,XP,
D6 Entrpr
|
Verfasst: Mi 05.10.05 16:10
das hält sich arg in Grenzen.
Wenn du mal den Taskmanager aufmachst und schaust wieviel Prozent dein Leerlaufprozess hat, dann wirst du sehen dass ausser dem Taskmanager selbst kaum ein anderes Programm CPU-Last hat.
_________________ Veni Vidi Codi !
Ich kam, sah, und programmierte !
|
|
ManuelGS
      
Beiträge: 173
Win XP HE, Suse Linux
D6, D7, D2005 Personal
|
Verfasst: Mi 05.10.05 16:39
Wenn dir das restl. System wirklich egal ist, setz dein Programm auf Echtzeit, mach alle application.processmessages und restlichen Kram raus. Wenn dein Algorithmus dann fertig ist, Priorität wieder runtersetzen. Kannst dann während des Algorithmus sowas wie Ausgabe oder Eingabe natürlich absolut vergessen. Maus wird auch nicht mehr gehen; wenn dein Programm hängt, nützt nur noch RESET, ...
_________________ "Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
|
|
andras 
      
Beiträge: 460
Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
|
Verfasst: Fr 07.10.05 17:03
ok, ich glaub das ist das was ich suche.
gibts da irgendwelche delphi-befehle, mit denen man das auf echtzeit setzten kann, weil immer den taskmanager zu straten und die priorität zu ändern ist ja auch nicht grad toll
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 07.10.05 17:29
PRIORITÄT
Da findet man bestimmt etwas.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
ManuelGS
      
Beiträge: 173
Win XP HE, Suse Linux
D6, D7, D2005 Personal
|
Verfasst: Sa 08.10.05 00:07
Windwos bringt den Befehl "start" mit. Starte mal die Eingabeaufforderung und gib "start /?" ein. Damit kannst du zwar ein Programm mit Echtzeit-Priorität starten, allerdings wohl nicht mehr runtersetzen.
_________________ "Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Sa 08.10.05 12:53
Hallo!
ich hab mal schnell was gecoded:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure SetPriority(PriorityClass: Integer); var PID, hProcess: Integer; begin GetWindowThreadProcessId(Application.MainForm.Handle, @PID); hProcess := OpenProcess(PROCESS_SET_INFORMATION, false, PID); SetPriorityClass(hProcess, PriorityClass); end; |
PriorityClass kannst du z.B. auf REALTIME_PRIORITY_CLASS und nach der Schleife wieder auf NORMAL_PRIORITY_CLASS setzen.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 08.10.05 14:12
Den Source würd ich bei mir nichtmal im Ansatz so nehmen, da
1. Handles geöffnet werden, ohne sie wieder freizugeben
2. Man alle benötigten Infos für ein SetPriorityClass (sofern lokal für den eigenen Prozess) auch ohne OpenProcess ausführen kann.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 08.10.05 14:54
Warum nicht einfach:
Delphi-Quelltext 1:
| SetPriorityClass(GetCurrentProcess, PriorityClass); |
Von REALTIME_PRIORITY_CLASS ist allerdings dringenst abzuraten, da selbst wichtige Systemprozesse mit einer niedrigeren Priorität laufen. Außerdem garantiert selbst das nicht, dass kein anderer Thread außer deinem noch CPU Ziet zugeteilt bekommt.
Was willst du denn eigentlich machen?
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Sa 07.11.09 11:58
ManuelGS hat folgendes geschrieben : | | Windwos bringt den Befehl "start" mit. Starte mal die Eingabeaufforderung und gib "start /?" ein. Damit kannst du zwar ein Programm mit Echtzeit-Priorität starten, allerdings wohl nicht mehr runtersetzen. |
Wohl nicht? Also, in meinem Windows (2000) ist es möglich. Mehr noch: Nach meiner Beobachtung kann man die Prozeßpriorität jederzeit (also zum Start und während des Laufens) sowohl von außen (start.exe, Taskmanager & Co.) als auch von innen (d.h., vom Programm selbst) ändern (lassen). Ich vermute stark, daß für die Threads grundsätzlich gleiches gilt.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Sa 07.11.09 14:32
Du hast auf eine über 4 Jahre alte Frage geantwortet?!?
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|