<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Project</title>
	<atom:link href="http://android.serverbox.ch/?feed=rss2&#038;page_id=28" rel="self" type="application/rss+xml" />
	<link>http://android.serverbox.ch</link>
	<description>Student Project at FHNW Switzerland</description>
	<lastBuildDate>Thu, 01 Jul 2010 18:54:11 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Biosopher</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-63</link>
		<dc:creator>Biosopher</dc:creator>
		<pubDate>Thu, 07 Jan 2010 23:46:10 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-63</guid>
		<description>Hi Manuel,

I&#039;m performing my tests on a Motorola Cliq and HTC Hero.  I&#039;ve just started implementing my FFT code with Android&#039;s NDK, but so far, my performance tests are looking much better....more like C-performance as expected.</description>
		<content:encoded><![CDATA[<p>Hi Manuel,</p>
<p>I&#8217;m performing my tests on a Motorola Cliq and HTC Hero.  I&#8217;ve just started implementing my FFT code with Android&#8217;s NDK, but so far, my performance tests are looking much better&#8230;.more like C-performance as expected.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Di Cerbo</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-62</link>
		<dc:creator>Manuel Di Cerbo</dc:creator>
		<pubDate>Wed, 06 Jan 2010 19:19:52 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-62</guid>
		<description>I doubt that there is a major overhead. The only thing that might be overhead is the memory allocation of 2048 bytes. I can&#039;t imagine that this has a large influence on the performance.

However, what you can try to speed up the process is to use only fixed point arithmetic. Although this wouldn&#039;t be as exact as floating point operation and therefore result in &quot;noise&quot;. Depending on your application, this might still be a suitable solution.

The really &quot;nice&quot; way to calculate the FFT would be to access the OMAPs DSP and do the calculation there. Although it might be a bit of a challenge to access the methods of Texas Instruments&#039; &quot;dsplink&quot; over JNI.

All in all I say the only way to go if you need speed is through the DSP. Our goal is create another post of how we managed to access it with dsplink but our method is still not complete (we struggle with the fixed point arithmetic) yet. Hopefully we will be able to post a complete &quot;howto calculate a fft with dsplink on the beagleboard using android&quot; by the end of the month.

May I ask what hardware platform you are using?

Cheers
Manuel</description>
		<content:encoded><![CDATA[<p>I doubt that there is a major overhead. The only thing that might be overhead is the memory allocation of 2048 bytes. I can&#8217;t imagine that this has a large influence on the performance.</p>
<p>However, what you can try to speed up the process is to use only fixed point arithmetic. Although this wouldn&#8217;t be as exact as floating point operation and therefore result in &#8220;noise&#8221;. Depending on your application, this might still be a suitable solution.</p>
<p>The really &#8220;nice&#8221; way to calculate the FFT would be to access the OMAPs DSP and do the calculation there. Although it might be a bit of a challenge to access the methods of Texas Instruments&#8217; &#8220;dsplink&#8221; over JNI.</p>
<p>All in all I say the only way to go if you need speed is through the DSP. Our goal is create another post of how we managed to access it with dsplink but our method is still not complete (we struggle with the fixed point arithmetic) yet. Hopefully we will be able to post a complete &#8220;howto calculate a fft with dsplink on the beagleboard using android&#8221; by the end of the month.</p>
<p>May I ask what hardware platform you are using?</p>
<p>Cheers<br />
Manuel</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Biosopher</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-61</link>
		<dc:creator>Biosopher</dc:creator>
		<pubDate>Wed, 06 Jan 2010 18:14:32 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-61</guid>
		<description>Great!  Well...great that you were kind enough to test and validate those performance numbers for me.  

So the native solution is fast but not incredibly so: 256*21.9ms still equals 5.6 seconds.  That means the native solution is only 2.5 times faster.  Or perhaps there&#039;s some start up overhead for that single native fft and the other 255 ffts would perform faster native than 5.6 seconds?</description>
		<content:encoded><![CDATA[<p>Great!  Well&#8230;great that you were kind enough to test and validate those performance numbers for me.  </p>
<p>So the native solution is fast but not incredibly so: 256*21.9ms still equals 5.6 seconds.  That means the native solution is only 2.5 times faster.  Or perhaps there&#8217;s some start up overhead for that single native fft and the other 255 ffts would perform faster native than 5.6 seconds?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Di Cerbo</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-60</link>
		<dc:creator>Manuel Di Cerbo</dc:creator>
		<pubDate>Wed, 06 Jan 2010 17:47:09 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-60</guid>
		<description>I tested the performance with the native implementation and get around 21.9 [ms] for one 2048 fft.

With our java implementation 256 ffts of the length 2048 take 14.3 seconds... so yeah ... seems really slow :D

I&#039;m a bit disappointed, I hoped the jvm was quicker.
It seems to me that you have to go the native way unless there is a trick to make the jvm faster.</description>
		<content:encoded><![CDATA[<p>I tested the performance with the native implementation and get around 21.9 [ms] for one 2048 fft.</p>
<p>With our java implementation 256 ffts of the length 2048 take 14.3 seconds&#8230; so yeah &#8230; seems really slow <img src='http://android.serverbox.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I&#8217;m a bit disappointed, I hoped the jvm was quicker.<br />
It seems to me that you have to go the native way unless there is a trick to make the jvm faster.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Biosopher</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-59</link>
		<dc:creator>Biosopher</dc:creator>
		<pubDate>Wed, 06 Jan 2010 16:52:45 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-59</guid>
		<description>Hi Manuel,

It seems that basic operations are incredibly in the Dalvik VM used on mobile phones.  For example, this VERY simple iteration over an empty method takes 1.4 seconds even though it doesn&#039;t do anything:

    public void performanceTest5() {
    	for (int i = 0; i &lt; 2000000; i++) {
    		emptyMethod();
    	}
    }

	private int emptyMethod() { 
		return 0;
	}

Doing something a little more complex like calculating the imaginary component of a complex conjugate 2 million times takes 3.2 seconds:

    public void performanceTest7() {
    	for (int i = 0; i &gt; 16) * ((c &lt;&gt; 16)) + (((a &amp; 0X0000FFFF) * ((c &lt;&gt; 16)) &gt;&gt; 16);
			y = -y; 
			y  += ((b &gt;&gt; 16) * (c &gt;&gt; 16)) + (((b &amp; 0X0000FFFF) * (c &gt;&gt; 16)) &gt;&gt; 16);

    	}
    }

It appears the Dalvik VM has substantial overhead for even basic computational operations.

I&#039;m curious though how fast these same operations take on the Beagle Board.</description>
		<content:encoded><![CDATA[<p>Hi Manuel,</p>
<p>It seems that basic operations are incredibly in the Dalvik VM used on mobile phones.  For example, this VERY simple iteration over an empty method takes 1.4 seconds even though it doesn&#8217;t do anything:</p>
<p>    public void performanceTest5() {<br />
    	for (int i = 0; i &lt; 2000000; i++) {<br />
    		emptyMethod();<br />
    	}<br />
    }</p>
<p>	private int emptyMethod() {<br />
		return 0;<br />
	}</p>
<p>Doing something a little more complex like calculating the imaginary component of a complex conjugate 2 million times takes 3.2 seconds:</p>
<p>    public void performanceTest7() {<br />
    	for (int i = 0; i &gt; 16) * ((c &lt;&gt; 16)) + (((a &amp; 0X0000FFFF) * ((c &lt;&gt; 16)) &gt;&gt; 16);<br />
			y = -y;<br />
			y  += ((b &gt;&gt; 16) * (c &gt;&gt; 16)) + (((b &amp; 0X0000FFFF) * (c &gt;&gt; 16)) &gt;&gt; 16);</p>
<p>    	}<br />
    }</p>
<p>It appears the Dalvik VM has substantial overhead for even basic computational operations.</p>
<p>I&#8217;m curious though how fast these same operations take on the Beagle Board.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Di Cerbo</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-58</link>
		<dc:creator>Manuel Di Cerbo</dc:creator>
		<pubDate>Tue, 05 Jan 2010 23:53:33 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-58</guid>
		<description>Hey Bishoper,

We have both implementations, one in Java and the other one in C (port of the kiss fft found here: http://sourceforge.net/projects/kissfft/) which we access over the Java Native Interface. For our application both implementations run fast enough on the Beagle Board.
Yet I am still pretty confident that the JVM should be able to handle the load :)

Cheers
Manuel</description>
		<content:encoded><![CDATA[<p>Hey Bishoper,</p>
<p>We have both implementations, one in Java and the other one in C (port of the kiss fft found here: <a href="http://sourceforge.net/projects/kissfft/)" rel="nofollow">http://sourceforge.net/projects/kissfft/)</a> which we access over the Java Native Interface. For our application both implementations run fast enough on the Beagle Board.<br />
Yet I am still pretty confident that the JVM should be able to handle the load <img src='http://android.serverbox.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Cheers<br />
Manuel</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Biosopher</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-57</link>
		<dc:creator>Biosopher</dc:creator>
		<pubDate>Tue, 05 Jan 2010 23:01:58 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-57</guid>
		<description>Thanks Manuel,

I&#039;m guessing your kiss_fft is in C though...not Java.  Or did you port the kiss_ft to Java?  We rewrote our FFT code in Java but it&#039;s currently too slow on Android&#039;s JVM.  We&#039;re considering reverting back to our C FFT and running it using Android&#039;s native interface.</description>
		<content:encoded><![CDATA[<p>Thanks Manuel,</p>
<p>I&#8217;m guessing your kiss_fft is in C though&#8230;not Java.  Or did you port the kiss_ft to Java?  We rewrote our FFT code in Java but it&#8217;s currently too slow on Android&#8217;s JVM.  We&#8217;re considering reverting back to our C FFT and running it using Android&#8217;s native interface.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Di Cerbo</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-56</link>
		<dc:creator>Manuel Di Cerbo</dc:creator>
		<pubDate>Tue, 05 Jan 2010 22:24:24 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-56</guid>
		<description>Hi Biosopher!

I will be back in school tomorrow and perform an 2048 FFT with the kiss_fft library. 10 Seconds for 256 FFTs sounds a lot. I am pretty sure we are faster even with our Java implementation.

I will post some results and code here tomorrow.

Cheers
Manuel</description>
		<content:encoded><![CDATA[<p>Hi Biosopher!</p>
<p>I will be back in school tomorrow and perform an 2048 FFT with the kiss_fft library. 10 Seconds for 256 FFTs sounds a lot. I am pretty sure we are faster even with our Java implementation.</p>
<p>I will post some results and code here tomorrow.</p>
<p>Cheers<br />
Manuel</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Biosopher</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-55</link>
		<dc:creator>Biosopher</dc:creator>
		<pubDate>Tue, 05 Jan 2010 22:18:59 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-55</guid>
		<description>Hi Manuel,

I was curious if you&#039;re performing your FFT using Android or not.  We&#039;re analyzing audio recorded from an Android phone&#039;s microphone and then performing 256*2048 FFTs on it.  The FFTs are taking 10 seconds to process in Java.  We&#039;ve considered reimplementing in native code to hopefully get better performance.  It seems Android&#039;s Dalvik VM is optimized for memory footprint rather than processing speed.

How fast would you expect your own FFT algorithm to run for 256*2048 FFT?  Is it coded in Java or using JNI?

Thanks</description>
		<content:encoded><![CDATA[<p>Hi Manuel,</p>
<p>I was curious if you&#8217;re performing your FFT using Android or not.  We&#8217;re analyzing audio recorded from an Android phone&#8217;s microphone and then performing 256*2048 FFTs on it.  The FFTs are taking 10 seconds to process in Java.  We&#8217;ve considered reimplementing in native code to hopefully get better performance.  It seems Android&#8217;s Dalvik VM is optimized for memory footprint rather than processing speed.</p>
<p>How fast would you expect your own FFT algorithm to run for 256*2048 FFT?  Is it coded in Java or using JNI?</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: beagleboard &#171; 律动的青春</title>
		<link>http://android.serverbox.ch/?page_id=28&#038;cpage=1#comment-39</link>
		<dc:creator>beagleboard &#171; 律动的青春</dc:creator>
		<pubDate>Wed, 23 Dec 2009 15:02:08 +0000</pubDate>
		<guid isPermaLink="false">http://android.serverbox.ch/?page_id=28#comment-39</guid>
		<description>[...] 两位来自瑞士的Android爱好者的技术博客：Using Android in Industrial Automation。他们目前在进行着一个很有意思的项目：Spectrum analyzer [...]</description>
		<content:encoded><![CDATA[<p>[...] 两位来自瑞士的Android爱好者的技术博客：Using Android in Industrial Automation。他们目前在进行着一个很有意思的项目：Spectrum analyzer [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
