Laufzeit berechnen

Im ZSH
julio@acer ~> time ./programa
Hello World!
./programa 1.54s user 0.03s system 97% cpu 1.611 total
julio@acer ~> type -a time
time is a reserved word
julio@acer ~> which time
time: shell reserved word
julio@acer ~> sudo pacman -S time
julio@acer ~> /usr/bin/time ./programa
Hello World!
1.39user 0.00system 0:01.41elapsed 99%CPU (0avgtext+0avgdata 8940maxresident)k
0inputs+0outputs (0major+758minor)pagefaults 0swaps
julio@acer ~> /usr/bin/time -v ./programa
Hello World!
Command being timed: "./programa"
User time (seconds): 1.57
System time (seconds): 0.05
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.63
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 8936
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 758
Voluntary context switches: 1
Involuntary context switches: 181
Swaps: 0
File system inputs: 0
File system outputs: 3160
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
julio@acer ~> /usr/bin/time -p ./programa
Hello World!
real 1.45
user 1.44
sys 0.00
alias time='/usr/bin/time -p'
C/C++
Für präziseres Messen einzelner Codeabschnitte (Profiling) eignet sich unter Linux/FreeBSD
clock_gettime aus time.h:
#include <ctime>
timespec diff(timespec start, timespec end)
{
timespec temp;
if (end.tv_nsec - start.tv_nsec < 0)
{
temp.tv_sec = end.tv_sec - start.tv_sec-1;
temp.tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec;
}
else
{
temp.tv_sec = end.tv_sec - start.tv_sec;
temp.tv_nsec = end.tv_nsec - start.tv_nsec;
}
return temp;
}
int main()
{
timespec time1, time2;
clock_gettime(CLOCK_REALTIME, &time1);
// ... ... ...
clock_gettime(CLOCK_REALTIME, &time2);
cout << diff(time1,time2).tv_sec << ":"
<< diff(time1,time2).tv_nsec << endl;
return 0;
}
Kompilieren mit g++ -lrt -o programa programa.cpp, Ausgabe z. B.:
julio@acer ~> ./programa
0:7674929

Ich bin ein brasilianischer Computeringenieur mit Wohnsitz in Deutschland und begeistere mich für Technik, Wissenschaft, Fotografie und Sprachen.
Ich programmiere seit etwa zwei Jahrzehnten und habe dabei alles von mobilen Apps und Webentwicklung bis hin zu Machine Learning erkundet. Derzeit fokussiere ich mich auf Cloud‑SRE und Data Engineering.
Ich engagiere mich ehrenamtlich in den Open‑Source- und Python‑Communities, helfe bei der Organisation der PyCon DE und PyData Berlin, betreue als Mentor und trage mit Code und Übersetzungen bei.
In meinem Blog teile ich Linux‑Tipps, Einrichtungsanleitungen und persönliche Notizen, die ich als spätere Referenz geschrieben habe. Ich hoffe, dass sie auch anderen nützlich sind. Die Inhalte sind in mehreren Sprachen verfügbar.
Schau dir meine Galerie an, um einige meiner Fotografien zu sehen.
Abseits der Tastatur findest du mich auf Konzerten, beim Klarinettenspiel, Radfahren, Tauchen oder beim Erkunden neuer Orte, Kulturen und Küchen.
Ich freue mich immer über den Austausch! 🙂