int main () {
Struct Timespec start, slut;
clock_getTime (clock_monotonic, &start);
// ... din programkod ...
CLOCK_GETTIME (clock_monotonic, &end);
// beräkna förfluten tid
dubbel förfalskat =(end.tv_sec - start.tv_sec) + (dubbel) (end.tv_nsec - start.tv_nsec) / 1000000000.0;
printf ("Tiden taget:%.6f sekunder \ n", förflutit);
// ... getRusage () eller Times () för ytterligare information om resursanvändning ...
return 0;
}
`` `
3. Profilverktyg:
* `gProf`: Analyserar ett program för att identifiera tid som används i olika funktioner.
* `ValGrind`: Ett kraftfullt verktyg för detektering av minnesläckor och prestandanalys.
* `perf`: Ett kommandoradsverktyg för prestandaprofilering.
Förstå tiderna:
* realtid: Den totala väggklockan som programmet tar för att köra, inklusive tid som väntar på I/O, andra processer etc.
* Användartid: Den tid programmet spenderar på att utföra instruktioner i användarläge (programmets kod).
* Systemtid: Den tid programmet spenderar på att utföra instruktioner i kärnläge (operativsystemfunktioner).
Att välja rätt metod:
* för enkel mätning: Kommandot "Time" är tillräckligt.
* För mer detaljerad analys: Använd systemsamtal som `clock_getTime ()` och `getRusage ()`.
* för djupgående profilering: Använd profilverktyg som `gProf`,` ValGrind` eller `perf`.
Viktiga anteckningar:
* noggrannhet: Tidsmätningar kan påverkas av faktorer som systembelastning och schemaläggning.
* overhead: Tidsmätningsmetoderna själva introducerar omkostnader, så var medveten om detta när du analyserar prestanda.
* enheter: Tiden mäts ofta på några sekunder eller nanosekunder (NS).
Låt mig veta om du vill ha en mer detaljerad förklaring av någon specifik metod eller ha ett visst scenario i åtanke!