Sign in Join
Wiki copytemporary

EpikTimer/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11(Befindet sich in Übersetzung...)
22
33### Beschreibung
44
55EpikTimer ermöglicht dem Programmierer eine extrem genaue Zeitmessung - etwa für sehr kurz aufeinanderfolgende Ereigniss. Epiktimer lässt sich einfach verwenden, verbraucht keine CPU-Resourcen und benötigt nur 25 Bytes zusätzlichen RAM bei der Ausführung des Programms. Intern unterstützt diese Komponente einen einzigen Timer - extern kann jedoch eine beliebige Anzahl an Zeitmessungen deklariert und ausgeführt werden.
66
77Die Komponente EpikTimer ist plattformunabhängig und wurde spezielle für die Lazarus-IDE sowie den FreePascal-Compiler geschrieben.
88
99### Autor
1010
1111Tom Lisjac
1212
1313#### Unterstützer
1414
1515- Felipe Monteiro de Carvalho
1616- Marcel Minderhoud
1717
1818### Lizenz
1919
2020[LGPL](http://www.opensource.org/licenses/lgpl-license.php) (Kontaktieren Sie den Autor, wenn die LGPL unvereinbar mit Ihrem Projekt ist)
2121
2222### Download
2323
2424In der Downloaddatei sind die EpikTimer Komponente, zugehörige Installationsroutinen sowie ein Beispielprogramm zur Illustration der Fähigkeiten der Komponente.
2525
2626Die neuste stabile Version gibt es auf der [Lazarus CCR-Dateien Website](http://sourceforge.net/project/showfiles.php?group_id=92177) oder [hier](http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98235).
2727
2828Status: Production/Stable
2929
3030### Änderungs Log
3131
3232- Initially written on 24-06-2003 TL
3333- Pre-release 30-06-2003 TL - Needs testing on the BSD's and Win32
3434- Version 0.1 1-7-2003 TL
3535
36361. initial beta release
3737
3838- Version 0.2 3-7-2003 TL
3939
40401. Revised logic around hardware detection to prevent executing extended instructions if the HasCapabilityData call returns false.
41412. Removed exposed low level diagnositic functions from unit interface.
42423. Revised demo.
4343
4444- Version 0.3 15-11-2005
4545
46461. Updated 0.2 version to make it compile on the latest Lazarus (0.9.10).
47472. Added LCL to the required packages.
48483. Changed mode to Delphi in order to compile.
49494. Changed windows timebase to use QueryPerformanceCounter, because has a much greater precision then GetSystemTime.
50505. Added changes to ensure the component compiles on Delphi 7.0
51516. Made tests on Windows and Linux
52527. Small changes to the demo to make it compile
5353
5454- Version 1.0 06-10-2006
5555
56561. Changes for 64 bits operation
57572. Added units BaseUnix, Unix and UnixUtil, removed oldlinux (obsolete)
58583. Gettimeofday -\> fpGettimeofday
59594. Changed systemsleep for 64 bits systems
60605. Some changes in timeval
61616. Tested on AMD64 (linux)
6262
6363### Abhängigkeiten / Systemvoraussetzungen
6464
6565- Für eine nanosekundengenaue Zeitmessung wird eine Intel-Pentium-kompatible CPU mit einem "Timestamp Counter" benötigt.
6666- Eine mikrosekundengenaue Zeitmessung wird auf allen Systemen unterstützt.
6767
6868Getestet auf den folgenden Systemen:
6969
7070- Pentium IV 3,2Mhz (Unter Linux wie Windows mit großer Präzession (~ 3,220,000,000 ticks per second))
7171- Pentium 233Mhz unter Damm Small Linux. Arbeitet mit Hardware Uhr.
7272- Mobile AMD 64 Athlon 3200+ unter Windows XP Home (32 bit), Lazarus 9.13
7373- AMD 64 CPU, unter Ubuntu Linux 64 bit, Lazarus 9.18.
7474
7575Issues: Muss noch unter FreeBSD sowie älteren Rechnern ohne TSC-Hardware getestet werden.
7676
7777### Installation
7878
7979- Starten Sie Lazarus.
8080- Öffnen Sie im Menü "Komponenten -\> Package-Datei öffnen" die Datei "etpackage.lpk".
8181- Kompilieren Sie die Komponente testweise, um sicher zu gehen, dass sie vollständig ist.
8282- Erstellen Sie Lazarus erneut unter "Werkzeuge -\> Lazarus erstellen"
8383
8484- Die Komponente EpicTimer erscheint nun in dem Reiter "System" (Stoppuhr-Icon)
8585
8686### Verwendung
8787
8888Ziehen sie die Komponente auf ein Formular. Die Komponente beinhaltet eine Timer-Instanz, die parameterlos gestartet, gestoppt, abgefragt und zurückgesetzt werden kann.
8989
9090**Beispiel: Timer ET**
9191
9292`Procedure InstrumentedCall;`\
9393`  Begin`\
9494`    ET.Clear; // optional... timer is cleared at creation`\
9595`    ET.Start;`\
9696`    ExecuteFirstTimedSection;`\
9797`    ET.Stop; // the timer is actually paused and can be restarted later`\
9898`    TimedSection1:=ET.Elapsed; // store the elapsed in a global`\
9999`    MakeAnUntimedOverheadCall; // not counted in the timer`\
100100`    ET.Start; //resume the timer... continue accumulating ticks`\
101101`    CallTimedSection2;`\
102102`    TimedSection2:=ET.Elapsed; //timer keeps running... we've just sample it.`\
103103`    CallTimedSection3;`\
104104`    CallSomethingElse;`\
105105`    TimedSection3:=ET.Elapsed; //keep counting... tap the elapsed`\
106106`    CallTimedSection4;`\
107107`    TimedSection4:=ET.Elapsed; //keep counting... tap the elapsed`\
108108`    ET.clear // done... timer is stopped and zeroed`\
109109`  end;`
110110
111111Sie können aus einer einzigen Komponente eine beliebige Anzahl an Timer erstellen, indem Sie einen TimerData-record deklarieren. You can also create any number of timers from a single component on the form by declaring a TimerData record and passing it as a parameter to start, stop, elapsed and clear using the overloaded methods in the component. Ein Beispiel wäre:
112112
113113`Function TimedExecution:Extended;`\
114114`  Var DiskAccessTime:TimerData;`\
115115`  Begin`\
116116`    ET.Clear(DiskAccessTimer); // Declared timers *must* be cleared before use. `\
117117`    ET.Start(DiskAccessTimer);`\
118118`    ExecuteTheTimedSection;`\
119119`    Result:=ET.Elapsed(DiskAccessTimer); // the timer keeps running...`\
120120`    etc...`
121121
122122One particular use for EpikTimer is checking is a given amount of time has elapsed before continuing with a task or to another iteration of the same task.
123123
124124 DelayInSeconds := 8.5; // oder einen beliebigen Wert
125125 OldTime := ET.Elapse;
126126
127127 while ((ET.Elapsed - OldTime) < DelayInSeconds) do
128128 begin
129129 ET.SystemSleep(10);
130130 end;
131131
132132 // DelayInSeconds ist abgelaufen und jetzt können sie mit der Ausführung des Codes fortfahren
133133
134134Siehe etdemo.pas für zusätzliche Beispiele der Verwendung der Komponente.
135135
136136### Die ETDemo Anwendung
137137
138138Zum Kompilieren und Ausführen der ETDemo Anwendung ist es nicht erforderlich, dass EpikTimer installiert ist. Ich mochte noch nie eine Palette voller Komponenten nur um herauszufinden, dass ich keine von ihnen mag! :)
139139
140140**Installation**
141141
142142- Öffnen sie etdemo.lpi
143143- Kompilieren
144144- Starten
145145
146146### Mitwirkende
147147
148148Diese Seite wurde vom epikwiki konvertiert. Der originale Inhalt stammt von Tom Lisjac.\
149-\
150149
151150---
152151*From the Free Pascal wiki, page "EpikTimer/de", as it stood on 2015-09-27 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
153152Category: FCL/de

Back to history