/* $Id$ Copyright (C) 2007 by The Regents of the University of California Redistribution of this file is permitted under the terms of the BSD license Date: 09/17/2007 Author: Alexander Behm */ #include "statsutil.h" StatsUtil:: StatsUtil(TimeFormat t) { resetFilterTreeStats(&filterTreeStats); resetSearchStats(&searchStats); tformat = t; } void StatsUtil:: resetFilterTreeStats(FilterTreeStats* target) { memset(target, 0, sizeof(FilterTreeStats)); } void StatsUtil:: resetSearchStats(SearchStats* target) { memset(target, 0, sizeof(SearchStats)); } double StatsUtil:: getTimeMeasurement(TimeFormat format) { unsigned totalTime = (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec); double tval = 0; switch(format) { case TFSEC: tval = static_cast(totalTime) / 1000000; break; case TFMSEC: tval = static_cast(totalTime) / 1000; break; case TFUSEC: tval = static_cast(totalTime); break; } return tval; } double StatsUtil:: getTimeMeasurement() { unsigned totalTime = (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec); double tval = 0; switch(tformat) { case TFSEC: tval = static_cast(totalTime) / 1000000; break; case TFMSEC: tval = static_cast(totalTime) / 1000; break; case TFUSEC: tval = static_cast(totalTime); break; } return tval; } void StatsUtil:: addSearchStats(SearchStats* target) { target->thresholdTime += searchStats.thresholdTime; target->preprocessTime += searchStats.preprocessTime; target->mergeTime += searchStats.mergeTime; target->postprocessTime += searchStats.postprocessTime; target->totalSearchTime += searchStats.totalSearchTime; target->candidateStrings += searchStats.candidateStrings; target->panicTime += searchStats.panicTime; target->numberPanics += searchStats.numberPanics; target->threshold += searchStats.threshold; } void StatsUtil:: avgSearchStats(SearchStats* target, float n) { target->thresholdTime /= n; target->preprocessTime /= n; target->mergeTime /= n; target->postprocessTime /= n; target->totalSearchTime /= n; target->candidateStrings /= n; target->panicTime /= n; target->threshold /= n; //target->numberPanics = (unsigned) ceil( (float)target->numberPanics / n ); } void StatsUtil:: writeSearchStats(ofstream& fp_out, FilterTreeStats* fts, SearchStats* ss) { fp_out << fts->dictionarySize << ";" << fts->maxChildren << ";" << ss->thresholdTime << ";" << ss->preprocessTime << ";" << ss->mergeTime << ";" << ss->postprocessTime << ";" << ss->panicTime << ";" << ss->totalSearchTime << ";" << ss->candidateStrings << ";" //<< ss->numberPanics << endl; << ss->numberPanics << ";" << fts->buildFilterTreeTime << endl; }