<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Cool way to catch the problem, but some of the failing tests are failing for other reasons like this (on factory-win7.kitware) and for some reason they all pass on the Mac. Looks like 44 fail on ubuntu, that might be the more accurate count.</div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; "><br></span></div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; ">Exception detected while reading C:/Dashboards/Client/base/ITK-Gerrit-bin/Testing/Temporary/PatchBasedDenoisingImageFilterTest0.mha : Could not create IO object for file C:/Dashboards/Client/base/ITK-Gerrit-bin/Testing/Temporary/PatchBasedDenoisingImageFilterTest0.mha</span></div><pre>The file doesn't exist. </pre><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; ">Filename = C:/Dashboards/Client/base/ITK-Gerrit-bin/Testing/Temporary/PatchBasedDenoisingImageFilterTest0.mha</span> </div><div><br></div><div><br></div><div>-Kris</div><br><div><blockquote type="cite"><div><br>------------------------------<br><br>Message: 3<br>Date: Tue, 3 Jul 2012 10:26:02 -0400<br>From: Bradley Lowekamp <<a href="mailto:blowekamp@mail.nih.gov">blowekamp@mail.nih.gov</a>><br>Subject: [Insight-developers] Performance Impact of using GetInput<br>To: ITK Developers <<a href="mailto:Insight-developers@itk.org">Insight-developers@itk.org</a>><br>Cc: Bill, Hans Johnson <<a href="mailto:hans.j.johnson@gmail.com">hans.j.johnson@gmail.com</a>>,<span class="Apple-tab-span" style="white-space:pre">        </span>Luis Ibanez<br><span class="Apple-tab-span" style="white-space:pre">        </span><<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>><br>Message-ID: <<a href="mailto:B8BE902D-3531-4FC4-BB95-98646584596E@mail.nih.gov">B8BE902D-3531-4FC4-BB95-98646584596E@mail.nih.gov</a>><br>Content-Type: text/plain; charset="us-ascii"<br><br>Hello,<br><br>A user yesterday, was reporting that going from ITK 3.20 to ITK 4.1, the SignedMaurerDistanceMapImageFilter was running more that 2x-3x the time. With a little bit of poking around and sampling the run time, I was able to develop the following patch:<br><br><a href="http://review.source.kitware.com/#/">http://review.source.kitware.com/#/</a>c/6367/<br><br>I find that difference to be quite significant difference, and is on the level of a bug.<br><br>The lead me to wonder how wide spread is this incorrect usage. So I added an atomic counter to the GetInput, and GetOutput methods, and when they exceed a threshold, an exception is throw. This is to detect when these methods may be used in an inner loop.<br><br><a href="http://review.source.kitware.com/#/">http://review.source.kitware.com/#/</a>c/6369/<br><br><br>I get the following test failure (where previously there was none):<br><br><br>97% tests passed, 71 tests failed out of 2382<br><br>The following tests FAILED:<br><span class="Apple-tab-span" style="white-space:pre">        </span>160 - itkN4BiasFieldCorrectionImageFilterTest1 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>161 - itkN4BiasFieldCorrectionImageFilterTest2 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>311 - itkMultiThreaderEnvTest88 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>313 - itkMultiThreaderEnvTest123 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>398 - itkFFTConvolutionImageFilterTest4x4Mean (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>399 - itkFFTConvolutionImageFilterTest4x5Mean (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>400 - itkFFTConvolutionImageFilterTest5x5Mean (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>401 - itkFFTConvolutionImageFilterTest4x4MeanValidRegion (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>402 - itkFFTConvolutionImageFilterTest4x5MeanValidRegion (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>403 - itkFFTConvolutionImageFilterTest5x5MeanValidRegion (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>420 - itkRichardsonLucyDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>421 - itkRichardsonLucyDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>422 - itkLandweberDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>423 - itkLandweberDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>425 - itkProjectedLandweberDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>426 - itkProjectedLandweberDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>427 - itkInverseDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>428 - itkInverseDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>429 - itkTikhonovDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>430 - itkTikhonovDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>431 - itkWienerDeconvolutionImageFilterGaussianKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>432 - itkWienerDeconvolutionImageFilterIrregularKernelTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>433 - itkParametricBlindLeastSquaresDeconvolutionImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>436 - itkDeformableSimplexMesh3DBalloonForceFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>440 - itkPatchBasedDenoisingImageFilterTest0 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>441 - itkPatchBasedDenoisingImageFilterTestGaussian (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>442 - itkPatchBasedDenoisingImageFilterTestRician (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>443 - itkPatchBasedDenoisingImageFilterTestPoisson (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>521 - itkDisplacementFieldToBSplineImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>524 - itkContourMeanDistanceImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>525 - itkContourDirectedMeanDistanceImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>530 - itkHausdorffDistanceImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>532 - itkSignedMaurerDistanceMapImageFilterTest1 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>533 - itkSignedMaurerDistanceMapImageFilterTest2 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>656 - itkFastMarchingImageFilterTest_torus_multipleSeeds_NoTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>657 - itkFastMarchingImageFilterTest_torus_multipleSeeds_StrictTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>658 - itkFastMarchingImageFilterTest_torus_multipleSeeds_NoHandlesTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>659 - itkFastMarchingImageFilterTest_wm_multipleSeeds_NoTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>660 - itkFastMarchingImageFilterTest_wm_multipleSeeds_StrictTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>661 - itkFastMarchingImageFilterTest_wm_multipleSeeds_NoHandlesTopo (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1072 - itkBSplineControlPointImageFilterTest2 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1079 - itkCyclicShiftImageFilterTest0 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1080 - itkCyclicShiftImageFilterTest1 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1081 - itkCyclicShiftImageFilterTest2 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1082 - itkCyclicShiftImageFilterTest3 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1083 - itkCyclicShiftImageFilterTest4 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1084 - itkCyclicShiftImageFilterTest5 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1085 - itkCyclicShiftImageFilterTest6 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1195 - itkModulusImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1377 - itkExtensionVelocitiesImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1378 - itkCannySegmentationLevelSetImageFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1412 - itkTwoLevelSetsv4DenseImage2DTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1471 - itkSimplexMeshVolumeCalculatorTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1659 - itkBinaryMask3DQuadEdgeMeshSourceTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1747 - itkPointSetToPointSetRegistrationTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1774 - itkDiffeomorphicDemonsRegistrationFilterTest01 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1775 - itkDiffeomorphicDemonsRegistrationFilterTest02 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1776 - itkDiffeomorphicDemonsRegistrationFilterTest03 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1777 - itkDiffeomorphicDemonsRegistrationFilterTest04 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1778 - itkDiffeomorphicDemonsRegistrationFilterTest05 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1779 - itkDiffeomorphicDemonsRegistrationFilterTest06 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1780 - itkDiffeomorphicDemonsRegistrationFilterTest07 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1781 - itkDiffeomorphicDemonsRegistrationFilterTest08 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1782 - itkDiffeomorphicDemonsRegistrationFilterTest09 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1783 - itkDiffeomorphicDemonsRegistrationFilterTest10 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1784 - itkDiffeomorphicDemonsRegistrationFilterTest11 (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>1802 - itkFastSymmetricForcesDemonsRegistrationFilterTest (Failed)<br><span class="Apple-tab-span" style="white-space:pre">        </span>2166 - itkVoronoiSegmentationImageFilterTest (Failed)<br><br><br>How big of a deal if most of the filters here are running 2x+ slower then what they should be? Is it big enough to delay the Release and do another RC with the fixes?<br><br>I have also been looking at the methods used in GetInput, specifically the methods used to create the std::string... It seems to be if we change the return value to a const std::string &, then we could keep a static internal table of the common value and return reference to the static table to even, references to what is in the std::map, the would reduce the need for mallocs for std::string.<br><br>Thoughts on what to do?<br><br>Brad</div></blockquote></div></body></html>