<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8090495179721645456</id><updated>2011-04-21T12:07:18.462-07:00</updated><category term='performance'/><category term='finance'/><category term='WPF'/><title type='text'>High Performance C# / WPF for Finance</title><subtitle type='html'>Some of the lessons we have learned along the way in creating a C# / WPF finance application that can cope with the strain of thousands of updates per second.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wpf4finance.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8090495179721645456/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wpf4finance.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04917263933343794741</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8090495179721645456.post-8991479783072555081</id><published>2009-05-18T09:20:00.000-07:00</published><updated>2009-05-18T10:03:03.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>State of the App</title><content type='html'>We (&lt;a href="http://linwoodtrading.com/"&gt;Linwood Trading&lt;/a&gt;) part way through building a front office trading application. This blog will focus on the challenges and lessons dealing with WPF databinding in an environment with potentially 1000's of updates per second.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Objectives&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Infrequent garbage collection&lt;ul&gt;&lt;li&gt;The main drawback with a garbage collected language like C#/JAVA for a low latency financial application is that the GC can kick in at any time and freeze up all the threads for an indeterminate period. It's impossible to avoid garbage collection altogether but we need to minimise it so it becomes statistically insignificant compared to other lags.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Accurate recreation of the 'feel' of market data in the GUI&lt;/li&gt;&lt;li&gt;Reasonably rich GUI with backgrounds highlighting price changes&lt;/li&gt;&lt;li&gt;Don't overwhelm the Dispatcher thread to keep the GUI responsive&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Thoughts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Throttle price updates to the DataModel&lt;/li&gt;&lt;li&gt;Split core business logic from WPF in seperate Application Domain to prevent GUI triggering garbage collector&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8090495179721645456-8991479783072555081?l=wpf4finance.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpf4finance.blogspot.com/feeds/8991479783072555081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8090495179721645456&amp;postID=8991479783072555081' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8090495179721645456/posts/default/8991479783072555081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8090495179721645456/posts/default/8991479783072555081'/><link rel='alternate' type='text/html' href='http://wpf4finance.blogspot.com/2009/05/state-of-app.html' title='State of the App'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04917263933343794741</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
