<?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 for Byteworm</title>
	<atom:link href="http://byteworm.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://byteworm.com</link>
	<description>Honk if you&#039;re compiling</description>
	<lastBuildDate>Tue, 04 Oct 2011 06:50:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on About by hack2root</title>
		<link>http://byteworm.com/about/#comment-312</link>
		<dc:creator>hack2root</dc:creator>
		<pubDate>Tue, 04 Oct 2011 06:50:32 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?page_id=2#comment-312</guid>
		<description>Reccurent imaging! Can I be the next (not the last)?</description>
		<content:encoded><![CDATA[<p>Reccurent imaging! Can I be the next (not the last)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by undef</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-309</link>
		<dc:creator>undef</dc:creator>
		<pubDate>Fri, 26 Nov 2010 10:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-309</guid>
		<description>hahaha, interesting article</description>
		<content:encoded><![CDATA[<p>hahaha, interesting article</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by snify</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-308</link>
		<dc:creator>snify</dc:creator>
		<pubDate>Wed, 24 Nov 2010 18:09:36 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-308</guid>
		<description>I&#039;ve written a similar thing, but the opcode generation was more generic using an assembler. Nice source anyway.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve written a similar thing, but the opcode generation was more generic using an assembler. Nice source anyway.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by Bored</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-307</link>
		<dc:creator>Bored</dc:creator>
		<pubDate>Wed, 24 Nov 2010 01:51:00 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-307</guid>
		<description>I got bored and decided to see if, by your logic, C was faster than Assembly too!

Here is my implementation of your VM.
http://benchmarks.are.stupid.at.pastebin.com/G7amhdt8

Basically, it build a C file, calls gcc, and runs the executable.

$ time ./bench # original benchmark code
857419840

real	0m0.396s
user	0m0.390s
sys	0m0.003s

$ time ./simvm # your asm version
857419840

real	0m0.759s
user	0m0.760s
sys	0m0.000s

$ time ./rofl_vm # my version
857419840

real	0m0.208s
user	0m0.143s
sys	0m0.033s

C IS FASTER THAN ASSEMBLY!

Note: simvm and simvm were built using -O4 and bench was built with -O0

I would have tested the VB version but mono kept crashing on CreateDelegate.

P.S. I agree with your point, I just wanted to post that for comedic effect.</description>
		<content:encoded><![CDATA[<p>I got bored and decided to see if, by your logic, C was faster than Assembly too!</p>
<p>Here is my implementation of your VM.<br />
<a href="http://benchmarks.are.stupid.at.pastebin.com/G7amhdt8" rel="nofollow">http://benchmarks.are.stupid.at.pastebin.com/G7amhdt8</a></p>
<p>Basically, it build a C file, calls gcc, and runs the executable.</p>
<p>$ time ./bench # original benchmark code<br />
857419840</p>
<p>real	0m0.396s<br />
user	0m0.390s<br />
sys	0m0.003s</p>
<p>$ time ./simvm # your asm version<br />
857419840</p>
<p>real	0m0.759s<br />
user	0m0.760s<br />
sys	0m0.000s</p>
<p>$ time ./rofl_vm # my version<br />
857419840</p>
<p>real	0m0.208s<br />
user	0m0.143s<br />
sys	0m0.033s</p>
<p>C IS FASTER THAN ASSEMBLY!</p>
<p>Note: simvm and simvm were built using -O4 and bench was built with -O0</p>
<p>I would have tested the VB version but mono kept crashing on CreateDelegate.</p>
<p>P.S. I agree with your point, I just wanted to post that for comedic effect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by A.T.</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-306</link>
		<dc:creator>A.T.</dc:creator>
		<pubDate>Tue, 23 Nov 2010 09:22:44 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-306</guid>
		<description>love that assumption &quot;world is 99% built on x86&quot;, caused mainly by illiteracy about any other platforms or refuse to admit that all their *elegance* will go down pipes once assumption is removed... :)))</description>
		<content:encoded><![CDATA[<p>love that assumption &#8220;world is 99% built on x86&#8243;, caused mainly by illiteracy about any other platforms or refuse to admit that all their *elegance* will go down pipes once assumption is removed&#8230; :)))</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by Bill</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-305</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Tue, 23 Nov 2010 05:33:05 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-305</guid>
		<description>In simvm-slow.c, what&#039;s the rationale for using:

  #define NEXT()        __asm__(&quot;jmp *%0&quot;::&quot;r&quot;((++ip)-&gt;jmp)); goto *ip-&gt;jmp

instead of

  #define NEXT()  goto *(++ip)-&gt;jmp

?</description>
		<content:encoded><![CDATA[<p>In simvm-slow.c, what&#8217;s the rationale for using:</p>
<p>  #define NEXT()        __asm__(&#8220;jmp *%0&#8243;::&#8221;r&#8221;((++ip)-&gt;jmp)); goto *ip-&gt;jmp</p>
<p>instead of</p>
<p>  #define NEXT()  goto *(++ip)-&gt;jmp</p>
<p>?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by Duran</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-302</link>
		<dc:creator>Duran</dc:creator>
		<pubDate>Mon, 22 Nov 2010 10:41:52 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-302</guid>
		<description>Technically, when you turn source code into a parse tree (or other internal representation) it&#039;s no longer a pure interpreter.

If that&#039;s too technical, how about this: Compiling to bytecode is still compiling, because the only difference between bytecode and machine code is whether there is a (possibly microcoded) hardware implementation.</description>
		<content:encoded><![CDATA[<p>Technically, when you turn source code into a parse tree (or other internal representation) it&#8217;s no longer a pure interpreter.</p>
<p>If that&#8217;s too technical, how about this: Compiling to bytecode is still compiling, because the only difference between bytecode and machine code is whether there is a (possibly microcoded) hardware implementation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by Bruno</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-301</link>
		<dc:creator>Bruno</dc:creator>
		<pubDate>Mon, 22 Nov 2010 10:40:51 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-301</guid>
		<description>Of course it does. JIT compilation is not a 0-time expenditure. However, if you make a very slight change (already rocking that the change is so slight) and export a .exe file...then compare that to optimized C. It&#039;ll be fairly close, maybe 2x (optimized C vs optimized .NET plus overhead). Both will end up running a &quot;save then print a precompiled constant&quot;, of course.

That you can get .NET optimization so free is something pretty awesome. I didn&#039;t see in the article anything showing which optimization options were used, though I did see that none were in comments, and my other comments here reflect that.

Of course 100% optimized C code will outrun any VM. Can OP give us a fully optimized control for reference, anyway? On the box that ran the other tests?

E: And about your edit...I THOUGHT so. I had trouble finding anything for sure, but I was pretty damn sure we could unroll the loop when the Delegate compiled.</description>
		<content:encoded><![CDATA[<p>Of course it does. JIT compilation is not a 0-time expenditure. However, if you make a very slight change (already rocking that the change is so slight) and export a .exe file&#8230;then compare that to optimized C. It&#8217;ll be fairly close, maybe 2x (optimized C vs optimized .NET plus overhead). Both will end up running a &#8220;save then print a precompiled constant&#8221;, of course.</p>
<p>That you can get .NET optimization so free is something pretty awesome. I didn&#8217;t see in the article anything showing which optimization options were used, though I did see that none were in comments, and my other comments here reflect that.</p>
<p>Of course 100% optimized C code will outrun any VM. Can OP give us a fully optimized control for reference, anyway? On the box that ran the other tests?</p>
<p>E: And about your edit&#8230;I THOUGHT so. I had trouble finding anything for sure, but I was pretty damn sure we could unroll the loop when the Delegate compiled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by exaggeration, but it was quite good</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-300</link>
		<dc:creator>exaggeration, but it was quite good</dc:creator>
		<pubDate>Mon, 22 Nov 2010 05:07:31 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-300</guid>
		<description>This is the greatest blog post of all time.</description>
		<content:encoded><![CDATA[<p>This is the greatest blog post of all time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Fastest VM Bytecode Interpreter by Bob Foster</title>
		<link>http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/#comment-299</link>
		<dc:creator>Bob Foster</dc:creator>
		<pubDate>Mon, 22 Nov 2010 03:47:38 +0000</pubDate>
		<guid isPermaLink="false">http://byteworm.com/?p=91#comment-299</guid>
		<description>Actually fascinating. Most of us wish we had a bud like Mat to challenge us!</description>
		<content:encoded><![CDATA[<p>Actually fascinating. Most of us wish we had a bud like Mat to challenge us!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

