diff --git a/tools/times.c b/tools/times.c new file mode 100644 index 000000000..e05f7bd66 --- /dev/null +++ b/tools/times.c @@ -0,0 +1,41 @@ +#include +#include +#include + +int main() { + FILE *f = fopen("times.log", "rt"); + if (!f) + return 1; + + char lines[64][64] = {0}; + + int n = 0; + float mintime=0.0f, maxtime=0.0f; + char rev[10] = {0}; + char line[128] = {0}; + while (fgets(line,sizeof(line),f) && n < 64) { + if (strchr(line,'\r')) + *strchr(line,'\r') = 0; + if (strchr(line,'\n')) + *strchr(line,'\n') = 0; + if (strncmp(line,"HEAD is now at ", 15) == 0) { + if (rev[0]) + sprintf(lines[n++],"%s: %.1f - %.1f", rev, mintime, maxtime); + strncpy(rev, line+15, 7); + mintime = 0.0f; + maxtime = 0.0f; + } + if (strncmp(line,"Overall time:",13)==0) { + float time = atof(line+14); + if (mintime < 0.1f || time < mintime) + mintime = time; + else if (time > maxtime) + maxtime = time; + } + } + + while (n > 0) + printf("%s\n", lines[--n]); + + return 0; +} diff --git a/tools/times.sh b/tools/times.sh new file mode 100644 index 000000000..67eddf4da --- /dev/null +++ b/tools/times.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Simple script to generate times.log that contains timing information for the last 20 revisions +# Typically these commands shall be used to get times.txt: +# mkdir src +# cp lib/* src/ <- fill src/ with some source code +# tools/times.sh +# gcc -o tools/times tools/times.c +# tools/times + +git checkout -b old + +make clean + +git reset --hard HEAD > times.log + +for i in {0..20} + do + make CXXFLAGS=-O2 -j4 + echo "$i" + ./cppcheck -q --showtime=summary --enable=all --inconclusive src 2> /dev/null >> times.log + ./cppcheck -q --showtime=summary --enable=all --inconclusive src 2> /dev/null >> times.log + ./cppcheck -q --showtime=summary --enable=all --inconclusive src 2> /dev/null >> times.log + ./cppcheck -q --showtime=summary --enable=all --inconclusive src 2> /dev/null >> times.log + git reset --hard HEAD^1 >> times.log + done +