Posts mit dem Label Delphi werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Delphi werden angezeigt. Alle Posts anzeigen

Sonntag, 11. August 2013

Extremgenaue Zeitmessung mit Assemblerbefehl RDTSC bei neueren Intelprozessoren wieder möglich

Ich hatte den Assemblerbefehl RDTSC in früheren Zeiten mit einem Prozessor, sprich "Single Core", sehr gerne für genaue Zeitmessungen/Profiling von Delphi-Programmroutinen verwendet. Doch mit der Verwendung von Dual Core oder Mehrkernprozessoren und Stromsparfunktionen arbeitete RDTSC nicht mehr mit einer konstanten Rate, sodass damit verläßliche Zeitmessungen nicht mehr möglich wurden und verwendete stattdessen die Windows API Queryperformancecounter. Doch vor einiger Zeit habe ich bemerkt, dass der RDTSC bei neueren Prozessoren wieder mit einer konstanten Rate arbeitet. Es scheint so zu sein, dass ab der Intel Nehalem Generation der RDTSC ähnlich wie bei AMD mit konstanter Rate unabhängig von der aktuellen Taktfrequenz läuft. Dieses Feature wird bei Intel mit "invariant TSC" bezeichnet.

Sonntag, 18. Juli 2010

Delphi Wrapper for Little CMS available (preliminary implementation)

Today I got a mail from Marti Maria that a preliminary implementation of a Delphi wrapper is available for download on the Little CMS 2 Blog. Since the version change to 2.0 there was no Delphi wrapper available. Marti wrote that the Delphi wrapper will be included officially in the release 2.1.
The preliminary release of the Delphi wrapper can be downloaded here.

Samstag, 5. Mai 2007

Unicode Ressource Dateien (*.res) erzeugen

Das Problem begann, als ich unter Delphi 7 verschiedene Sprachen über Ressource Dateien (*.res) per "STRINGTABLE" einbinden wollte, und diese dann bei Bedarf ins Programm reinladen wollte. Da ich unicodefähige Komponenten wie TNT Unicode-Controls (mittlerweile TMS Unicode Component Pack) verwendete, und somit Unicode darstellen konnte, wollte ich die verwendeten Sprachen gleich als Unicode in der Ressource-Datei gespeichert haben. Das Problem ist, dass ich mit den mitgelieferten Komponenten von Delphi 7, wie z. B. mit dem Befehl:

brc32 -r test.rc

keine unicodefähige
Ressource-Datei erzeugen konnte.
Die Lösung des Problems ist der "Ressource Compiler" von
Jeremy Gordon oder auch "GoRC". Was ich auch nicht ganz wusste, war, wie ich chinesische Zeichen in eine *.RC Datei einbetten konnte. Die Antwort fand ich in der MSDN-Dokumentation über "STRINGTABLE".
Eine Ressource-Datei könnte beispielsweise wie folgt aussehen:

STRINGTABLE
BEGIN
1 , L"\x4f60\x597d\x55ce"
2 , "Zeile 2"
END

Aus diesem Beispiel sieht auch, dass Unicode-Zeichendefinitionen mit ANSI-Zeichen gemischt werden können.

P.S.: Ich will nicht ausschließen, dass es unter Umständen mit irgendwelchen Tricks bei Delphi 7 doch irgendwie geht, dass man Unicode Ressource-Dateien erstellt. Ich bin natürlich für Hinweise dankbar.