<?xml version='1.0' encoding='UTF-8' ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:icbm="http://postneo.com/icbm" xmlns:includedComments="http://www.laudably.com/rss2-comments" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
	<channel>
		<title>Smalltalk Tidbits, Industry Rants</title>
		<link>http://www.cincomsmalltalk.com/blog/blogView</link>
		<description>Cincom Product Manager</description>
		<webMaster>jrobertson@cincom.com</webMaster>
		<lastBuildDate>Fri, 26 Jan 2007 13:39:55 EST</lastBuildDate>
		<image>
			<url>http://www.cincomsmalltalk.com/images/cst_small.jpg</url>
			<title>Smalltalk Tidbits, Industry Rants</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView</link>
			<height>50</height>
			<width>81</width>
		</image>
		<admin:generatorAgent rdf:resource="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/Silt"></admin:generatorAgent>
		<admin:errorReportsTo rdf:resource="mailto:jrobertson@cincom.com"></admin:errorReportsTo>
		<dc:language>en-us</dc:language>
		<dc:creator>James A. Robertson</dc:creator>
		<dc:rights>Copyright 2005 Cincom Systems, Inc.</dc:rights>
		<dc:date>2007-01-26T13:39:55-05:00</dc:date>
		<icbm:latitude>39.214103</icbm:latitude>
		<icbm:longitude>-76.878807</icbm:longitude>
		<item>
			<title>Better Test Tools</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3347271514</link>
			<category>testing</category>
			<pubDate>Fri, 26 Jan 2007 13:38:34 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://www.cincomsmalltalk.com/userblogs/travis/blogView">Travis</a> has posted on his <a href="http://www.cincomsmalltalk.com/userblogs/travis/blogView?showComments=true&amp;entry=3339196011">SUnitToo tools</a> - he bugged me about it today in the <a href="http://wiki.cs.uiuc.edu/VisualWorks/IRC">IRC channel</a> when I mentioned that I was adding some tests to my Blog code while I refactored. So, I went ahead and loaded his stuff - it's in the <a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/Public+Store+Repository">public Store,</a> but (and this stuff is being changed all the time) I had to load the penultimate version:</p>
<p><img src="http://www.cincomsmalltalk.com/images/jarober/examples/sunit-too-1.jpg" title="jarober added a file"/></p>
<p>When prompted, load this version of the pre-req:</p><p><img src="http://www.cincomsmalltalk.com/images/jarober/examples/sunit-too-2.jpg" title="jarober added a file"/></p>
<p>So what does that give you? Well, take a look at the browser view with two new tests that haven't been run yet:</p><p><img src="http://www.cincomsmalltalk.com/images/jarober/examples/sunit-too-3.jpg" title="jarober added a file"/></p>

<p>
The empty beaker indicates that no tests have run, and the tests have &quot;?&quot; next to them.  See the changes when I run the tests?</p>
<p><img src="http://www.cincomsmalltalk.com/images/jarober/examples/sunit-too-4.jpg" title="jarober added a file"/></p>

<p>I've chopped the bar at the bottom of the browser, but you get more indications now.  So - let me break one of the tests:</p>
<p><img src="http://www.cincomsmalltalk.com/images/jarober/examples/sunit-too-5.jpg" title="jarober added a file"/></p>

<p>That's pretty nice.  There are other goodies as well - if you hit &quot;debug&quot;, you'll get right to the failing assertion (where the old SUnit lands inside the SUnit code itself).  All in all, if you use SUnit in VW or OS8, you should move to SUnitToo.  Ohh - one more thing.  To do that switch, check the &quot;View&quot; menu and toggle which testing tools to use.  You can move back and forth at will, and the new stuff is API compatible with the old.</p>
<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: 
<a href="http://www.technorati.com/tag/sunit" rel="tag">sunit</a>, <a href="http://www.technorati.com/tag/smalltalk" rel="tag">smalltalk</a></p><!-- technorati tags end -->
</div>]]></description>
			<guid isPermaLink="false">3347271514</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3347271514</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3347271514</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3347271514</wfw:comment>
		</item>
		<item>
			<title>Smalltalk XML Parsing</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3311857026</link>
			<category>testing</category>
			<pubDate>Mon, 12 Dec 2005 16:17:06 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://www.alanlittle.org/weblog/vwxml.html">I ran across this page</a> in my <a href="http://www.cincomsmalltalk.com/BottomFeeder">aggregator</a> before lunch, and flagged it for followup. That time has come - it must be testing day on this blog. Here's what jumped at me:</p>
<blockquote><p>I give up on libxml for the time being, and think instead of <a href="http://blog.amber.org/2005/07/15/ruby-versus-smalltalk/">Chris Petrilli&rsquo;s comment</a> that ruby (and python) performance is &ldquo;not quite in the league of Smalltalk (or Lisp, likely), which have extremely mature VMs with on-the-fly compilation and optimization&rdquo;. Is Smalltalk then much faster than python or ruby, or comparable with C, for the task of parsing moderately large XML files? </p>

<p>No. Time to load and parse my iTunes library file, an 11mb Apple plist, on a 1 GHz G4 Powerbook with VisualWorks Non-Commercial 7.3.1: about three minutes.</p>
</blockquote>
<p>That didn't seem right - I use the XML code in VW extensively, so I'm pretty familiar with it. I grabbed my iTunes file (only 2.7 MB) and parsed that - took 5.5 seconds. Well, the two caveats are, that's a smaller file, and my hardware isn't his hardware. With that in mind, I went ahead and created a large XML file. I grabbed the default feed file for BottomFeeder, and saved it as an XML feed list instead of as a binary dump - like this:</p>
<p><pre>

file := Tools.XMLConfigFileSupport.XMLConfigFile 
                     filename: 'g:\vw74\image\feeds.xml'.
file saveObject: RSSFeedManager default subscribedFeedsFolder.
file saveConfiguration

</pre></p><p>That just dumps the 80 sample feeds into a (pretty verbose) XML format - I ended up with a 13 MB file. That seemed large enough, so I tried the parse on that:</p>
<p><pre>

content := 'feeds.xml' asFilename contentsOfEntireFile.
parser := XMLParser new.
parser validate: false.
Time millisecondsToRun: [parser parse: content readStream]

</pre></p><p>That last line times the execution - it ran in 17.9 seconds. Not a couple of seconds, but not 3 minutes, either. There was some GC going on during that, so I'm sure that things could be improved by simply configuring VW with a larger bite of old space up front - in dealing with large amounts of data, a fair bit of time is going to be chewed up either in allocating more memory, or GC'ng if we hit the current limits (as per the memory policy in place). </p><p>For this kind of parse to take 3 minutes, either the hardware would have to be very slow, or memory limits would have to be set badly for dealing with larger files. I'm not entirely sure what was going on. </p><p><strong>Update:</strong> I ran the same code on my Mac Mini - it has a 1.3 Ghz G4 processor, and a paltry 256MB of RAM. The 2.7 MB file parsed in 12.8 seconds, the 13 MB file in 44.7 seconds. Not speedy, but not the 3 minutes reported by Alan Little either - and the Mini is no high end Mac.</p></div>]]></description>
			<guid isPermaLink="false">3311857026</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3311857026</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3311857026</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Jim Thompson</includedComments:author>
					<includedComments:pubDate>2005-12-12T16:32:18-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt; 
We tested VW XML parsing against a couple of Java Frameworks a few years ago and
VW was often almost a magnitude faster.

In fact just about everything was a magnitude faster and smaller.

James, see I can say some nice things about your product&lt;b&gt;&lt;/p&gt;&lt;/b&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Faster than Java</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T18:49:13-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;but not the 3 minutes reported by Alan Little either&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But possibly not the same code that Alan Little is using - maybe it would be nice to ask him what he was doing?&lt;/p&gt;

&lt;/div&gt;</includedComments:content>
					<includedComments:title>But what code is Alan Little using?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-12T19:33:23-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Isaac, stop being a hopeless pedant. He said that it took 3 minutes to parse an 11 MB document. VW ships with a parser, and I seriously doubt that he downloaded VWNC and implemented one himself. &lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Jeebus</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Alan Little</includedComments:author>
					<includedComments:pubDate>2005-12-13T00:57:15-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I'm still open to the possibility that I might have been doing something obviously wrong, since it's about 15 years since I wrote Smalltalk code for real. What I did was just:&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;

XML.XMLParser processDocumentInFilename: "filename"
    beforeScanDo: [:p | p validate: false].

&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;as decribed in this Fred Gagne's tutorial on the VW website.&lt;/p&gt;

&lt;p&gt;My Powerbook is presumably a bit slower than your Mini and has 768 MB of RAM - a *large* chunk of which was used in this case, but I didn't hear it obviously doing a lot of disk swapping so I don't think I was memory-bound. Apple's plist is a decidedly odd "xml" format too - I wonder if that might behave in a way that's unlike other xml  benchmarks?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Here's what I did</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-13T07:31:36-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Alan, if you are willing, just send me the file (compressed). My email address is on the front page of the blog&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
I can test against your file</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>petrilli</includedComments:author>
					<includedComments:pubDate>2005-12-13T10:58:12-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Using James' code (i.e. stuff in memory), I get, using a default NC image with HTTP parcel loaded a runtime of 27.046s to parse.  This is on a 13Mb iTunes XML library.  If I use what Alan mentions (with the original content deleted and a global GC first), I get 29.7s.  Slower, for some reason, but not substantially. This is on a Dell X410 notebook, 1GB RAM and 1.7Ghz PentiumM using 7.3.1NC.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Another point in space</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-13T11:13:53-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;Isaac, stop being a hopeless pedant&lt;/em&gt;&lt;/p&gt;&lt;p&gt;
an ounce of curiousity is better than a pound of assumption&lt;/p&gt;
 
&lt;/div&gt;</includedComments:content>
					<includedComments:title>an ounce of curiousity</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView"&gt;Troy Brumley&lt;/a&gt;</includedComments:author>
					<includedComments:pubDate>2005-12-13T12:40:33-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView"&gt;Troy Brumley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I copied my library from my Mac over to the PC (D810) and it took 15.401 seconds.  The PC was not idle.  I note that Chris Petrilli has commented on the Mac VM before, and he feels it performs poorly in a few areas.  Jim, your Mac Mini may have a higher bus speed than Alan's Powerbook.  I will run a test on my iBook and report results.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
15 seconds to parase a 6.5 GB iTunes library</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Troy Brumley</includedComments:author>
					<includedComments:pubDate>2005-12-13T13:04:42-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I went ahead and installed the last Winter 05 VW on my iBook and ran against that same 6.5 gig iTunes Library file.  In three runs I got between 26.4 and 29.7 seconds, instead of the 15 seconds it took to process on the underclocked PC (Dell D810, Pentium M, 800mhz).  This is a 1.2 Ghz G4 iBook with 1.25 gig of RAM.  Bus speed 133mhz.  Alan, if you are still reading, what are the specs of your Powerbook wrt bus speed and chip caches?&lt;/p&gt;  
&lt;/div&gt;</includedComments:content>
					<includedComments:title>More timings, this time on an iBook</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Alan Little</includedComments:author>
					<includedComments:pubDate>2005-12-13T13:35:06-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I'm afraid I don't know the bus &amp; cache specs. It's a 2003 version 1 GHz 12 inch Powerbook.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>file on the way</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>petrilli</includedComments:author>
					<includedComments:pubDate>2005-12-13T16:41:08-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I just retested on my 667Mhz G4 Powerbook (Titanium, 2nd generation), with 1Gb RAM, and hit 167 seconds on both the X and native VM.  This is very odd.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Bizarre</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Troy Brumley</includedComments:author>
					<includedComments:pubDate>2005-12-13T16:52:24-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I got my information re bus speed and cache sizes from &lt;a href="http://www.everymac.com/systems/apple/index.html"&gt;everymac.com&lt;/a&gt;, but the system profiler reports bus speed, iirc.&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tr&gt;
&lt;td&gt;System&lt;/td&gt;&lt;td&gt;L1 Cache&lt;/td&gt;&lt;td&gt;L2 Cache&lt;/td&gt;&lt;td&gt;Bus Speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alan's Powerbook&lt;/td&gt;&lt;td&gt;64 KB&lt;/td&gt;&lt;td&gt;512 KB&lt;/td&gt;&lt;td&gt;133 Mhz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My iBook&lt;/td&gt;&lt;td&gt;64 KB&lt;/td&gt;&lt;td&gt;512 KB&lt;/td&gt;&lt;td&gt;133 Mhz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jim's Mac Mini&lt;/td&gt;&lt;td&gt;64 KB&lt;/td&gt;&lt;td&gt;512 KB&lt;/td&gt;&lt;td&gt;&lt;b&gt;167 Mhz&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; 
&lt;p&gt;I recall that someone from Heeg felt that graphics would be most impacted by the L2 cache (the VW display problems on Mac OS X).  Bus speed is probably the biggest key here, so I hightlighted Jim's Mac Mini.  I note that he has said that he finds VW on the Mac "usable" but I do not yet.  I'm waiting for the fixed VM, which last I heard won't be part of the Winter 2005 delivery.&lt;/p&gt; 
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Specs</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Carl Gundel</includedComments:author>
					<includedComments:pubDate>2005-12-13T20:05:51-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Troy, I finally broke down and started to the the X11 VM on my PowerBook G4 1.5GHz.  I resisted this for a while but eventually realized I needed more speed.  It did the trick for me.  Maybe it'll help you too. &lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>X11 VM is faster</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Alan Little</includedComments:author>
					<includedComments:pubDate>2005-12-14T02:40:08-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I tried to send my file to James but it didn't make it thorugh cincom's mail filters. So, for James and anybody else who might be curious, it is at &lt;a href="http://www.alanlittle.org/private/alanlittle.xml.gz"&gt;http://www.alanlittle.org/private/alanlittle.xml.gz&lt;/a&gt;. I won't leave it there for long.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>file posted</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Troy Brumley</includedComments:author>
					<includedComments:pubDate>2005-12-14T10:00:29-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I've used that VM in the past, but the feel is so un-Mac-like that I threw it out.  I didn't even install it this last go round.  Thanks for testing Carl, but I'm waiting for the real deal.  I just grabbed Alan's XML file and will post timings of it in a bit.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>No X11 for me</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>Troy Brumley</includedComments:author>
					<includedComments:pubDate>2005-12-14T10:43:43-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I took Alan's file, and ran it four times each of two different ways.  The first bit of code that Jim posted looks like this:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Jim's Script:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;

content := '/users/tbrumley/desktop/alanlittle.xml' asFilename contentsOfEntireFile.
parser := XMLParser new.
parser validate: false.
Time millisecondsToRun: [parser parse: content readStream]

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;And then a modified version of what Alan reported he ran with looks like this:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Alan's Script:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;

Time millisecondsToRun: [XML.XMLParser processDocumentInFilename: '/users/tbrumley/desktop/alanlittle.xml'
    beforeScanDo: [:p | p validate: false]].

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Alan's timings will be I/O sensitive.  This does take longer, but it ranges in at around a minute on my iBook.  Here's the timings:&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tr&gt;
&lt;td&gt;Run #&lt;/td&gt;
&lt;td&gt;Jim's Script&lt;/td&gt;
&lt;td&gt;Alan's Script&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;&lt;td&gt; 73.439&lt;/td&gt;&lt;td&gt; 72.517&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;&lt;td&gt; 44.489&lt;/td&gt;&lt;td&gt; 54.997&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;&lt;td&gt; 46.351&lt;/td&gt;&lt;td&gt; 64.469&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;&lt;td&gt; 47.638&lt;/td&gt;&lt;td&gt; 58.826&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;There's a lot of variation in Alan's script, but I suspect if I wrapped the whole of Jim's script in a timer, the variation there might increase as well.  Checking out the information at everymac.com, Alan and I have different disks/controllers, and it is possible that mine is faster.&lt;/p&gt;
&lt;p&gt;Alan, could you do a run using the Jim's script and report your timings?&lt;/p&gt;
  
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Different numbers</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-14T10:55:21-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
James Robertson&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;My Windows Box: 20.6 seconds &lt;/p&gt;
&lt;p&gt;My Mac Mini: 62 seconds&lt;/p&gt;&lt;p&gt;Like Alan's original test, those include file load time. There's a significant difference across hardware. Just for jollies, I tried it under Linux (Red Hat 7) on an ancient PII 400 Mhz box. That took 2 minutes and 20 seconds. &lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Here's what I got</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Smalltalk_XML_Parsing&amp;entry=3311857026</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2005-12-14T16:38:42-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt; My Powerbook was clearly having a Strange Day the first time I did this. Perhaps I hadn't rebooted for a few weeks or something. 
&lt;p&gt;
Anyway, running Jim's code I'm now getting around 5-6 seconds to load, 52-55 seconds to parse.
&lt;p&gt;
Times for my code seem a lot more variable. 62 fastest, but also a couple of runs around 80-82.
&lt;p&gt;
I'm also getting a very favourable impression of how helpful, constructive and non-flaming the Smalltalk community is. Thanks guys.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>about a minute for me too now</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3311857026</wfw:comment>
		</item>
		<item>
			<title>Valid Comparisons: Hard</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3311841442</link>
			<category>testing</category>
			<pubDate>Mon, 12 Dec 2005 11:57:22 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>I had a look at the <a href="http://shootout.alioth.debian.org/">Great Computer Language Shootout site</a> this morning, since there's some <a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=vw&amp;lang2=csharp">VW Smalltalk code (and results) posted there.</a> The comparison I was drawn to happened to be with Mono based C# (based on a <a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;title=Comparing+Languages&amp;entry=3311762223#3311762223">comment here</a>). There are some issues with the comparison, however:</p><ul xmlns="http://www.w3.org/1999/xhtml">
			<li>Have a look at <a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&amp;lang=vw&amp;id=0">this test</a> - scroll down, and look at the execution. The source code is filed-in, and then the test is executed. That slows things down. <strong>Update - apparently, the code is not filed in first on the site test.</strong></li>
		<li>Have a look at the <a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&amp;lang=csharp">C# version</a> - the code is compiled, and then executed.</li></ul>
<p>So I did the same thing I did with Troy's post over the weekend - I downloaded the code and did some local shaking out. To get it loaded, I had to create a namespace called <strong>ComputerLanguageShootout</strong> first, and also create a class named <strong>Benchmarks.</strong> Once that was done, I could file-in the code. </p><p>Then, I tried this:</p><p><pre>&quot;File in code, then execute&quot;
Time millisecondsToRun: [Smalltalk.ComputerLanguageShootout.Benchmarks 
                                                  nbody: 1000000].
</pre></p>
<p><pre>

</pre></p>
<p>That ran in 11.818 ms. I repeated the process a few times to make sure that those numbers weren't outliers, and they weren't. The original post here had a bunch of comments about filing in first, but I was wrong about that. </p>
<p>So, on to the profiler. Running that, it turns out that the bulk of the time is setting in the Body&gt;&gt;and:velocityAfter: method. Looking at that, we see the following code:</p>
<p><pre>

and: aBody velocityAfter: dt
   | dx dy dz distance mag |
   dx := x - aBody x.
   dy := y - aBody y.
   dz := z - aBody z.

   distance := ((dx*dx) + (dy*dy) + (dz*dz)) sqrt.
   mag := dt / (distance * distance * distance).

   self decreaseVelocity: dx y: dy z: dz m: aBody mass * mag.
   aBody increaseVelocity: dx y: dy z: dz m: mass * mag

</pre>
</p>
<p>It's no big surprise that this test (or any other test that is heavy on arithmetic) is going to be faster in C# (or C, or Java) than in Smalltalk. Why? Smalltalk isn't that fast on math, floating point math in particular. So if you intend to code up some low level mathematical model, the calculations should be in a different language (and our customers tend to do that - model in Smalltalk, low level math in C or C++). What this really points out is that micro-benchmarks aren't that useful. Most applications push data around, typically involving a database - and math operations don't dominate those kinds of applications. In which case, something that lets you code faster is going to help. As usual, pick the best tool for the job at hand.</p>
<p>On the <a href="http://wiki.cs.uiuc.edu/VisualWorks/IRC">Smalltalk IRC channel,</a> it was pointed out that a lot of the other language tests vary just as widely. Ultimately, the shootout site simply isn't doing great cross language tests.</p></div>]]></description>
			<guid isPermaLink="false">3311841442</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3311841442</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3311841442</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T12:43:51-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;"The source code is filed-in, and then the test is executed"&lt;/em&gt;&lt;br/&gt;
For GNU Smalltalk that is true - which makes it comparable to Python and Lua and the other scripting languages.&lt;br/&gt;&lt;br/&gt;
For VWNC what evidence do you have that "The source code is filed-in, and then the test is executed"?&lt;br/&gt;&lt;br/&gt;
Clearly the image has been renamed: &lt;em&gt;benchmarks.im&lt;/em&gt;&lt;br/&gt;
Clearly there's a command-line argument &lt;em&gt;-a nbody&lt;/em&gt; - what makes you think you know how that command-line argument is used?&lt;br/&gt;&lt;br/&gt;
For VWNC I load a parcel containing Smalltalk source for *all* the benchmarks into  an image, and use the Runtime Packager to create a headless image -  &lt;em&gt;benchmarks.im&lt;/em&gt; - contrary to your assumption, the Smalltalk VWNC timings &lt;strong&gt;do not include the time to load and compile source code&lt;/strong&gt;.
The command-line argument &lt;em&gt;nbody&lt;/em&gt; is just converted into a class-side method selector, in this case &lt;em&gt;nbody: argvString&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;

&lt;strong&gt;We are already doing exactly what you suggest for a fair Apples/Apples test.&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;

&lt;em&gt;Ultimately, the shootout site simply isn't doing good cross language tests&lt;/em&gt;&lt;br/&gt;
Please check your information before spreading rumours.


         
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Your assumption is plain wrong</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-12T13:07:14-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
James Robertson&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;I based my post on what the site looked like. I'll accept what you say, but it was not at all clear to me&lt;/p&gt;
&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Isaac...</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T14:19:40-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;I'll accept what you say&lt;/em&gt;&lt;br/&gt;
I've emailed you the parcel - check the method &lt;em&gt;parseCommandLine&lt;/em&gt; 
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Seeing is believing</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T14:40:15-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;What this really points out is that micro-benchmarks aren't that useful&lt;/em&gt;&lt;br/&gt;
On the contrary:
&lt;ol&gt;
&lt;li&gt;The measurement suggests VW NC might not be &lt;em&gt;"that fast on math"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;You agree, saying VW NC &lt;em&gt;"isn't that fast on math"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;That micro-benchmark has shown something which you agree is true - how can that not be useful?&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt; 

These micro-benchmarks are as good as the programs people have contributed for each language implementation. Write better programs, follow the &lt;a href="http://shootout.alioth.debian.org/gp4/faq.php#contribute"&gt;FAQ instructions for contributing a program&lt;/a&gt; - and VW NC will appear better on The Computer Language Shootout.&lt;br/&gt;&lt;br/&gt;
(There are benchmarks without a VW NC program - maybe VW NC would perform better on those?)


  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>micro-benchmarks aren't that useful?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-12T15:19:15-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
James Robertson&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;Isaac - If you wrote that test in assembler (assuming you knew assembly well enough to hand tune), then you could out-perform C or Fortran. Should all math intensive apps then be done in Assembler?&lt;/p&gt;
&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Micro benchmarks</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T15:39:39-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;assuming you knew assembly well enough to hand tune&lt;/em&gt;&lt;br/&gt;
More than that, assuming I knew assembly better than several generations of compiler writers.&lt;br/&gt;&lt;br/&gt;

Please make your point directly - it's too easy to misunderstand a rhetorical question.  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Please make your point directly</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2005-12-12T16:03:32-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt; I think the point is that Smalltalk doesn't look competitive on these benchmarks in any of the categories (speed, memory, lines of code).  Maybe there should be some benchmarks to show the strengths of Smalltalk and similar languages? &lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2005-12-12T16:18:34-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
James Robertson&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;Smalltalk would actually win on a LOC comparison, properly done. Chunk format isn't how any Smalltalker looks at code...&lt;/p&gt;
&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Lines of Code</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2005-12-12T16:53:00-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt; What is the proper way to measure code verbosity with Smalltalk?  Tokens/words?  The nbody test shows about 160 lines for the Smalltalk versions.  Assuming they had a proper correction factor, what should that number be?  Here's a quick word count using &lt;a href="http://www.linuxjournal.com/article/1327"&gt;wc&lt;/a&gt;, FWIW (not much probably)...
&lt;pre&gt;
            lines   words  chars

Ruby        117     383    2822
Python      124     432    3296
SML         80      449    3220
Lisp        124     465    4154
C           132     506    3645
Prolog      124     539    4392
Java        167     542    4334
C#          162     545    4577
Smalltalk   208     681    4790


&lt;/pre&gt;   
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T18:25:38-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;chunk format isn't how any Smalltalker looks at code...&lt;/em&gt;&lt;br/&gt;
Amazingly we noticed that &lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=vw#about"&gt;"Code Lines is even more misleading for Smalltalk than for other languages..."&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;

But this &lt;em&gt;"Smalltalk would actually win on a LOC comparison, properly done"&lt;/em&gt; is empty bravado - win on a LOC comparison compared to what other language implementation, under what definition of "properly done"?  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Lines of Code</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T18:36:48-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;Maybe there should be some benchmarks to show the strengths of Smalltalk and similar languages?&lt;/em&gt;&lt;br/&gt;
&lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=binarytrees&amp;lang=all"&gt;binary-trees&lt;/a&gt; suggests VisualWorks GC is competitive with many other language implementations.&lt;br/&gt;&lt;br/&gt;
What other benchmarks do you have in mind?
  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>GC </includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
Terry</includedComments:author>
					<includedComments:pubDate>2005-12-12T18:37:50-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
Terry&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;I think the most even handed way would be to compare statements. I think statements more accurately reflect the complexity and amount of work required for a particular function or method.&lt;/p&gt;
&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
SLOC how to compare</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2005-12-12T18:55:16-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt; What's a "statement"?  In a language like Haskell there are no statements and your program is just one big expression which gets evaluated.   &lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
Steven Kelly</includedComments:author>
					<includedComments:pubDate>2005-12-13T06:43:59-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
Steven Kelly&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;In a benchmark competition, Smalltalk is going to look bad on both lines of code and speed. The first code a Smalltalker would write to solve the problem would look fine on lines of code, but be slow. Since the main benchmark people are interested in for this competition is speed, that good O-O code will get rewritten into &amp;quot;C in Smalltalk&amp;quot;. That will improve the runtime speed, but significantly increase the number of lines of code. Trying to write in the style of another language will almost always be more verbose than trying to write in a native style.&lt;/p&gt;
&lt;p&gt;Most of these benchmarks have long been implemented and honed in C, which will probably lead the Smalltalker to first implement in &amp;quot;C in Smalltalk&amp;quot; anyway. Why? Because the C code is so cryptic you can't see what it's doing easily, and the fastest way to figure it out is to run it with the Smalltalk debugger.&lt;/p&gt;&lt;p&gt;The interesting benchmark for Smalltalk is not how fast the code runs, but how much faster you can write an application that has sensible performance.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Fast, cheap, good: pick two</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2005-12-13T11:42:12-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;blockquote&gt;&lt;i&gt; The interesting benchmark for Smalltalk is not how fast the code runs, but how much faster you can write an application that has sensible performance.&lt;/blockquote&gt;&lt;/i&gt;

Yes, I'd be interested in seeing how much faster development time is in Smalltalk compared to Ruby, Python, Lisp, SML, etc.  That would make an interesting set of benchmarks.  Unfortunately, that sounds like the hardest thing to test.  But I wonder how far off a proxy like lines-of-code (or some similar measure) would be? To a first order approximation, more code seems harder for a maintainer to understand, and probably harder for the original person writing it.

And while the "Smalltalk in C" comparison rings true, isn't it muted by the fact that the other languages are similarily handicapped?  Aren't the Ruby, and Python, and Lisp advocates going to complain of the same "written in C" factor?  &lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-13T13:54:19-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Too pessimistic: Steven Kelly wrote &lt;em&gt;Smalltalk is going to look bad&lt;/em&gt;&lt;br/&gt;
Look bad compared to what?&lt;br/&gt;
On the example James took, nbody, VW looks 17x faster than Ruby.&lt;br/&gt;&lt;br/&gt;

Too optimistic: &lt;em&gt;would look fine on lines of code&lt;/em&gt;&lt;br/&gt;
Compared to what?&lt;br/&gt;
Please show how the &lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=binarytrees&amp;lang=vw&amp;id=0"&gt;binary-trees program&lt;/a&gt; has been &lt;em&gt;rewritten into "C in Smalltalk"&lt;/em&gt; - compare it to the &lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=binarytrees&amp;lang=scala&amp;id=0"&gt;Scala program&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt; 

&lt;em&gt;rewritten into "C in Smalltalk". That will improve the runtime speed&lt;/em&gt;&lt;br/&gt;
Not in my experience - rewrite Smalltalk as though it were C and it's likely to get slower. On the example James took, nbody, the current program is 2.5x faster than a transliteration of the Java program.&lt;br/&gt;&lt;br/&gt;

&lt;em&gt;Most of these benchmarks have long been implemented and honed in C&lt;/em&gt;&lt;br/&gt;
At this I can only wonder if you've actually looked at "these benchmarks".&lt;br/&gt;
Currently we don't even have a C implementation for 5 of them - chameneos, cheap-concurrency, k-nucleotide, pidigits, regex-dna. Please tell me who originated fasta and reverse-complement and tcp-request-reply and harmonic and ... I need to credit them.&lt;br/&gt;&lt;br/&gt;

&lt;em&gt;The interesting benchmark for Smalltalk is...&lt;/em&gt;&lt;br/&gt;
Can you show measurements for that benchmark?&lt;br/&gt;
(imo It isn't *the only* interesting benchmark.)  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Too pessimistic</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>
Steven Kelly</includedComments:author>
					<includedComments:pubDate>2005-12-13T16:29:27-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
Steven Kelly&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;I guess the main misunderstanding is that Isaac assumes I'm talking only about this particular set of benchmarks, whereas actually I meant benchmark competitions in general. Sorry that I was unclear.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Look bad [on speed] compared to what?&lt;/em&gt; Compared to the fastest languages, and also to the mainstream ones (C, C++, Java, C# from my point of view).&lt;/p&gt;&lt;p&gt;&lt;em&gt;Look fine on lines of code compared to what?&lt;/em&gt; The same as above. &lt;/p&gt;&lt;p&gt;Rewriting in C style certainly has speeded up maths intensive calculations in my experience. I guess the difference in our experiences there depends on our coding styles and skill at writing fast code, whether in C, Smalltalk, or C in Smalltalk, or then just on different kinds of problems we've met.&lt;/p&gt;&lt;p&gt;&lt;em&gt;I wonder if you've actually looked at these benchmarks.&lt;/em&gt; I have: some but by no means all implementations of all benchmarks in all languages. But as I said, I was talking about benchmark competitions in general, and I'm sure you wouldn't have taken offence if that had been clear.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;quot;The interesting benchmark for Smalltalk is implementation time&lt;/em&gt;&amp;quot;. &lt;em&gt;Can you show measurements for that benchmark?&lt;/em&gt; Measuring that is hard, but important. &lt;a href="http://www.spr.com"&gt;www.spr.com&lt;/a&gt; have perhaps come closest to finding a way to estimate implementation time based only on the source code output. &lt;a href="http://www.whysmalltalk.com/smalltalkcomparisons/"&gt;www.whysmalltalk.com/smalltalkcomparisons/&lt;/a&gt; has a number of good cases (e.g. Elastolab and Linea).&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Re: Valid Comparisons: Hard</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Valid_Comparisons:_Hard&amp;entry=3311841442</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-13T18:20:08-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;I was talking about benchmark competitions in general, and I'm sure you wouldn't have taken offence if that had been clear.&lt;/em&gt;&lt;br/&gt;
No I wouldn't have, we can both take credit for the misunderstanding.&lt;br/&gt;&lt;br/&gt;

&lt;em&gt;Compared to the fastest languages...&lt;/em&gt;&lt;br/&gt;
The fastest language implementation on one benchmark can be much slower on another benchmark - always comparing to the fastest guarantees disappointment.&lt;br/&gt;&lt;br/&gt;
Having said that there do seem to be a couple of areas where the Java program seems much better.&lt;br/&gt;&lt;br/&gt;
imo Smalltalk never seemed that concise - it seemed literate and readable.&lt;br/&gt;&lt;br/&gt;

&lt;em&gt;C style certainly has speeded up maths intensive calculations&lt;/em&gt;&lt;br/&gt;
I guess that depends what we understand "C style" to mean - I was thinking that unlike many other languages we can speed up calculations by moving the calculation inside an object to access instance variables directly.&lt;br/&gt;&lt;br/&gt;

It would be great if you could rewrite some of the shootout benchmark programs in faster "C style" Smalltalk ;-) &lt;br/&gt;&lt;br/&gt; 


&lt;em&gt;implementation time&lt;/em&gt;&lt;br/&gt;
Sorry to say I haven't seen an up-to-date version of the spr language comparison table.  
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Fair enough</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3311841442</wfw:comment>
		</item>
		<item>
			<title>Comparing Languages</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3311762223</link>
			<category>testing</category>
			<pubDate>Sun, 11 Dec 2005 13:57:03 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml"> 
<p> 
<a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView?showComments=true&amp;entry=3311750128"> 
Troy</a> posted a comparison of some C# logging code and a simple
translation to Smalltalk - and then noticed that the Smalltalk code
was a lot slower (nearly 5x). Well, this calls for the profiler. I
got the same results for all three of his scenarios in Smalltalk,
so I'll compare the code for the class test and for the instance
test. First, I loaded Troy's code. Second, I went to the Parcel
Manager and loaded the Advanced Tools (there's a legacy name for
you) - which brings in the profiler. Profiling the code:</p> 
<p> 
<pre> 
 
 

TimeProfiler profile: [TimeLoggers timeClassLogger: 200000].


</pre> 
</p> 
<p> Leads to this result:</p> 
<p> 
<a href="http://www.cincomsmalltalk.com/blog/images/cstTools/large_profile_log.png"> 

<img alt="Profile (Click to Expand)" height="198" src="http://www.cincomsmalltalk.com/blog/images/cstTools/small_profile_log.png" width="300"></img>  
</a> 
</p> 
<p> You can click through to see the larger view. The upshot is, the
original logging code sends #today to class Date multiple times
within the logging code (instead of once). Additionally, it turns
out that #expandMacrosWith: - while convenient - is fairly
expensive. You can see all that in the expanded view. In any case,
here's the original code:</p> 
<p> 
<pre> 
 
 

writeToLog: aString 
	(self fileStream)
	       nextPutAll: ('%&lt;!--         
&lt;1p&gt;/&lt;2p&gt;/&lt;3p&gt;' 
	                               expandMacrosWith: Date today
dayOfMonth
	                               with: Date today monthIndex
	                               with: Date today year)
 
</pre> 
</p> 
<p> To change the performance, I did two things. First, I changed
the code above to just print the string that was sent in, and then
I changed the calling code to send in the string with the Date
formatted. I could have encapsulated that in the new code for the
above, but in any case, here's the new caller:</p> 
<p> 
<pre> 

       1 to: iterations
	       do: 
	               [:i | 
	               si 
	                       writeToLog: ('Testing write to log via
basic logger - line number ', i printString,  
	                                       ' ', todayString)].


</pre> 
</p> 
<p> A better variation would have the todayString done in the logger - it doesn't force work on the user of the code. In any case, this variation yields logging code that is still slower than the C# code, but not absurdly so. I also posted that - 1.1 is the faster (but less well coded) version, with 1.2 being the better way. That code has the caller simply send in a string, to which the date will be appended, as follows:</p> 
<p> 
<pre> 

   | todayString |
	todayString := Date today printFormat: #(2 1 3 $/ 1 1 ).
	(self fileStream)
	       nextPutAll: '&lt;--  ';
	       cr;
	       nextPutAll: aString, ' ';
	       nextPutAll: todayString;
	       cr;
	       nextPutAll: '--&gt;';
	       cr;
	       flush


</pre> 
</p> 
<p>On my system, that runs a a bit faster than the better encapsulated version, but not much. </p><p>The upshot of all this? Two things:</p><ul xmlns="http://www.w3.org/1999/xhtml">
			<li>Direct translations of code rarely lead to good results. Each language system has strengths and weaknesses, and direct translations don't hit the strengths</li>
		<li>Never make guesses about performance - run the profiler. </li></ul><p>Again, all the code for this is in the public Store.</p></div>]]></description>
			<guid isPermaLink="false">3311762223</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3311762223</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3311762223</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-11T15:35:02-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;The Computer Language Shootout, home of easily mis-interpreted comparisons, &lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=vw&amp;lang2=csharp"&gt;now includes VW NC&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>comparing performance</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:puid>
					<includedComments:author>Travis Griggs</includedComments:author>
					<includedComments:pubDate>2005-12-12T03:16:13-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I was so looking forward to doing this Monday morning. I may still have to have a go at it, but beating me to the punch takes some of the oomph out of it. :(&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Darn</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:puid>
					<includedComments:author>
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView"&gt;Troy Brumley&lt;/a&gt;</includedComments:author>
					<includedComments:pubDate>2005-12-12T10:46:02-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView"&gt;Troy Brumley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;p&gt;Travis, please dig in.  I was hoping to get some comments from various people on the code, but Jim jumped in and did something exhaustive, which I fear shut other people down.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Jim sometimes tromps on discussions :)</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:puid>
					<includedComments:author>
Terry</includedComments:author>
					<includedComments:pubDate>2005-12-12T11:35:37-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
Terry&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;Issac&lt;/p&gt;
&lt;p&gt;The benchmarks are not consistent. Some compile first during build and others compile and run from the command line. If you want an even comparison for vw you would first file in the code and then save an image. Then run the image from the command line.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
benchmarks not consistent</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Comparing_Languages&amp;entry=3311762223</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2005-12-12T12:48:54-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;em&gt;"If you want an even comparison for vw..."&lt;/em&gt;&lt;br/&gt;
See the comment "Your assumption is plain wrong" on &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3311841442"&gt;Valid Comparisons: Hard&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Terry, we already do that</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3311762223</wfw:comment>
		</item>
		<item>
			<title>The value of unit tests</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3305432164</link>
			<category>testing</category>
			<pubDate>Thu, 29 Sep 2005 07:36:04 EDT</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://homepage.mac.com/keithray/blog/2005/09/28#Filters">MemoRanda</a> gives a nice example of why unit tests are worthwhile.</p>
</div>]]></description>
			<guid isPermaLink="false">3305432164</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3305432164</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3305432164</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3305432164</wfw:comment>
		</item>
		<item>
			<title>When Tests are erratic</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3289495065</link>
			<category>testing</category>
			<pubDate>Mon, 28 Mar 2005 20:37:45 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://martinfowler.com/bliki/ErraticTestFailure.html">Martin Fowler</a> brings up a point about testing that can't be hammered enough: isolation, isolation, isolation:</p>

<blockquote>
If tests sometimes pass and sometimes fail on a run without any code changes, or tests pass when run in some suites but fail when run in others; nine times out of eight the reason is that there is some shared data between tests that isn't being properly reinitialized. When that happens just running a test can be the difference between other tests passing and failing. The result is an intermittent failure - always the worst because you can't reliably reproduce it.
</blockquote>

<p>More than once, I've needed a pounding with the cluestick over this sort of thing...</p></div>]]></description>
			<guid isPermaLink="false">3289495065</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3289495065</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3289495065</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:puid>
					<includedComments:author>
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView"&gt;Troy Brumley&lt;/a&gt;</includedComments:author>
					<includedComments:pubDate>2005-03-29T07:47:18-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;p&gt;Comment by 
&lt;a href="http://www.cincomsmalltalk.com/userblogs/troy/blogView" rel="noFollow"&gt;Troy Brumley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;


&lt;/p&gt;
&lt;p&gt;&lt;p&gt;Clue &lt;em&gt;stick&lt;/em&gt;???  Only a stick?  I was thinking more a clue &lt;b&gt;log&lt;/b&gt; :)&lt;/p&gt;
&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Re: When Tests are erratic</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:puid>
					<includedComments:author>
David Buck</includedComments:author>
					<includedComments:pubDate>2005-03-29T09:03:15-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&lt;p&gt;Comment by 
David Buck&lt;/p&gt;

&lt;p&gt;
Actually, clue logs are hard to swing.  You need a good clue-by-four.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
When Tests are erratic</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=When_Tests_are_erratic&amp;entry=3289495065</includedComments:puid>
					<includedComments:author>James T. Savidge</includedComments:author>
					<includedComments:pubDate>2005-03-29T09:46:21-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;You might need to tie two clue-by-fours together.


&lt;/p&gt;
&lt;p&gt;This would ensure that the code stays cellulosly coupled.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Re: clue-by-four.</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3289495065</wfw:comment>
		</item>
		<item>
			<title>Usability and error reporting</title>
			<link>http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3284265260</link>
			<category>testing</category>
			<pubDate>Thu, 27 Jan 2005 07:54:20 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href=" http://blogs.msdn.com/cyrusn/archive/2005/01/27/361412.aspx">Cyrus</a> explains some error reporting code in the current beta of VisualStudio - basically, VS is either going to throw a "recoverable Watson" at you when an exception occurs, or queue them up for later reporting.  The idea is to have more information sent back to the team in Redmond.  I'd be curious to know how this works out, for a very simple reason - in my experience, people - users and developers both - <b>never</b> read the text of the error messages that come up.  They tend to hit &lt;return&gt; and move along.  It looks like the default for this is going to be "send the information to MS".  It will be interesting to see how that works for them.</p>
</div>]]></description>
			<guid isPermaLink="false">3284265260</guid>
			<pingback:server>http://www.cincomsmalltalk.com/blog/servlet/CommentAPIPBServlet?guid=3284265260</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/blog/blogView?entry=3284265260</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/blog/blogView/servlet/CommentAPIServlet?guid=3284265260</wfw:comment>
		</item>
	</channel>
</rss>
