<?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"
	>
<channel>
	<title>Comments on: The crusade for effective parallelism</title>
	<atom:link href="http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/</link>
	<description>touching people with his noodly appendage</description>
	<pubDate>Fri, 30 Jul 2010 09:55:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Jon Harrop</title>
		<link>http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/#comment-8</link>
		<dc:creator>Jon Harrop</dc:creator>
		<pubDate>Sat, 19 Jul 2008 12:45:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.jenkz.org/?p=12#comment-8</guid>
		<description>You must distinguish between concurrency and parallelism. Concurrency is about overlapping tasks to improve latency whereas parallelism is about executing code simultaneously to improve throughput. In particular, concurrency is rarely CPU limited but parallelism is always CPU limited.

As you have noted, immutable data structures are often 10x slower than their mutable counterparts and, consequently, their elegant style can be great for making concurrent programming easier but it is virtually useless for parallelism because computational efficiency is critical there.

However, you will find that F# is enormously beneficial for both concurrent and parallel programming. Concurrent programming is greatly simplified in F# thanks to its Erlang-style support via asynchronous workflows. Parallelism is greatly aided in F# thanks to improved code factoring via first-class functions and the Task Parallel Library.

High performance parallelism has already been covered in one of our F#.NET Journal articles and concurrency will be covered soon.

Regards,
Jon Harrop.</description>
		<content:encoded><![CDATA[<p>You must distinguish between concurrency and parallelism. Concurrency is about overlapping tasks to improve latency whereas parallelism is about executing code simultaneously to improve throughput. In particular, concurrency is rarely CPU limited but parallelism is always CPU limited.</p>
<p>As you have noted, immutable data structures are often 10x slower than their mutable counterparts and, consequently, their elegant style can be great for making concurrent programming easier but it is virtually useless for parallelism because computational efficiency is critical there.</p>
<p>However, you will find that F# is enormously beneficial for both concurrent and parallel programming. Concurrent programming is greatly simplified in F# thanks to its Erlang-style support via asynchronous workflows. Parallelism is greatly aided in F# thanks to improved code factoring via first-class functions and the Task Parallel Library.</p>
<p>High performance parallelism has already been covered in one of our F#.NET Journal articles and concurrency will be covered soon.</p>
<p>Regards,<br />
Jon Harrop.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
