Marius,

Sound like a great idea! Those are some great looking numbers. Also keep in 
mind that I got rather difference performance for different types with fill.

Using std::copy, and std::fill are both good things. Keep an eye out for usage 
of std::copy too, that can have even bigger change in performance.

Brad

On Apr 10, 2013, at 8:26 AM, <[email protected]> wrote:

> Hi Brad,
>  
> I saw your gerrit topic http://review.source.kitware.com/#/c/10762/
> And I wondered whether such a change would have implications elsewhere in the 
> toolkit, most notably the image registration framework where array.Fill(0) is 
> used quite a lot for initialization of derivatives and transform parameters.
>  
> So, I did a test, see the attached code, to compare an itk.Fill with a 
> standard C fill using a for loop, with a C++ fill using std::fill_n. The 
> results are in favour of the C++ way, for a tested array size between 1e2 and 
> 1e7.
>  
> On my Win7 64bit machine using VS2008:
>  
> Array size = 100, repetitions = 20000000
> The elapsed time for a itk.Fill   2483 ms.
> The elapsed time for a C   fill   4748 ms.
> The elapsed time for a C++ fill_n 543 ms.
>  
> Array size = 1000, repetitions = 2000000
> The elapsed time for a itk.Fill   2418 ms.
> The elapsed time for a C   fill   4585 ms.
> The elapsed time for a C++ fill_n 404 ms.
>  
> Array size = 10000, repetitions = 200000
> The elapsed time for a itk.Fill   2534 ms.
> The elapsed time for a C   fill   4605 ms.
> The elapsed time for a C++ fill_n 618 ms.
>  
> Array size = 100000, repetitions = 20000
> The elapsed time for a itk.Fill   2553 ms.
> The elapsed time for a C   fill   4593 ms.
> The elapsed time for a C++ fill_n 580 ms.
>  
> Array size = 1000000, repetitions = 2000
> The elapsed time for a itk.Fill   2605 ms.
> The elapsed time for a C   fill   4665 ms.
> The elapsed time for a C++ fill_n 1284 ms.
>  
> Array size = 10000000, repetitions = 200
> The elapsed time for a itk.Fill   3289 ms.
> The elapsed time for a C   fill   4780 ms.
> The elapsed time for a C++ fill_n 1168 ms.
>  
> ---
> On my linux Ubuntu with gcc 4.6.3:
>  
> Array size = 100, repetitions = 20000000
> The elapsed time for a itk.Fill   1870000 ms.
> The elapsed time for a C   fill   1660000 ms.
> The elapsed time for a C++ fill_n 490000 ms.
>  
> Array size = 1000, repetitions = 2000000
> The elapsed time for a itk.Fill   1520000 ms.
> The elapsed time for a C   fill   1520000 ms.
> The elapsed time for a C++ fill_n 390000 ms.
>  
> Array size = 10000, repetitions = 200000
> The elapsed time for a itk.Fill   1510000 ms.
> The elapsed time for a C   fill   1500000 ms.
> The elapsed time for a C++ fill_n 380000 ms.
>  
> Array size = 100000, repetitions = 20000
> The elapsed time for a itk.Fill   1500000 ms.
> The elapsed time for a C   fill   1500000 ms.
> The elapsed time for a C++ fill_n 440000 ms.
>  
> Array size = 1000000, repetitions = 2000
> The elapsed time for a itk.Fill   1500000 ms.
> The elapsed time for a C   fill   1500000 ms.
> The elapsed time for a C++ fill_n 510000 ms.
>  
> Array size = 10000000, repetitions = 200
> The elapsed time for a itk.Fill   1530000 ms.
> The elapsed time for a C   fill   1520000 ms.
> The elapsed time for a C++ fill_n 1100000 ms.
>  
>  
> I did not further test this on the effect on registration, but changing the 
> itk::Array::Fill function to use std::fill_n may be a nice idea.
> What do you think?
>  
> Marius
>  
> Marius Staring, PhD
> Division of Image Processing (LKEB)
> Department of Radiology
> Leiden University Medical Center
> PO Box 9600, 2300 RC Leiden, The Netherlands
> phone: +31 (0)71 526 2137, fax: +31 (0)71 524 8256
> [email protected]
>  
> <CMakeLists.txt><test.cxx>

_______________________________________________
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

Reply via email to