/* timeFunction.cpp */ #include "noDefaultMethods.h" #include "pvType.h" #include "timeStamp.h" namespace epics { namespace pvData { class TimeFunctionRequester { public: virtual void function() = 0; }; class TimeFunction : private NoDefaultMethods { public: TimeFunction(TimeFunctionRequester *requester); ~TimeFunction(); double timeCall(); private: TimeFunctionRequester *requester; }; TimeFunction::TimeFunction(TimeFunctionRequester *requester) : requester(requester) {} TimeFunction::~TimeFunction() {} double TimeFunction::timeCall() { TimeStamp startTime(0,0); TimeStamp endTime(0,0); double perCall = 0.0; long ntimes = 1; while(true) { startTime.getCurrent(); for(long i=0; ifunction(); endTime.getCurrent(); double diff = TimeStamp::diffInSeconds(&endTime,&startTime); if(diff>=1.0) { perCall = diff/(double)ntimes; break; } ntimes *= 2; } return perCall; } }}