Index: /trunk/ppImage/src/ppImageAddNoise.c
===================================================================
--- /trunk/ppImage/src/ppImageAddNoise.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageAddNoise.c	(revision 37406)
@@ -18,4 +18,6 @@
     return true;
   }
+
+  // psTimerStart("add.noise");
 
   // grizy variances to add to turn MD exposure -> 3pi, calculated from the DRM 
@@ -96,4 +98,6 @@
   psFree(stats);
   
+  // psLogMsg ("ppImage", 5, "add noise: %f sec\n", psTimerMark ("add.noise"));
+
   return true;
 }
Index: /trunk/ppImage/src/ppImageAuxiliaryMask.c
===================================================================
--- /trunk/ppImage/src/ppImageAuxiliaryMask.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageAuxiliaryMask.c	(revision 37406)
@@ -67,4 +67,6 @@
         return true;
     }
+
+    // psTimerStart("aux.mask");
 
     bool status;
@@ -208,4 +210,6 @@
     }
 
+    // psLogMsg ("ppImage", 5, "auxiliary mask: %f sec\n", psTimerMark ("aux.mask"));
+
     return true;
 }
Index: /trunk/ppImage/src/ppImageCheckCTE.c
===================================================================
--- /trunk/ppImage/src/ppImageCheckCTE.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageCheckCTE.c	(revision 37406)
@@ -17,4 +17,6 @@
         return true;
     }
+
+    // psTimerStart("check.cte");
 
     // add recipe options supplied on command line
@@ -106,4 +108,6 @@
     psFree (statsDefaults);
 
+    // psLogMsg ("ppImage", 5, "check CTE: %f sec\n", psTimerMark ("check.cte"));
+
     return true;
 }
Index: /trunk/ppImage/src/ppImageCheckNoise.c
===================================================================
--- /trunk/ppImage/src/ppImageCheckNoise.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageCheckNoise.c	(revision 37406)
@@ -17,4 +17,6 @@
         return true;
     }
+
+    // psTimerStart("check.noise");
 
     // add recipe options supplied on command line
@@ -124,4 +126,6 @@
     psFree (statsDefaults);
 
+    // psLogMsg ("ppImage", 5, "check noise: %f sec\n", psTimerMark ("check.noise"));
+
     return true;
 }
Index: /trunk/ppImage/src/ppImageDetrendFringe.c
===================================================================
--- /trunk/ppImage/src/ppImageDetrendFringe.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageDetrendFringe.c	(revision 37406)
@@ -327,4 +327,6 @@
     pmCell *cell = NULL;
 
+    // psTimerStart("apply.fringe");
+
     assert (options->doFringe); // do not call if not needed
     assert (inputView->chip != -1);
@@ -386,4 +388,6 @@
     }
 
+    // psLogMsg ("ppImage", 5, "apply fringe: %f sec\n", psTimerMark ("apply.fringe"));
+
     psFree (view);
     return true;
Index: /trunk/ppImage/src/ppImageDetrendPattern.c
===================================================================
--- /trunk/ppImage/src/ppImageDetrendPattern.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageDetrendPattern.c	(revision 37406)
@@ -35,5 +35,7 @@
     // chip.
 
+    // psTimerStart("apply.pattern");
     if (options->doPatternRow) {
+
         bool status;
 	pmHDU *hdu = pmHDUFromChip(chip);
@@ -193,4 +195,7 @@
 
  pattern_done:
+
+    // psLogMsg ("ppImage", 5, "apply pattern: %f sec\n", psTimerMark ("apply.pattern"));
+
     return(true);
 }
Index: /trunk/ppImage/src/ppImageDetrendReadout.c
===================================================================
--- /trunk/ppImage/src/ppImageDetrendReadout.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageDetrendReadout.c	(revision 37406)
@@ -7,4 +7,6 @@
 bool ppImageDetrendReadout(pmConfig *config, ppImageOptions *options, pmFPAview *view)
 {
+  // psTimerStart("detrend.readout");
+
     // construct a view for the detrend images (which have only one readout)
     pmFPAview *detview = pmFPAviewAlloc(0);
@@ -35,4 +37,5 @@
       }
     }
+    // psLogMsg ("ppImage", 6, "check gain: %f sec\n", psTimerMark ("detrend.readout"));
 
     // Check to see if we're in a chip that contains video
@@ -56,4 +59,5 @@
     }
     done_video_check:
+    // psLogMsg ("ppImage", 6, "check video: %f sec\n", psTimerMark ("detrend.readout"));
 
     // Masking on the basis of pixel value needs to be done before anything else, so the values are pristine.
@@ -66,4 +70,5 @@
 	  return false;
 	}
+	// psLogMsg ("ppImage", 6, "generate mask: %f sec\n", psTimerMark ("detrend.readout"));
     }
     // apply the externally supplied mask to the input->mask pixels
@@ -77,4 +82,5 @@
       }
       pmMaskBadPixels(input, mask, options->maskValue);
+      // psLogMsg ("ppImage", 6, "apply mask: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -83,4 +89,5 @@
         // extern bool ppImageBurntoolApply(pmConfig *, ppImageOptions *, pmFPAview *, pmReadout *);
         ppImageBurntoolApply(config, options, view, input);
+	// psLogMsg ("ppImage", 6, "apply burntool: %f sec\n", psTimerMark ("detrend.readout"));
     }
     
@@ -93,4 +100,5 @@
             ppImageBurntoolMask(config,options,view,input);
         }
+	// psLogMsg ("ppImage", 6, "apply burntool mask: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -102,4 +110,5 @@
 	return false;
       }
+      // psLogMsg ("ppImage", 6, "subtract overscan: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -111,4 +120,5 @@
 	return(false);
       }
+      // psLogMsg ("ppImage", 6, "nonlinear correction: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -148,4 +158,5 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "apply bias: %f sec\n", psTimerMark ("detrend.readout"));
     }
     
@@ -218,4 +229,5 @@
 	}
         psFree (noiseImage);
+	// psLogMsg ("ppImage", 6, "generate variance: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -226,4 +238,5 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "apply dark: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -235,4 +248,5 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "mask remnance: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -244,4 +258,5 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "shutter correction: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -253,4 +268,5 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "apply flat: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -276,4 +292,5 @@
 
         psBinaryOp(input->image, input->image, "*", psScalarAlloc(norm, PS_TYPE_F32));
+	// psLogMsg ("ppImage", 6, "renormalize: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
@@ -324,4 +341,6 @@
 
         psFree (classID);
+
+	// psLogMsg ("ppImage", 6, "renormalize by class: %f sec\n", psTimerMark ("detrend.readout"));
     }
 # endif
@@ -333,8 +352,10 @@
             return false;
         }
+	// psLogMsg ("ppImage", 6, "measure fringe: %f sec\n", psTimerMark ("detrend.readout"));
     }
 
     ppImageMemoryDump("detrend");
 
+    // psLogMsg ("ppImage", 5, "detrend readout: %f sec\n", psTimerMark ("detrend.readout"));
     psFree(detview);
     return true;
Index: /trunk/ppImage/src/ppImageMosaic.c
===================================================================
--- /trunk/ppImage/src/ppImageMosaic.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageMosaic.c	(revision 37406)
@@ -9,4 +9,6 @@
 {
     bool status;                        // Status of MD lookup
+
+    // psTimerStart("mosaic.chip");
 
     pmFPAfile *in = psMetadataLookupPtr(&status, config->files, inFile); // Input file
@@ -63,4 +65,6 @@
     }
 
+    // psLogMsg ("ppImage", 5, "mosaic chip: %f sec\n", psTimerMark ("mosaic.chip"));
+
     return status;
 }
Index: /trunk/ppImage/src/ppImageParityFlip.c
===================================================================
--- /trunk/ppImage/src/ppImageParityFlip.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageParityFlip.c	(revision 37406)
@@ -19,4 +19,6 @@
 
     if (!options->applyParity) return true;
+
+    // psTimerStart("parity.flip");
 
     // find the currently selected readout
@@ -152,4 +154,5 @@
 	}
     }
+    // psLogMsg ("ppImage", 5, "parity flip: %f sec\n", psTimerMark ("parity.flip"));
 
     FIX_CONCEPT(cell->concepts, "CELL.XPARITY", S32, xParityTarget);
Index: /trunk/ppImage/src/ppImagePixelStats.c
===================================================================
--- /trunk/ppImage/src/ppImagePixelStats.c	(revision 37405)
+++ /trunk/ppImage/src/ppImagePixelStats.c	(revision 37406)
@@ -10,4 +10,6 @@
 {
     bool mdok;              // Status of MD lookup
+
+    // psTimerStart("pixel.stats");
 
     // loop over the cells/readouts for this chip
@@ -81,4 +83,6 @@
     }
 
+    // psLogMsg ("ppImage", 5, "measure pixel stats: %f sec\n", psTimerMark ("pixel.stats"));
+
     psFree (view);
     return true;
Index: /trunk/ppImage/src/ppImageRebinReadout.c
===================================================================
--- /trunk/ppImage/src/ppImageRebinReadout.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageRebinReadout.c	(revision 37406)
@@ -12,4 +12,6 @@
     pmFPAfile *outFile = psMetadataLookupPtr(NULL, config->files, outName);
     if (outFile == NULL) return false;
+
+    // psTimerStart("rebin.chip");
 
     // XXX double check that chip != -1?
@@ -40,4 +42,6 @@
     }
 
+    // psLogMsg ("ppImage", 5, "rebin chip for %s: %f sec\n", outName, psTimerMark ("rebin.chip"));
+
     return true;
 }
Index: /trunk/ppImage/src/ppImageSetMaskBits.c
===================================================================
--- /trunk/ppImage/src/ppImageSetMaskBits.c	(revision 37405)
+++ /trunk/ppImage/src/ppImageSetMaskBits.c	(revision 37406)
@@ -11,4 +11,6 @@
         return false;
     }
+
+    // psTimerStart("set.mask.bits");
 
     // at this point we know we have valid values for required entries SAT, BAD, FLAT, BLANK:
@@ -57,4 +59,6 @@
                            options->markValue);
 
+    // psLogMsg ("ppImage", 5, "set mask bits: %f sec\n", psTimerMark ("set.mask.bits"));
+
     return true;
 }
