AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows Thread-Performance wenn minimiert
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Thread-Performance wenn minimiert

Ein Thema von BigAl · begonnen am 12. Sep 2022 · letzter Beitrag vom 5. Okt 2022
Antwort Antwort
Seite 1 von 2  1 2      
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#1

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 10:45
Ich vermute das der Thread in Priorität eine Stufe herb gesetzt wird sobald die Anwendung nicht den Focus hat.

Das die Anwendung die im Vordergrund ist hat immer die höhere Priorität.

Kannst das ausprobieren mit zwei gleichen Anwendungen und eine davon im Vordergund. Dann sollte diese schneller sein.
Das mit dem Fokus war auch mein erster Gedanke. Allerdings merke ich erst einen Verlangsamung wenn ich die Anwendung minimiere. Lass ich das Fenster offen und lege eine andere Anwendung in den Vordergrund bleibt die Genauigkeit...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#2

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 11:16
Also: Habe mal Now etwas näher analysiert. Die Auflösung ist - meiner Meinung nach - 1 ms:

Delphi-Quellcode:
var
  OldTime: TDateTime = 0.0;
  OldTick: UInt64;
  Times: TArray<TDateTime>;
begin
  try
    OldTick := GetTickCount64;
    repeat
      if Now <> OldTime then
      begin
        Times := Times + [Now];
        OldTime := Now;
      end;
    until GetTickCount64 > OldTick + 20;

    WriteLn;

    for var I := Low(Times) to High(Times) do
      WriteLn(I:5, ' = ', FormatDateTime('hh:nn:ss.zzz', Times[I]));

    ReadLn;
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
end.
Als Ergebnis erhalte ich z.B.:
Code:
    0 = 12:14:49.512
    1 = 12:14:49.513
    2 = 12:14:49.514
    3 = 12:14:49.515
    4 = 12:14:49.516
    5 = 12:14:49.517
    6 = 12:14:49.518
    7 = 12:14:49.519
    8 = 12:14:49.520
    9 = 12:14:49.521
   10 = 12:14:49.522
   11 = 12:14:49.523
   12 = 12:14:49.524
   13 = 12:14:49.525
   14 = 12:14:49.526
   15 = 12:14:49.527
   16 = 12:14:49.528
   17 = 12:14:49.529
   18 = 12:14:49.530
   19 = 12:14:49.531
   20 = 12:14:49.532
   21 = 12:14:49.533
   22 = 12:14:49.534
   23 = 12:14:49.535
   24 = 12:14:49.536
   25 = 12:14:49.537
Warum wird überall (z.B. SO) behauptet die Auflösung sei bestenfalls 16ms, eher 20ms???
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 11:31
Ein "Hintergrund"-Thread läuft doch über den Dispatcher des Main-Threads soweit ich weiß, zumindest unter Windows.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#4

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 11:31
Ok. hab eben mal ein paar anderen Maschinen getestet. Auflösung auf älteren Rechner 16ms auf aktuellen 1ms...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 12:08
Noch einmal:

Wie Windows sein Thread-Scheduling macht ist ein Implementierungs-Detail.

Das kann sich durch ein kleines Windows-Update ändern (und es hat sich in der Vergangenheit auch mehrmals geändert!), oder abhängig von verwendeten Architektur oder gar CPU-Modell sein. Verlass dich da nicht drauf.

Es ist abhängig von der aktuellen PC-Auslastung, welche Anwendung grade im Vordergrund ist (wie du bereits feststellen musstest) und wer weiß was noch.

Wenn dir das Standard-Verhalten (Windows macht, was es für das beste hält) nicht reicht, dann musst du schauen, wie sich das über die Windows-API beeinflussen lässt.

PS: Ich habe keinen Beleg, aber ich glaube Zeiten im Millisekunden-Bereich und darunter zu messen ist das Hantieren mit Fließkommazahlen nicht die beste Methode. Nimm besser eine TStopWatch aus System.Diagnostics .
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.379 Beiträge
 
Delphi 12 Athens
 
#6

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 13:37
Und aufpassen, ob du dein Programm aus Delphi (F9) startest, oder von extern.

Die Delphi-IDE fummelt seit einer Weile am SystemTimeAdjustment rum, so dass solche Timer plötzlich schneller/öfters reagieren.


Es gibt mehrere Implementationen von Higher-Resolution-Timers (z.B. im DirectX),
aber so lange man nicht an der Kernzuordnung und Priorität der Threads rumfummelt, kann man ganz kleine Intervalle eh vergessen.



Es ist möglich seinen Thread auf einen Kern zu begrenzen
und wenn man dann noch ALLE anderen aktuellen/zukünftigen Threads ALLER anderern Anwendungen davon ausschließt, dann wäre man dort alleine und hätte theoretisch die volle Zeit zur Verfügung.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Sep 2022 um 13:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
717 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 15:32
Um was für Daten geht es eigentlich? Es gibt ja auch die Möglichkeit ganz auf einen PC zu verzichten.
Ich hatte für sowas mal einen Raspberry PI laufen. Oder man geht noch weiter runter zum Arduino, der kann auch WiFi, wenn er muss.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#8

AW: Windows Thread-Performance wenn minimiert

  Alt 12. Sep 2022, 15:35
Um was für Daten geht es eigentlich? Es gibt ja auch die Möglichkeit ganz auf einen PC zu verzichten.
Ich hatte für sowas mal einen Raspberry PI laufen. Oder man geht noch weiter runter zum Arduino, der kann auch WiFi, wenn er muss.
Es geht um die Datenerfassung an einer Industrieanlage. Da hat ein Pi nichts verloren . Die Daten kommen von einer SPS...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.379 Beiträge
 
Delphi 12 Athens
 
#9

AW: Windows Thread-Performance wenn minimiert

  Alt 13. Sep 2022, 12:36
Wie schon gesagt:
Und aufpassen, ob du dein Programm aus Delphi (F9) startest, oder von extern.

Die Delphi-IDE fummelt seit einer Weile am SystemTimeAdjustment rum, so dass solche Timer plötzlich schneller/öfters reagieren.
Danke @shebang für das Schlagwort, denn
https://www.delphipraxis.net/206889-...ml#post1482408
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.688 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Windows Thread-Performance wenn minimiert

  Alt 13. Sep 2022, 19:12
Man kann auch bei Windows 10 noch einstellen, wie die Performance bei Vordergrund- und Hintergrund-Programmen aufgeteilt werden soll:

This PC -> Properties -> Advanced System Settings -> Advanced -> Performance -> Settings -> Advanced -> Processor Scheduling

Dort von "Programs" auf "Background Services" umstellen.

Danach sollte die Thread-Performance von Vordergrund und Hintergrundprogrammen gleich sein. So zumindest die Theorie.

(Es kann sein, dass man zu dieser Einstellung auch einfacher hinkommt, aber dies ist die, die ich gerade gefunden habe.)
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
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