BSONObj CurOp::infoNoauth() { BSONObjBuilder b; b.append("opid", _opNum); bool a = _active && _start; b.append("active", a); if ( _lockType ) { char str[2]; str[0] = _lockType; str[1] = 0; b.append("lockType" , str); } b.append("waitingForLock" , _waitingForLock ); if( a ) { b.append("secs_running", elapsedSeconds() ); } b.append( "op" , opToString( _op ) ); b.append("ns", _ns); _query.append( b , "query" ); if( !_remote.empty() ) { b.append("client", _remote.toString()); } if ( _client ) { b.append( "desc" , _client->desc() ); if ( _client->_threadId.size() ) b.append( "threadId" , _client->_threadId ); if ( _client->_connectionId ) b.appendNumber( "connectionId" , _client->_connectionId ); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); b.append( "msg" , buf.str() ); BSONObjBuilder sub( b.subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { b.append( "msg" , _message.toString() ); } } if( killed() ) b.append("killed", true); b.append( "numYields" , _numYields ); return b.obj(); }
BSONObj CurOp::info() { BSONObjBuilder b; b.append("opid", _opNum); bool a = _active && _start; b.append("active", a); if( a ) { b.append("secs_running", elapsedSeconds() ); } b.append( "op" , opToString( _op ) ); b.append("ns", _ns); if (_op == dbInsert) { _query.append(b, "insert"); } else { _query.append(b , "query"); } if( !_remote.empty() ) { b.append("client", _remote.toString()); } if ( _client ) { b.append( "desc" , _client->desc() ); if ( _client->_threadId.size() ) b.append( "threadId" , _client->_threadId ); if ( _client->_connectionId ) b.appendNumber( "connectionId" , _client->_connectionId ); _client->_ls.reportState(b); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); b.append( "msg" , buf.str() ); BSONObjBuilder sub( b.subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { b.append( "msg" , _message.toString() ); } } if( killPending() ) b.append("killPending", true); b.append( "numYields" , _numYields ); b.append( "lockStats" , _lockStat.report() ); return b.obj(); }
inline double TimeTracker::stop() { if(!started) { return 0; } else if(paused) { return elapsedSeconds(); } else { clock_t cur_time = clock(); offset += cur_time - start_time; start_time = 0; paused = true; return elapsedSeconds(); } }
void CurOp::reportState(BSONObjBuilder* builder) { builder->append("opid", _opNum); bool a = _active && _start; builder->append("active", a); if( a ) { builder->append("secs_running", elapsedSeconds() ); builder->append("microsecs_running", static_cast<long long int>(elapsedMicros()) ); } builder->append( "op" , opToString( _op ) ); // Fill out "ns" from our namespace member (and if it's not available, fall back to the // OpDebug namespace member). builder->append("ns", !_ns.empty() ? _ns.toString() : _debug.ns.toString()); if (_op == dbInsert) { _query.append(*builder, "insert"); } else { _query.append(*builder, "query"); } if ( !debug().planSummary.empty() ) { builder->append( "planSummary" , debug().planSummary.toString() ); } if( !_remote.empty() ) { builder->append("client", _remote.toString()); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); builder->append( "msg" , buf.str() ); BSONObjBuilder sub( builder->subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { builder->append( "msg" , _message.toString() ); } } if( killPending() ) builder->append("killPending", true); if (!getGlobalEnvironment()->getGlobalStorageEngine()->supportsDocLocking()) builder->append( "numYields" , _numYields ); }
void CurOp::reportState(BSONObjBuilder* builder) { builder->append("opid", _opNum); bool a = _active && _start; builder->append("active", a); if( a ) { builder->append("secs_running", elapsedSeconds() ); builder->append("microsecs_running", static_cast<long long int>(elapsedMicros()) ); } builder->append( "op" , opToString( _op ) ); builder->append("ns", _ns.toString()); if (_op == dbInsert) { _query.append(*builder, "insert"); } else { _query.append(*builder, "query"); } if ( !debug().planSummary.empty() ) { builder->append( "planSummary" , debug().planSummary.toString() ); } if( !_remote.empty() ) { builder->append("client", _remote.toString()); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); builder->append( "msg" , buf.str() ); BSONObjBuilder sub( builder->subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { builder->append( "msg" , _message.toString() ); } } if( killPending() ) builder->append("killPending", true); builder->append( "numYields" , _numYields ); builder->append( "lockStats" , _lockStat.report() ); }
void PerfectNumberLoop::run() { clock_t timer; long number = 2; startTimer(timer); for (; ; number++) { if (isPerfectNumber(number)) { printPerfectNumber(number); startTimer(timer); } if (timeIsDue(elapsedSeconds(timer))) break; } printLastNumber(number); }
inline double TimeTracker::start() { if(paused) { start_time = clock(); paused = false; return elapsedSeconds(); } else { offset = 0; start_time = clock(); started = true; return 0; } }
bool FPSTimer::update() { m_FrameCount++; if(elapsedMilliseconds() >= m_RefreshRate) { m_CurrentFPS = static_cast<double>(m_FrameCount) / elapsedSeconds(); m_FrameCount = 0; start(); return true; } return false; }
BSONObj CurOp::infoNoauth() { BSONObjBuilder b; b.append("opid", _opNum); bool a = _active && _start; b.append("active", a); if ( _lockType ) b.append("lockType" , _lockType > 0 ? "write" : "read" ); b.append("waitingForLock" , _waitingForLock ); if( a ){ b.append("secs_running", elapsedSeconds() ); } b.append( "op" , opToString( _op ) ); b.append("ns", _ns); if( haveQuery() ) { b.append("query", query()); } // b.append("inLock", ?? stringstream clientStr; clientStr << _remote.toString(); b.append("client", clientStr.str()); if ( _client ) b.append( "desc" , _client->desc() ); if ( ! _message.empty() ){ if ( _progressMeter.isActive() ){ StringBuilder buf(128); buf << _message << " " << _progressMeter.toString(); b.append( "msg" , buf.str() ); } else { b.append( "msg" , _message ); } } return b.obj(); }
std::string AppTimer::elapsedWithColons(){ auto secs = elapsedSeconds(); auto mins = 0, hours = 0; if (secs > 3600){ hours = secs / 3600; secs = secs - (hours * 3600); } if (secs > 60){ mins = secs / 60; secs = secs - (mins * 60); } std::stringstream ss; ss << std::setfill('0'); ss << std::setw(4) << hours << ":"; ss << std::setw(2) << mins << ":"; ss << std::setw(2) << static_cast<long int>(secs) << ""; return ss.str(); }
double Timer::elapsedSeconds(const Communicator& comm) const { return comm.broadcast(comm.mainProcNo(), elapsedSeconds()); }
std::shared_ptr<FrameBuffer> Frame::renderFrame(bool verifyCommit) { if (verifyCommit) { Node::traverse(VerifyNodes{}); commit(); } traverse("render"); auto fb1Node = child("frameBuffer").nodeAs<FrameBuffer>(); auto fb2Node = child("navFrameBuffer").nodeAs<FrameBuffer>(); // use nav FB? auto fbNode = (numAccumulatedFrames == 0 && fb1Node->child("size").valueAs<vec2i>() != fb2Node->child("size").valueAs<vec2i>()) ? fb2Node : fb1Node; auto rendererNode = child("renderer").nodeAs<Renderer>(); const bool accumBudgetReached = frameAccumulationLimit >= 0 && numAccumulatedFrames >= frameAccumulationLimit; const float varianceThreshold = rendererNode->child("varianceThreshold").valueAs<float>(); const float lastVariance = numAccumulatedFrames < 2 ? inf : rendererNode->getLastVariance(); const bool varianceReached = varianceThreshold > 0.f && lastVariance <= varianceThreshold; if (accumBudgetReached || varianceReached) { etaSeconds = elapsedSeconds(); return nullptr; } if (numAccumulatedFrames == 0) accumulationTimer.start(); rendererNode->renderFrame(fbNode); numAccumulatedFrames++; accumulationTimer.stop(); if (frameAccumulationLimit >= 0) etaAccumulation = frameAccumulationLimit * elapsedSeconds() / numAccumulatedFrames; if (varianceThreshold > 0.f) { const float currentVariance = rendererNode->getLastVariance(); if (numAccumulatedFrames == 4) { // need stable variance estimate firstVariance = currentVariance; firstSeconds = elapsedSeconds(); } // update estimate only on even frames (when variance was updated) if (((numAccumulatedFrames&1)==0) && numAccumulatedFrames >= 6) etaVariance = firstSeconds + (elapsedSeconds() - firstSeconds) / (1.f/sqr(currentVariance) - 1.f/sqr(firstVariance)) / sqr(varianceThreshold); } // whichever is earlier etaSeconds = std::min(etaVariance, etaAccumulation); return fbNode; }
inline std::string TimeTracker::asString() const { return timeAsString(elapsedSeconds()); }