[Raspberry Pi] Compteur et précision
Bonjour,
CPU : Raspberry PI 4 B
OS : RASPBIAN
Langage : LAZARUS 2.0.0 + dfsg - 2
Compilateur : FPC 3.0.4
Je cherche à faire un genre de "chrono" pour mesurer des temps d'exécution de routine, donc avec une précision à la µs.
Mes recherches m'ont amenées à trouver l'exemple ci dessous, mais que je n'arrive pas à faire fonctionner.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| unit UCompteurNano;
{$mode objfpc}{$H+}
interface
uses
Classes, baseUnix, SysUtils, cthreads, Ctypes;
Procedure DebCompteur;
function FinCompteur:string;
Const
CLOCK_MONOTONIC = 1;
Type
timespec = record
tv_sec : time_t;
tv_nsec : clong;
end;
var startTime : timespec;
EndTime : timespec;
Procedure clock_gettime(clk_id : cint; tp:ptimespec); cdecl; external 'C' name 'clock_gettime';
implementation
Procedure DebCompteur;
begin
clock_gettime(CLOCK_MONOTONIC, @startTime);
end;
function FinCompteur:string;
Var duree:Int64;
begin
clock_gettime(CLOCK_MONOTONIC, @EndTime);
duree:=(EndTime.tv_sec - StartTime.tv_sec)*1000000000;
duree:=duree + (EndTime. tv_nsec - StartTime.tv_nsec);
result:=IntToStr(duree) + 'ns';
end;
end. |
D'après ce que j'en ai compris, j'utilise une librairie en "C" dans Lazarus, je pense que cette utilisation me pose des problèmes.
De plus je ne sais pas si cette librairie est installée sur mon Raspberry.
Lorsque je met les deux unités suivantes "cthreads, Ctypes", le code se compile, mais le programme ne se lance plus.
Si j'ajoute l'appel à la " DLL => clock_gettime ", le code ne se compile plus.
Si quelqu'un a des idées, je suis bien sur preneur !
bonne soirée.