int main () {
struct timespec start, slut;
clock_gettime (clock_monotonic, &start);
// ... din programkode ...
clock_gettime (clock_monotonic, &slut);
// Beregn forløbet tid
dobbelt forløb =(slut.tv_sec - start.tv_sec) + (dobbelt) (slut.tv_nsec - start.tv_nsec) / 1000000000.0;
printf ("Time taget:%.6f sekunder \ n", forløbet);
// ... getRusage () eller tider () til yderligere information om ressourceforbrug ...
return 0;
}
`` `
3. Profileringsværktøjer:
* `gprof`: Analyser et program til at identificere tidsforbrug i forskellige funktioner.
* `Valgrind`: Et kraftfuldt værktøj til detektion af hukommelseslækage og præstationsanalyse.
* `perf`: Et kommandolinjeværktøj til præstationsprofilering.
Forståelse af tiderne:
* realtid: Den samlede vægurstid, som programmet tager at køre, inklusive tid brugt på at vente på I/O, andre processer osv.
* Brugertid: Det tidspunkt, programmet bruger på at udføre instruktioner i brugertilstand (dit programs kode).
* systemtid: Det tidspunkt, programmet bruger på at udføre instruktioner i kernetilstand (operativsystemfunktioner).
Valg af den rigtige metode:
* til simpel måling: Kommandoen 'Time' er tilstrækkelig.
* For mere detaljeret analyse: Brug systemopkald som `clock_gettime ()` og `getRusage ()`.
* til dybdegående profilering: Brug profileringsværktøjer som `GPROF ',' Valgrind 'eller' Perf '.
Vigtige noter:
* Nøjagtighed: Tidsmålinger kan påvirkes af faktorer som systembelastning og planlægning.
* Overhead: Tidsmålingsmetoder introducerer selv overhead, så vær opmærksom på dette, når du analyserer ydeevne.
* enheder: Tid måles ofte på få sekunder (r) eller nanosekunder (NS).
Fortæl mig, hvis du gerne vil have en mere detaljeret forklaring af en bestemt metode eller have et bestemt scenario i tankerne!