Moving debug output in ~ContextObj under a conditional. Should fix most of the slowdo...
authorChristopher L. Conway <christopherleeconway@gmail.com>
Thu, 15 Apr 2010 16:56:06 +0000 (16:56 +0000)
committerChristopher L. Conway <christopherleeconway@gmail.com>
Thu, 15 Apr 2010 16:56:06 +0000 (16:56 +0000)
src/context/context.cpp

index d371dc39a439a030cdd28c0e3e464362f3905b4c..ca6564cf5d9563cb2e672431718c2e8a7f7ed6cb 100644 (file)
@@ -227,9 +227,13 @@ ContextObj* ContextObj::restoreAndContinue() throw(AssertionException) {
 
 
 void ContextObj::destroy() throw(AssertionException) {
-  Debug("context") << "before destroy " << this
-                   << " (level " << getLevel() << "):" << std::endl
-                   << *getContext() << std::endl;
+  if( Debug.isOn("context") ) {
+    /* Context can be big and complicated, so we only want to process this output
+     * if we're really going to use it. (Same goes below.)
+     */
+    Debug("context") << "before destroy " << this << " (level " << getLevel()
+          << "):" << std::endl << *getContext() << std::endl;
+  }
   for(;;) {
     // If valgrind reports invalid writes on the next few lines,
     // here's a hint: make sure all classes derived from ContextObj in
@@ -242,14 +246,18 @@ void ContextObj::destroy() throw(AssertionException) {
     if(d_pContextObjRestore == NULL) {
       break;
     }
-    Debug("context") << "in destroy " << this << ", restore object is "
-                     << d_pContextObjRestore << " at level "
-                     << d_pContextObjRestore->getLevel() << ":" << std::endl
-                     << *getContext() << std::endl;
+    if( Debug.isOn("context") ) {
+      Debug("context") << "in destroy " << this << ", restore object is "
+            << d_pContextObjRestore << " at level "
+            << d_pContextObjRestore->getLevel() << ":" << std::endl
+            << *getContext() << std::endl;
+    }
     restoreAndContinue();
   }
-  Debug("context") << "after destroy " << this << ":" << std::endl
-                   << *getContext() << std::endl;
+  if( Debug.isOn("context") ) {
+    Debug("context") << "after destroy " << this << ":" << std::endl
+          << *getContext() << std::endl;
+  }
 }