modelCacheState DlSatTester :: reportNodeCached ( DlCompletionTree* node ) { doCacheNode(node); enum modelCacheState status = newNodeCache.getState(); switch ( status ) { case csValid: incStat(nCachedSat); if ( LLM.isWritable(llGTA) ) LL << " cached(" << node->getId() << ")"; break; case csInvalid: incStat(nCachedUnsat); break; case csFailed: case csUnknown: incStat(nCacheFailed); if ( LLM.isWritable(llGTA) ) LL << " cf(c)"; status = csFailed; break; default: fpp_unreachable(); } return status; }
bool DlSatTester :: canBeCached ( DlCompletionTree* node ) { DlCompletionTree::const_label_iterator p; bool shallow = true; unsigned int size = 0; // check whether node cache is allowed if ( unlikely(!tBox.useNodeCache) ) return false; // nominal nodes can not be cached if ( unlikely(node->isNominalNode()) ) return false; incStat(nCacheTry); // check applicability of the caching for ( p = node->beginl_sc(); p != node->endl_sc(); ++p ) { if ( DLHeap.getCache(p->bp()) == NULL ) { incStat(nCacheFailedNoCache); if ( LLM.isWritable(llGTA) ) LL << " cf(" << p->bp() << ")"; return false; } shallow &= DLHeap.getCache(p->bp())->shallowCache(); ++size; } for ( p = node->beginl_cc(); p != node->endl_cc(); ++p ) { if ( DLHeap.getCache(p->bp()) == NULL ) { incStat(nCacheFailedNoCache); if ( LLM.isWritable(llGTA) ) LL << " cf(" << p->bp() << ")"; return false; } shallow &= DLHeap.getCache(p->bp())->shallowCache(); ++size; } // it's useless to cache shallow nodes if ( shallow && size != 0 ) { incStat(nCacheFailedShallow); if ( LLM.isWritable(llGTA) ) LL << " cf(s)"; return false; } return true; }
void DlSatTester :: restore ( unsigned int newTryLevel ) { fpp_assert ( !Stack.empty () ); fpp_assert ( newTryLevel > 0 ); // skip all intermediate restores setCurLevel(newTryLevel); // update split level if ( getCurLevel() < splitRuleLevel ) splitRuleLevel = 0; // restore local bContext = Stack.top(getCurLevel()); restoreBC(); // restore tree CGraph.restore(getCurLevel()); // restore TODO list TODO.restore(getCurLevel()); incStat(nStateRestores); if ( LLM.isWritable(llSRState) ) LL << " sr(" << getCurLevel() << ")"; #ifdef __DEBUG_SAVE_RESTORE writeRoot(llSRState); #endif }
void LLViewerStats::updateFrameStats(const F64 time_diff) { if (mPacketsLostPercentStat.getCurrent() > 5.0) { incStat(LLViewerStats::ST_LOSS_05_SECONDS, time_diff); } if (mSimFPS.getCurrent() < 20.f && mSimFPS.getCurrent() > 0.f) { incStat(LLViewerStats::ST_SIM_FPS_20_SECONDS, time_diff); } if (mSimPhysicsFPS.getCurrent() < 20.f && mSimPhysicsFPS.getCurrent() > 0.f) { incStat(LLViewerStats::ST_PHYS_FPS_20_SECONDS, time_diff); } if (time_diff >= 0.5) { incStat(LLViewerStats::ST_FPS_2_SECONDS, time_diff); } if (time_diff >= 0.125) { incStat(LLViewerStats::ST_FPS_8_SECONDS, time_diff); } if (time_diff >= 0.1) { incStat(LLViewerStats::ST_FPS_10_SECONDS, time_diff); } if (gFrameCount && mLastTimeDiff > 0.0) { // new "stutter" meter setStat(LLViewerStats::ST_FPS_DROP_50_RATIO, (getStat(LLViewerStats::ST_FPS_DROP_50_RATIO) * (F64)(gFrameCount - 1) + (time_diff >= 2.0 * mLastTimeDiff ? 1.0 : 0.0)) / gFrameCount); // old stats that were never really used setStat(LLViewerStats::ST_FRAMETIME_JITTER, (getStat(LLViewerStats::ST_FRAMETIME_JITTER) * (gFrameCount - 1) + fabs(mLastTimeDiff - time_diff) / mLastTimeDiff) / gFrameCount); F32 average_frametime = gRenderStartTime.getElapsedTimeF32() / (F32)gFrameCount; setStat(LLViewerStats::ST_FRAMETIME_SLEW, (getStat(LLViewerStats::ST_FRAMETIME_SLEW) * (gFrameCount - 1) + fabs(average_frametime - time_diff) / average_frametime) / gFrameCount); F32 max_bandwidth = gViewerThrottle.getMaxBandwidth(); F32 delta_bandwidth = gViewerThrottle.getCurrentBandwidth() - max_bandwidth; setStat(LLViewerStats::ST_DELTA_BANDWIDTH, delta_bandwidth / 1024.f); setStat(LLViewerStats::ST_MAX_BANDWIDTH, max_bandwidth / 1024.f); } mLastTimeDiff = time_diff; }
bool DlSatTester :: findConcept ( const CWDArray& lab, BipolarPointer p ) { #ifdef ENABLE_CHECKING fpp_assert ( isCorrect(p) ); // sanity checking // constants are not allowed here fpp_assert ( p != bpTOP ); fpp_assert ( p != bpBOTTOM ); #endif incStat(nLookups); return lab.contains(p); }
void DlSatTester :: save ( void ) { // save tree CGraph.save(); // save ToDoList TODO.save(); // increase tryLevel ++tryLevel; Manager.ensureLevel(getCurLevel()); // init BC clearBC(); incStat(nStateSaves); if ( LLM.isWritable(llSRState) ) LL << " ss(" << getCurLevel()-1 << ")"; #ifdef __DEBUG_SAVE_RESTORE writeRoot(llSRState); #endif }
bool DlSatTester :: findConceptClash ( const CWDArray& lab, BipolarPointer p, const DepSet& dep ) { #ifdef ENABLE_CHECKING fpp_assert ( isCorrect(p) ); // sanity checking // constants are not allowed here fpp_assert ( p != bpTOP ); fpp_assert ( p != bpBOTTOM ); #endif incStat(nLookups); for ( const_label_iterator i = lab.begin(), i_end = lab.end(); i < i_end; ++i ) if ( i->bp() == p ) { // create clashSet clashSet = i->getDep(); clashSet.add(dep); return true; } // we are able to insert a concept return false; }