<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version='2.0'>
  <channel>
    <generator>PHP</generator>
    <title>Theron</title>
    <link>http://theron.ashtonmason.net</link>
    <language>en-gb</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <lastBuildDate>Fri, 06 Aug 2010 05:45:26 -0500</lastBuildDate>
    <pubDate>Fri, 06 Aug 2010 05:45:26 -0500</pubDate>
    <description>Theron news feed</description>
    <item>
      <title>FAQ page</title>
      <link>http://theron.ashtonmason.net/index.php?t=story&amp;p=26</link>
      <guid>http://theron.ashtonmason.net/index.php?t=story&amp;p=26</guid>
      <pubDate>Fri, 06 Aug 2010 05:45:26 -0500</pubDate>
      <description>
<![CDATA[
<h1>FAQ page</h1>I've added an FAQ page, linked from the documentation menu on the website.

http://theron.ashtonmason.net/index.php?t=page&p=documentation

It's pretty basic so far with answers to only a few questions. If you have any questions you'd like addressed let me know.
]]>
</description>
    </item>
    <item>
      <title>Version 2.05.01 released</title>
      <link>http://theron.ashtonmason.net/index.php?t=story&amp;p=25</link>
      <guid>http://theron.ashtonmason.net/index.php?t=story&amp;p=25</guid>
      <pubDate>Thu, 15 Jul 2010 17:07:41 -0500</pubDate>
      <description>
<![CDATA[
<h1>Version 2.05.01 released</h1>This patch release fixes a couple of important build issues. Most significantly, the debug builds of the Boost thread libraries were previously used for release builds, when built via the included makefile. Visual Studio builds were unaffected.

As an incidental change, the makefile now assumes the use of GCC 4.4 rather than 3.4. That came about because I've been experimenting with Qt, and Qt Creator provides GCC 4.4 as part of its distribution. Turns out it's vital to build all libraries with the same release - or at least libraries built with 3.4 and 4.4 seem to be incompatible. The pre-built libraries included with Theron are now also built using GCC 4.4.

If you're using GCC 3.4 yourself then just switch the Boost library names back to "mgw34" in the makefile.

The general advice is to build Boost with your favourite build configuration, build Theron the same way, and update the included makefile to point at your Boost libraries correctly (the names reflect how they were built). See the release notes for more information.
]]>
</description>
    </item>
    <item>
      <title>More performance results</title>
      <link>http://theron.ashtonmason.net/index.php?t=story&amp;p=24</link>
      <guid>http://theron.ashtonmason.net/index.php?t=story&amp;p=24</guid>
      <pubDate>Mon, 05 Jul 2010 15:47:26 -0500</pubDate>
      <description>
<![CDATA[
<h1>More performance results</h1>Published today, some performance results for Theron running on a "proper" machine, specifically a four-core Intel Xenon X5550 2.67GHz.

http://theron.ashtonmason.net/index.php?t=page&p=performance

Like the earlier results, these are timing measurements for the ThreadRing benchmark included in Theron-2.05.00. They confirm that Theron is fast. A "token" message is passed around a ring of 503 actors, with each actor forwarding the message to the next in the ring. The time for 50 million actor-to-actor "hops" is around 8 seconds, which compares with the times for the same benchmark in Erlang.

A few caveats apply, of course. For one, Theron implements a considerably stripped-down version of the Actor Model and doesn't offer the full functionality of Erlang. It also isn't a language and so brings with it the hazards of C++ -- you can shoot yourself in the foot, basically. But for those that want the convenience of the Actor Model in a C++ environment, Theron provides the raw performance.

Another thing to note is that Theron is effectively running on a single thread in the ThreadRing benchmark, due to the use of tail-call optimization. The process of sending a message from one actor to another around a ring is essentially a serial operation with no opportunity for significant parallelism. Therefore the smart way to do it is using a single thread which "executes" each actor in turn. That's what Theron does, in this case. You can specify more worker threads, but the results are the same since the additional threads offer no advantage, in this very specialized case, and so just spend the whole benchmark asleep.

In that sense ThreadRing is quite limited, as a test of parallelism. It's a test of message passing overheads, from Theron's point of the view. The key to running it fast is to make the queueing of messages and the dispatch of "dirty" actors to the worker threads as cheap as possible. The results suggest Theron's implementation is pretty efficient.

A useful next step would be to write a benchmark which shows true parallelism, and how it can be exploited easily and to good effect in Theron.
]]>
</description>
    </item>
    <item>
      <title>Performance results</title>
      <link>http://theron.ashtonmason.net/index.php?t=story&amp;p=23</link>
      <guid>http://theron.ashtonmason.net/index.php?t=story&amp;p=23</guid>
      <pubDate>Sat, 03 Jul 2010 13:27:02 -0500</pubDate>
      <description>
<![CDATA[
<h1>Performance results</h1>I've already blogged about this in the blurb about the 2.05.00 release, but I thought I'd highlight that there are now some performance results for Theron online.

http://theron.ashtonmason.net/index.php?t=page&p=performance

Although tested on a somewhat humble machine, the results establish Theron's raw performance as being as good as (or better than) well-known Actor Model implementations such as Erlang and ActorFoundry.

(That said, it should be noted that those implementations are more fully-featured; Theron is quite lightweight by comparison and pretty "C++" in its design intentions).

More results, from a more representative four-core machine, to come in the near future.
]]>
</description>
    </item>
    <item>
      <title>Version 2.05.00 released</title>
      <link>http://theron.ashtonmason.net/index.php?t=story&amp;p=22</link>
      <guid>http://theron.ashtonmason.net/index.php?t=story&amp;p=22</guid>
      <pubDate>Sat, 03 Jul 2010 12:55:39 -0500</pubDate>
      <description>
<![CDATA[
<h1>Version 2.05.00 released</h1>Version 2.05.00 is a minor release aimed at establishing some performance benchmarks.

The 'TokenRing' demo included in earlier releases has been renamed to 'ThreadRing', and rewritten to correctly implement the well-known thread-ring benchmark used for performance comparison of concurrent systems. The demo now matches the benchmark's traditional definition:

- create 503 linked threads (named 1 to 503)
- thread 503 should be linked to thread 1, forming an unbroken ring
- pass a token to thread 1
- pass the token from thread to thread N times
- print the name of the last thread (1 to 503) to take the token

Performance results for the new 'ThreadRing' benchmark are listed here:

http://theron.ashtonmason.net/index.php?t=page&p=performance

You can download the 2.05.00 release and read the release notes in full at this link:

http://theron.ashtonmason.net/index.php?t=downloads
]]>
</description>
    </item>
  </channel>
</rss>
