Thanks for the tip!<div><br></div><div>Very interesting topic indeed... I believe it deserves a topic in the ITK wiki.<br><br><div class="gmail_quote">On Wed, Nov 10, 2010 at 4:27 PM, Matt McCormick <span dir="ltr">&lt;<a href="mailto:matt@mmmccormick.com">matt@mmmccormick.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">Sergio Vera &lt;sergio.vera@...&gt; writes:<br>
<br>
&gt;<br>
&gt;<br>
&gt; Also I may ask if you use streaming when there is no writer at the end? and if<br>
yes, how you enable streaming in this case?<br>
&gt; Thanks<br>
<br>
</div>You can use the following filter<br>
<a href="http://www.itk.org/Doxygen320/html/classitk_1_1StreamingImageFilter.html#_detail" target="_blank">http://www.itk.org/Doxygen320/html/classitk_1_1StreamingImageFilter.html#_detail</a><br>
<div class="im">s<br>
<br>
<br>
&gt;<br>
&gt; I have identified several ways for optimizing my code, but I was wondering if<br>
there are other things I could do. Here is what I have found until now:<br>
&gt;<br>
&gt; 1. For multi-channel images, the use of scalar images with FixedArray pixels<br>
gives a 1.5 speedup factor with respect to the use of VectorImage with scalar<br>
pixel types (I know the number of bands at compilation time).<br>
&gt;<br>
<br>
</div>Interesting.<br>
<div class="im"><br>
&gt;<br>
&gt; 2. Even though I need to work with real types for the computations (physical<br>
magnitudes between 0 and 1), I found that writing intermediate results to files<br>
using real types is much slower than multiplying the values by a large constant<br>
and writing the result to disk using integer types.<br>
&gt;<br>
<br>
</div>Reading/writing to disk can be a bottleneck.  Depending on the situation,<br>
writing to a tmpfs can be helpful.<br>
<a href="http://en.wikipedia.org/wiki/Tmpfs" target="_blank">http://en.wikipedia.org/wiki/Tmpfs</a><br>
<div class="im"><br>
&gt;<br>
&gt;<br>
&gt; I was also wondering if there is a smart way to choose the number of streaming<br>
divisions for the writer in order to ensure that the memory footprint of my<br>
program does not goes beyond a given size (other than try and error).<br>
&gt;<br>
<br>
</div>Profiling software not specific to ITK can be helpful for both decreasing run<br>
times and memory footprints.  My preference is valgrind.<br>
<a href="http://valgrind.org/" target="_blank">http://valgrind.org/</a><br>
<br>
For determining bootlenecks, try the valgrind callgrind tool + kcachegrind.<br>
<a href="http://kcachegrind.sourceforge.net/" target="_blank">http://kcachegrind.sourceforge.net/</a><br>
<br>
For memory profiling, try the valgrind massif tool + ms_print that comes with<br>
valgrind.<br>
<div class="im"><br>
&gt;<br>
&gt; PS: If there are general guidelines for this kind of optimization, maybe there<br>
should be a chapter in the software guide or a wiki page for this topic?<br>
&gt;<br>
<br>
</div>A wiki article would be cool.<br>
<br>
Regards,<br>
<font color="#888888">Matt<br>
</font><div><div></div><div class="h5"><br>
<br>
_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Sergio Vera<br><br> Alma IT Systems<br> C/ Vilana, 4B, 4º 1ª<br> 08022 Barcelona<br> T. (+34) 932 380 592<br> <a href="http://www.alma3d.com">www.alma3d.com</a><br>

</div>