Timeout intervals revisited

Gnuplot_058

Measured timeout intervals using std::chrono.

bool MyDrawingAreaS::on_timeout() {
	current = chrono::system_clock::now();
	auto diff1 = current - start;
	auto diff2 = current - current_b4;
	current_b4 = current;
	cout << "MyDrawingAreaS::on_timeout(): elapsed time = " << chrono::duration_cast<std::chrono::milliseconds>(diff1).count() 
             << " msec (delta = " << chrono::duration_cast<std::chrono::milliseconds>(diff2).count() << " msec),  count = "
             << count << ", nch = " << nch << endl;
% grep timer_value log.txt 
SoundIC7410::SoundIC7410(): timer_value = 125

% grep "MyDrawingAreaS::on_timeout(): elapsed time" log.txt | head -1 
MyDrawingAreaS::on_timeout(): elapsed time = 147 msec (delta = 147 msec),  count = 2, nch = 1

% grep "MyDrawingAreaS::on_timeout(): elapsed time" log.txt | awk '{print $9}' > on_timeout.txt

% gnuplot
> plot "on_timeout.txt"

% R
> x<-read.csv("on_timeout.txt")
> hist(x[,1], col="orange", breaks=200)

R Graphics: Device 2 (ACTIVE)_059

I do not know if the result is reasonable or not. With a very simple program like this:

#include <iostream>
#include <chrono>

void f(int n)
{
// lots of stuff
}

int main()
{
	std::chrono::time_point<std::chrono::system_clock> start, end, endb4;
	start = std::chrono::system_clock::now();
	endb4 = start;
	int n=35;
	for(int i=0;i<1000;i++) {
		f(n);
		end = std::chrono::system_clock::now();
		std::chrono::duration<double> elapsed_seconds = end-endb4;
		endb4 = end;
		if(i>0) std::cout <<  elapsed_seconds.count() << endl;
	}
}

we have the following results.

Gnuplot_060

R Graphics: Device 2 (ACTIVE)_061

Please also see my previous articles: Timeout Intervals, and Timeout Intervals (2).