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.
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
The file doesn't exist.
Filename = C:/Dashboards/Client/base/ITK-Gerrit-bin/Testing/Temporary/
PatchBasedDenoisingImageFilterTest0.mha
-Kris
------------------------------
Message: 3
Date: Tue, 3 Jul 2012 10:26:02 -0400
From: Bradley Lowekamp <[email protected]>
Subject: [Insight-developers] Performance Impact of using GetInput
To: ITK Developers <[email protected]>
Cc: Bill, Hans Johnson <[email protected]>, Luis Ibanez
<[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"
Hello,
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:
http://review.source.kitware.com/#/c/6367/
I find that difference to be quite significant difference, and is on
the level of a bug.
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.
http://review.source.kitware.com/#/c/6369/
I get the following test failure (where previously there was none):
97% tests passed, 71 tests failed out of 2382
The following tests FAILED:
160 - itkN4BiasFieldCorrectionImageFilterTest1 (Failed)
161 - itkN4BiasFieldCorrectionImageFilterTest2 (Failed)
311 - itkMultiThreaderEnvTest88 (Failed)
313 - itkMultiThreaderEnvTest123 (Failed)
398 - itkFFTConvolutionImageFilterTest4x4Mean (Failed)
399 - itkFFTConvolutionImageFilterTest4x5Mean (Failed)
400 - itkFFTConvolutionImageFilterTest5x5Mean (Failed)
401 - itkFFTConvolutionImageFilterTest4x4MeanValidRegion (Failed)
402 - itkFFTConvolutionImageFilterTest4x5MeanValidRegion (Failed)
403 - itkFFTConvolutionImageFilterTest5x5MeanValidRegion (Failed)
420 - itkRichardsonLucyDeconvolutionImageFilterGaussianKernelTest
(Failed)
421 - itkRichardsonLucyDeconvolutionImageFilterIrregularKernelTest
(Failed)
422 - itkLandweberDeconvolutionImageFilterGaussianKernelTest (Failed)
423 - itkLandweberDeconvolutionImageFilterIrregularKernelTest
(Failed)
425 -
itkProjectedLandweberDeconvolutionImageFilterGaussianKernelTest
(Failed)
426 -
itkProjectedLandweberDeconvolutionImageFilterIrregularKernelTest
(Failed)
427 - itkInverseDeconvolutionImageFilterGaussianKernelTest (Failed)
428 - itkInverseDeconvolutionImageFilterIrregularKernelTest (Failed)
429 - itkTikhonovDeconvolutionImageFilterGaussianKernelTest (Failed)
430 - itkTikhonovDeconvolutionImageFilterIrregularKernelTest (Failed)
431 - itkWienerDeconvolutionImageFilterGaussianKernelTest (Failed)
432 - itkWienerDeconvolutionImageFilterIrregularKernelTest (Failed)
433 - itkParametricBlindLeastSquaresDeconvolutionImageFilterTest
(Failed)
436 - itkDeformableSimplexMesh3DBalloonForceFilterTest (Failed)
440 - itkPatchBasedDenoisingImageFilterTest0 (Failed)
441 - itkPatchBasedDenoisingImageFilterTestGaussian (Failed)
442 - itkPatchBasedDenoisingImageFilterTestRician (Failed)
443 - itkPatchBasedDenoisingImageFilterTestPoisson (Failed)
521 - itkDisplacementFieldToBSplineImageFilterTest (Failed)
524 - itkContourMeanDistanceImageFilterTest (Failed)
525 - itkContourDirectedMeanDistanceImageFilterTest (Failed)
530 - itkHausdorffDistanceImageFilterTest (Failed)
532 - itkSignedMaurerDistanceMapImageFilterTest1 (Failed)
533 - itkSignedMaurerDistanceMapImageFilterTest2 (Failed)
656 - itkFastMarchingImageFilterTest_torus_multipleSeeds_NoTopo
(Failed)
657 - itkFastMarchingImageFilterTest_torus_multipleSeeds_StrictTopo
(Failed)
658 -
itkFastMarchingImageFilterTest_torus_multipleSeeds_NoHandlesTopo
(Failed)
659 - itkFastMarchingImageFilterTest_wm_multipleSeeds_NoTopo (Failed)
660 - itkFastMarchingImageFilterTest_wm_multipleSeeds_StrictTopo
(Failed)
661 - itkFastMarchingImageFilterTest_wm_multipleSeeds_NoHandlesTopo
(Failed)
1072 - itkBSplineControlPointImageFilterTest2 (Failed)
1079 - itkCyclicShiftImageFilterTest0 (Failed)
1080 - itkCyclicShiftImageFilterTest1 (Failed)
1081 - itkCyclicShiftImageFilterTest2 (Failed)
1082 - itkCyclicShiftImageFilterTest3 (Failed)
1083 - itkCyclicShiftImageFilterTest4 (Failed)
1084 - itkCyclicShiftImageFilterTest5 (Failed)
1085 - itkCyclicShiftImageFilterTest6 (Failed)
1195 - itkModulusImageFilterTest (Failed)
1377 - itkExtensionVelocitiesImageFilterTest (Failed)
1378 - itkCannySegmentationLevelSetImageFilterTest (Failed)
1412 - itkTwoLevelSetsv4DenseImage2DTest (Failed)
1471 - itkSimplexMeshVolumeCalculatorTest (Failed)
1659 - itkBinaryMask3DQuadEdgeMeshSourceTest (Failed)
1747 - itkPointSetToPointSetRegistrationTest (Failed)
1774 - itkDiffeomorphicDemonsRegistrationFilterTest01 (Failed)
1775 - itkDiffeomorphicDemonsRegistrationFilterTest02 (Failed)
1776 - itkDiffeomorphicDemonsRegistrationFilterTest03 (Failed)
1777 - itkDiffeomorphicDemonsRegistrationFilterTest04 (Failed)
1778 - itkDiffeomorphicDemonsRegistrationFilterTest05 (Failed)
1779 - itkDiffeomorphicDemonsRegistrationFilterTest06 (Failed)
1780 - itkDiffeomorphicDemonsRegistrationFilterTest07 (Failed)
1781 - itkDiffeomorphicDemonsRegistrationFilterTest08 (Failed)
1782 - itkDiffeomorphicDemonsRegistrationFilterTest09 (Failed)
1783 - itkDiffeomorphicDemonsRegistrationFilterTest10 (Failed)
1784 - itkDiffeomorphicDemonsRegistrationFilterTest11 (Failed)
1802 - itkFastSymmetricForcesDemonsRegistrationFilterTest (Failed)
2166 - itkVoronoiSegmentationImageFilterTest (Failed)
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?
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.
Thoughts on what to do?
Brad
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers