Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   "Programm-Bremse" gesucht (https://www.delphipraxis.net/151509-programm-bremse-gesucht.html)

rollstuhlfahrer 20. Mai 2010 20:44

Re: "Programm-Bremse" gesucht
 
Ich glaube, ich muss nochmal erwähnen, dass bei dem Verlangsam-Thread der Prozess nur 1 einzige CPU verwenden darf (Stichwort: SetProcessAffinity() ). Ansonsten kann es wunderbar passieren, dass auf der einen CPU der Langsammacher läuft und auf der anderen das eigentliche Programm. So etwas sollte nicht passieren. Und es geht hier nicht unbedingt drum, verschiedene Operationen langsamer auszuführen, sondern einfach nur die Anzahl an Ausgeführten Operationen pro Zeiteinheit zu verringern. Da Windows immer die volle Last verwendet, wenn diese gebraucht wird, muss man Windows einfach sagen, dass der Rest schon durch was anderes belegt ist, und zwar hier der Langsammachthread. Das mit dem RAM-Zugriff ist nicht, um das RAM zu füllen, sondern um die RAM-Übertragungsgeschwindigkeit zu beeinflussen. Hier geht es ja auch um Bits pro Zeiteinheit. Es sollen nicht mehr Bits pro Zeiteinheit drüber, sondern weniger. Dazu muss man nicht unbedingt das RAM langsamer machen, sondern nur die Restkapazitäten voll ausreizen und dann wird der RAM-Zugriff tatsächlich langsamer, weil schon genug Müll drauf und wieder runter geht.

Wie ist denn die Idee, den virtuellen RAM so knapp zu machen, dass Windows generell auf die Festplatte auslagern muss?

Bernhard

PS: Das mit den zeitgesteuerten Screenshots finde ich nicht gut, weil zuerst fertig gezeichnet wird und erst dann der Screenshot aufgenommen wird. Es geht ja darum, Probleme während des Zeichnens zu finden und nicht danach.

s.h.a.r.k 20. Mai 2010 23:24

Re: "Programm-Bremse" gesucht
 
Zitat:

Zitat von Medium
Wenn ich das richtig verstanden habe s.h.a.r.k, geht es doch nicht um Kompatibilitätstests mit alter Hardware, sondern einfach darum das Programm beim debuggen auszubremsen, um Effekte sichtbar zu machen, die sonst einfach nur zu schnell wieder vom Auge verschwunden sind. Ich muss zwar zugeben diesen Wunsch bislang nie verspürt zu haben, aber vorstellen kann ich's mir schon :)

Naja, was ich halt sagen will ist (was sich scheinbar noch nicht ganz herauskristalisiert hat :mrgreen: ), dass es an sich unmöglich ist diverse Hardware-Features einfach "abzuschalten" und die CPU in den gewünschten "Mach-mal-langsam-Modus" zu setzen. Selbst durch Auslastung aller Cores wird das wahrscheinlich nicht funktionieren, da jedes OS wohl ein Load-Balancing eingebaut hat. Zumal ich echt jedem i7-Besitzer viel Spass wünsche *alle* seine Cores komplett auszulasten. Große Server mit vielen gleichzeitigen Zugriffen kommen da evetl. an ihre Grenzen.

Bandbreite zwischen RAM und CPU ist auch meist en masse vorhanden, ebenso zwischen HDD und CPU (zu diesem Punkt noch was weiter unten). Diese ganzen Punkte sind einfach Hardware-bedingt vorhanden. Und sowas effizient per Stück Software wie gewünscht ausblenden oder sonst was damit machen, halte ich für echt nicht sinnvoll(!) machbar.

Zitat:

Zitat von Medium
Dieser Slugger-Thread ist dennoch so eine Sache, eben N-Core vor allem, und überhaupt hat man damit schon arg wenig Kontrolle über das was das OS draus macht. Ich würde evtl. eher dazu übergehen zu entsprechenden Schlüsselpunkten programmgesteuert Screenshots zu speichern (das kostet sogar auch Zeit! ;) ). Also quasi ein visuelles Debug-Log.

Das mit dem Thread ist totaler Quatsch, da das OS damit macht, was es will -- soll es ja auch können, daher ist das OS ja da! Man kann scheinbar einen Thread auf eine CPU festnageln, aber ob das wirklich was bringt? Die Idee mit dem Screenshot ist auch so eine Sache. Wie viele Screenshots willst denn erstellen? Wann genau? Erwischst du genau die Stelle, an der es u. U. ein Problem gibt? Ist das dann evtl. auch noch reproduzierbar/korrigierbar?

Zitat:

Wie ist denn die Idee, den virtuellen RAM so knapp zu machen, dass Windows generell auf die Festplatte auslagern muss?
Und zu diesem Punkt: Windows lagert wohl intelligent aus und nicht einfach total planlos, ergo wirst du den Effekt eher weniger nutzen können, um die Verarbeitung enorm zu verlangsamen oder so Effekte feststellen zu können, die man sonst nur auf langsamen Rechnern hat.

Ich lasse mich echt gerne vom Gegenteil überzeugen, aber die Entwickler der heutigen Software und Hardware werden sich wohl Gedanken gemacht haben, sodass mehrere Programme nebenher einigermaßen gleich schnell laufen. Und je neuer die Hardware, desto schneller sollte es (in den meisten) Fällen sein, auch wenn man da Threads und was weiß ich noch alles einbaut...

Medium 21. Mai 2010 00:55

Re: "Programm-Bremse" gesucht
 
Zitat:

Zitat von rollstuhlfahrer
PS: Das mit den zeitgesteuerten Screenshots finde ich nicht gut, weil zuerst fertig gezeichnet wird und erst dann der Screenshot aufgenommen wird. Es geht ja darum, Probleme während des Zeichnens zu finden und nicht danach.

Es geht doch hier um eigenen Code oder? Wo ist dann das Problem, an Verdachtsstellen den betreffenden DC einfach fix in ein Bitmap zu schippern? Das kann ich, im Extremfall, nach jeder Zeichenoperation tun, oder aber an wichtigen/interessanten Stellen. Wenn während einer (von Windows aus gesehen) elementaren Zeichenoperation etwas schief läuft, ist ohnehin böse was im Argen, zumal diese ja wirklich sehr elementar sind. Das komplexeste ist da fast noch der Floodfill...

Und falls es hier beim TE um potenziell sichtbare "Glitches" während des Zeichnens geht, aber nach getaner Arbeit alles gut ausschaut: Hier im Forum suchenOffscreen Bitmap! (Sollte bei komplexerem aus mehreren Operationen zusammengezeichnetem ohnehin immer gemacht werden.)

taaktaak 21. Mai 2010 10:43

Re: "Programm-Bremse" gesucht
 
Moin, Moin.
Ich möchte mich bei allen Beteiligten für die interessanten Beträge bedanken. So wie Weltreiche entstehen und wieder vergehen, hat sich nun auch der Gedanke des "Nutzlos-Threads" in Luft aufgelöst. Ich werde nun, wie mehrfach vorgetragen, einfach mein altes Notebook für derartige Tests verwenden :-D

himitsu 21. Mai 2010 11:19

Re: "Programm-Bremse" gesucht
 
Es kommt ja immer darauf an, was du genau testen willst.

Einiges kann man ja auch innerhalb der Anwendung, über ein paar Sleep oder kleine Schleifchen, ausbremsen.
Also wenn es nur um ein paar bestimmte Stellen geht.

Oder wenn man wissen will, wo in einem bestimmten Code die meißte Zeit verloren geht, dann erstelt man sich halt ein Zeitprofil (Zeiten zu messen sollte nicht das Problem sein)

Dreamer69 21. Jun 2012 00:31

AW: "Programm-Bremse" gesucht
 
Auch wenn der Thread nun über 2 Jahre alt ist möchte ich etwas dazu beitragen.
Bei der Gelegenheit möchte ich mich bei allen hier bedanken.
Ich konnte hier sehr viele nützliche Tipps finden.


Ich hatte auch das Problem ein Programm ausbremsen zu müssen (Videoencoder), da, insbesondere in den Sommermonaten, mein PC beim stundenlangen encoden viel zu heiß wurde.
Abgesehen davon wurden andere Programme ausgebremst.

Ich nutze BES – Battle Encoder Shirase und es funktioniert einwandfrei.
http://mion.faireal.net/BES/

Vielleicht hilft es ja dem einen oder anderen.

lbccaleb 21. Jun 2012 07:02

AW: "Programm-Bremse" gesucht
 
Nicht getestet, weil ich von sowas eigentlich nicht so viel halte -.-

http://www.pcwelt.de/downloads/Cpuki...4-1301401.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz