/* Copyright (c) 2008-2015 Jan W. Krieger (, ), German Cancer Research Center (DKFZ) & IWR, University of Heidelberg last modification: $LastChangedDate: 2015-06-10 19:19:10 +0200 (Mi, 10 Jun 2015) $ (revision $Rev: 3976 $) This software is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License (LGPL) for more details. You should have received a copy of the GNU Lesser General Public License (LGPL) along with this program. If not, see . */ /* Name: jkqtphighrestimer.cpp Copyright: (c) 2007 Author: Jan krieger , http://www.jkrieger.de/ */ #include "jkqtphighrestimer.h" // class's header file JKQTPHighResTimer::JKQTPHighResTimer() { start(); } JKQTPHighResTimer::~JKQTPHighResTimer() { } void JKQTPHighResTimer::start(){ #ifdef __LINUX__ #endif #ifdef __WINDOWS__ LARGE_INTEGER fr; QueryPerformanceFrequency(&fr); freq=(double)(fr.QuadPart); QueryPerformanceCounter(&last); #else gettimeofday(&last,0); #endif }; double JKQTPHighResTimer::get_time(){ #ifdef __LINUX__ #endif #ifdef __WINDOWS__ LARGE_INTEGER now; QueryPerformanceCounter(&now); return ((double)(now.QuadPart-last.QuadPart)/freq)*1e6; #else struct timeval tv; gettimeofday(&tv,0); int t1, t2; t1 = last.tv_sec * 1000000 + last.tv_usec; t2 = tv.tv_sec * 1000000 + tv.tv_usec; return abs(t2 - t1); #endif }; void JKQTPHighResTimer::test(double* mean, double* stddev, unsigned long* histogram, double* histogram_x, unsigned long histogram_size){ unsigned long runs=1000000; double* h=(double*)malloc(runs*sizeof(double)); *mean = 0; *stddev = 0; /* time measurement */ double l=get_time(), n; for (unsigned long i=0; imymax) mymax=h[i]; if (h[i]0) { binwidth=(mymax-mymin)/(histogram_size-1); for (unsigned int i=0; i0) { unsigned long bin=(unsigned int)floor((h[i]-mymin)/binwidth); if (/*bin>=0 &&*/ bin