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 ======================================================== Bradley Lowekamp Medical Science and Computing for Office of High Performance Computing and Communications National Library of Medicine [email protected]
_______________________________________________ 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
