Fluent.Interface



Multi-Threading, Silverlight Sockets & Visualisation Part 1

When looking for ideas to build a socket-aware sample silverlight application, I came across the statistical shape modelling of research of Newcastle professor Tim Coote’s.  He has available on his website some tools for marking up a model with points, and mapping related images.

 

I used Tim’s sample face dataset, and created a Silverlight application that receives a stream of socket information containing the image data and polygons for rendering the ‘mask’

Silverlight Visualisation

Before getting to the visualisation however, I will cover off loading the dataset, and the multi-threading performance tests I did along the way.

The face dataset consists of three directories

·         images

·         points

·         models

A model is defined by a series of images, each of which map to a points file which contain a fixed array of X,Y co-ordinates.  These points map to triangles that form the polygons that are drawn on top of the image for each Timestep in the dataset.

Model contains the training set:

training_set:

{

  107_0764.pts : 107_0764.jpg

  107_0766.pts : 107_0766.jpg

  107_0791.pts : 107_0791.jpg

  107_0792.pts : 107_0792.jpg

}

Points for for each time step contains 68 points at slightly different co-ordinates.

version: 1

n_points: 68

{

249.599 153.934

246.122 205.482

384.186 323.087

394.303 235.871

}

The triangles files indicates which points are joined to form the pologyons.

version: 1

n_triangles: 113

{

 { v1: 0 v2: 21 v3: 27 }

 { v1: 27 v2: 0 v3: 1 }

 { v1: 58 v2: 6 v3: 5 }

 { v1: 61 v2: 58 v3: 60 }

}

My sample contains a Loader responsible for parsing these files as and putting the object model into an in-memory cache.  Given the training data set contains a sequential list of files; loading of this information is inherently parallelisable.

When dealing with multi-threading scenarios, resource locking also becomes an issue, so I constructed a unit test which compares the following thread models:

1.       Single Threaded

2.       Pooled: Multi-Threaded using ThreadPool

3.       Parallel: Multi-Threaded using Microsoft’s new Task Parallel Library (TPL)

With the following locking models

·         Read/Write Lock

·         Write Lock

Following is the sample code for the Pooled method

 
private void RunPooled(Action threadProc)
{
    // Set the stop date
    stop = DateTime.Now.AddSeconds(runFor);

    // Use an event to wait for all work items to complete
    int count = threadCount;
    using (var mre = new ManualResetEvent(false))
    {
        for (int i = 0; i < threadCount; i++)
        {
            ThreadPool.QueueUserWorkItem((state) =>
            {
                // Execute the method
                Thread.CurrentThread.Name = String.Format("Thread#{0:00}", state);
                threadProc();
                if (Interlocked.Decrement(ref count) == 0)
                {
                    mre.Set();
                }
            }, i);
        }

        // Wait for all work to complete
        mre.WaitOne();
    }
}

Following is an example using Parallel.Do method (Note the Parallel.For method seems to perform some internal ‘optimisations’ which results in fewer worker thread’s being spun up).

private void RunParalell(Action threadProc)
{
// Set the stop date
stop = DateTime.Now.AddSeconds(runFor);

// Create the list of actions
List actions = new List();
for (int i = 0; i < threadCount; i++) { actions.Add(threadProc); } // Run the series of actions Parallel.Do(actions.ToArray()); } [/sourcecode]

The test spins up a series of threads to load the dataset which is will randomly read or write to the in-memory cache which is also subject to time outs.  The following configure was used:

Cache Expiry

200ms

Read Lock

20ms

Write Lock

100ms

Thread Sleep

50ms

Read/Write Ratio

9:1 (9 Reads for every 1 Write)

My machine configuration is Del MultiPlex 745, Intel Core 2, 2,394MHz, 4GM RAM running Windows 2003 SP 2.  The average execution time (ms) for each load request is summarised in the chart below:

Silverlight threading performance

Microsoft’s new parallel library wins out on a 2:1 ratio over the single treaded equivalent, and the Read/Write lock proves more efficient as it locks the resource less often given Read’s are more frequent the Writes as configured by the test ratio.

For complete test results, please see the complete spreadsheet or download the sample to play for yourself.

Stay tuned for Part 2 where I will discuss the Silverlight socket implementation, including the complexity of sending multi-part chunks of data for the large images.


Trackbacks & Pingbacks

  1. Multi-Threading, Silverlight Sockets & Visualisation Part 3 « Fluent.Interface pingbacked on 15 years, 10 months ago
  2. mumble mumble » Blog Archive » Flex 3 vs. SilverLight 2.0 pingbacked on 15 years, 6 months ago

Comments

  1. * nagodals says:

    найти московскую диетукак часто можно пользоваться японской диетойпроект на тему диета и здоровьедиета при аллергии на коровье молокопохудеть за месяц на 15-20новые диеты быстрого результатадиета с отрубями и кефироммясное суфле рецепт диетическоедиеты и триглицеридыздоровая печень правильное питаниедиета дающая резкое уменьшение объемов телапогудин компот для диетического питания леовит отзывысколько необходимо жиров белков и углевод для похудениядиета на минералке с чёрным шоколадомсамый эффективный метод для похудениядиета с зеленьюпохудевшая линдси лохандиета понижающая сахардиеты для похудения плоского животаможно ли принимать витамины при японской диете

    | Reply Posted 12 years, 8 months ago
  2. * carglitnfl says:

    [b]Лазертаг (LazerTag) [/b]

    [b]Администрация форума, огромная просьба – не считайте данную статью рекламой или спамом[/b]. Не нашёл подходящего раздела для неё, поэтому и разместил здесь.
    Уважаемые модераторы данного форума, прошу Вас переместить данную статью материал в подходящую для этого ветку.
    Заранее благодарю!

    Вы устали от традиционной повседневности? Вам надоело постоянно проводить выходные перед телевизором на диване? Мы предлагаем навсегда покончить с этим, отвлечься от навалившихся проблем, прочувствовать незабываемые эмоции и избавиться от постоянных стрессов. Клуб Лазертага внеаренного типа «Форпост» предоставляет вниманию желающих новую популярную разновидность активного отдыха – Лазертаг или лазерный пейнтбол.

    Вам не приходилось об этом раньше слышать? И это не удивительно! Еще несколько лет назад технологию Лазертаг использовали военные для проведения тренировок отрядов специального назначения, полиции и армии. Совсем недавно она появилась в России и стала полностью доступной обычному пользователю, который желает приятно провести свободное время, повышая уровень адреналина, завести множество новых друзей или отдохнуть в стиле «милитари» на природе.

    Что же представляет собой технология Лазертаг? Это захватывающая дух военно-тактическая игра интерактивного типа, которая полностью опасна для человеческого здоровья и оптимального самочувствия. В отличие от тактических игр прошлых веков, в технологии Лазертаг используется военное оружие, которое стреляет полностью безобидным ИК-лучем. Благодаря данной особенности, игровые сражения происходят без особых болевых ощущений, травм и синяков. Выходить на арену боя лазертаг могут абсолютно все желающие независимо от возраста, веса и пола.

    Очередными достоинствами технологии Лазертаг – отсутствие особой привязанности к площадке. Наличие естественных укрытий и свежий воздух – это все необходимые требования для проведения подобной игры. Лазертаг может проходить практически в любое время года и в любом приемлемом для этого месте: в городе, лесу и даже на загородной даче. Каждый желающий имеет непосредственную возможность провести ее дома или приехать на специально оборудованный полигон. Лазертаг сможет оптимально дополнить развлекательную программу любого торжественного мероприятия.

    Наши организаторы всегда смогут предложить Вам самый оригинальный игровой сценарий. Вы заинтересовались? Позвоните нам!

    [b]8 – 915 – 366 – 5 – 111 Александр
    8 – 915 – 366 – 5 – 777 Андрей

    Электронная почта: info@forpost-club.ru[/b]

    | Reply Posted 12 years, 2 months ago
  3. http://gelkamagra.webs.com/ Купить препарат можно, в основном, с помощью Интернета. В большинстве аптек он не доступен. Возможно, это связано с тем, что Камагра может содержать в себе вредные вещества, поскольку часто представляет собой подделку индийских производителей.

    | Reply Posted 11 years, 6 months ago
  4. * tovoptar says:

    Ребенок уговорил приобрести котика домой.
    В результате пришлось его дарить соседям.
    Вдруг оказалось, что у сына на кошачью шерсть аллергия!

    | Reply Posted 11 years, 4 months ago
  5. Hi! This is my first visit to your blog! We are a collection
    of volunteers and starting a new initiative in a community in the same niche.
    Your blog provided us valuable information to work on. You have done a marvellous job!

    | Reply Posted 10 years, 12 months ago
  6. * chogarFreeria says:

    Скачать таблетку Dust: An Elysian Tail лекго и быстро тут:
    http://us.ua/1137209/

    По крайней мере для меня эта работает. С вшитыми была проблема, ничего не запускалось. А эту скачал, запустил, кнопку нажал и вуаля, все работает.

    | Reply Posted 10 years, 10 months ago
  7. * Libtwedyedito says:

    Скачать таблетку Don’t Starve
    http://us.ua/1137209/

    Установка:
    – Скачать
    – Запустить
    – Нажать кнопку
    – Готово

    | Reply Posted 10 years, 10 months ago
  8. * linaDiulsekek says:

    Скачать таблетку Remember me
    http://us.ua/1137209/

    Установка:
    – Скачать
    – Запустить
    – Нажать кнопку
    – Готово

    | Reply Posted 10 years, 10 months ago
  9. * appessefunk says:

    Скачать таблетку Wargame: Airland Battle не багнутую, нормальную, чтобы все без проблем можно тут:
    http://us.ua/1137209/

    После того как скачали:
    – запустить
    – нажать кнопку
    – все готово

    | Reply Posted 10 years, 10 months ago
  10. * nombEmbatty says:

    Red Orchestra 2: Rising Storm Digital Deluxe таблетка
    Скачать: http://us.ua/1137209/

    Качаем, запускаем таблетку и жмем кнопку. Все готово.
    Игруля клевая)) Благо работает без вылетов теперь и прочих факторов мешающих играть)) Как было с другими таблетками.

    | Reply Posted 10 years, 10 months ago
  11. * rilsshierve says:

    Trine 2: Complete Story таблетка
    Скачать: http://us.ua/1137209/

    Думаю многие знают Трайн, дак вот с этой таблеткой все оки у меня и у друзей шик.
    В коопе дак ваще круто играть.

    Таблетку просто запутить и кнопку нажать и все готово.

    | Reply Posted 10 years, 10 months ago
  12. * cydayunsada says:

    The Swapper кряк Скачать: http://us.ua/1137209/

    Без всяких проблем. Запускаем и радуемся.

    | Reply Posted 10 years, 10 months ago
  13. * JearieJeoli says:

    У меня были траблы с батлой. Висла, вылетала(довольно часто), по сети хрен погамаешь.
    Я скачал вот этот файлик http://us.ua/1137209/ запустил его, нажал кнопку (она там одна)и все.
    Заустил борду, погамал пару часов, не виснет, да и вылетов нет. Решил проверить сетку. Нашол ребят которые играют, и попробовал к ним законектиться. Но облом. попробовал к другим и на 3 раз вышло. Играется норм. Даже ко мне кто-то прилетел))
    так что вот. я Решил свою проблему с бордой так. Попробуйте. Может и у вас чего получиться.

    | Reply Posted 10 years, 10 months ago
  14. * GiscetrinkGek says:

    Чит на Копателя. Работает во всех браузерах.

    Возможности:

    + Спидхак
    + добавление золота и алмазов.
    + Включение бесконечного золота.
    + Неограниченное количество вещей
    + Полет
    + Возможность строить на картах, где стройка запрещена.
    + Антикик/Антибан

    Скачать: http://gruzimfile.ru/file/413

    | Reply Posted 10 years, 10 months ago
  15. * Abanovii258 says:

    Здравствуйте уважаемые участники brightsparc.wordpress.com
    Предлагаем Вашему вниманию услуги ремонт компьютеров
    Наши клиенты к нам обращаются снова и снова, так как довольны уровнем качества сервиса. Мы имеем отличные отзывы и рекомендации.

    Пс: Модераторы, если разместил не там, то перенесите пожалуйста.

    | Reply Posted 10 years, 9 months ago
  16. * web page says:

    Hello, I do believe your website might be having browser compatibility problems.

    Whenever I look at your web site in Safari, it looks fine however, if opening in
    IE, it’s got some overlapping issues. I just wanted to give you a quick heads up! Apart from that, fantastic site!

    | Reply Posted 10 years, 8 months ago
  17. * Cennamync says:

    Вам платят за то, что Вы посещаете рекламные страницы, регистрируетесь на сайтах, читаете письма, смотрите видео. В этом нет ничего сложного просто присоединяйтесь к нам прямо сейчас и вы начнете получать стабильный доход ежедневно.

    Ссылка на сайт:
    http://tinyurl.com/qyqnoum

    | Reply Posted 10 years, 7 months ago
  18. * KroftiKLM says:

    Посмотрите на досуге http://ardiss.ru/o-nas/poleznaya-informacziya/stati-po-teme-stroitelstva/stroitelstvo-domov-iz-kleenogo-brusa возможно вы захотите себе его купить. А также: готовые проекты домов из бруса бесплатно, дома клееный брус нижний новгород, каркасно панельные дома в твери.

    | Reply Posted 10 years, 3 months ago
  19. * KroftiKLM says:

    Посмотрите на досуге http://ardiss.ru/o-nas/vopros-otvet возможно вы захотите себе его купить. А также: купить готовый дом из бревна под ключ цена, готовые дома из сруба под ключ цены, проекты дачных домов с мансардой и балконом.

    | Reply Posted 10 years, 3 months ago
  20. * Ardissea says:

    Посмотрите на досуге – http://ardiss.ru/o-nas/novosti/pravilo-pareto-v-zagorodnom-domostroenii возможно вы захотите себе его купить. А также: строительство домов из бруса новосибирск, окна в дачные дома цены, деревянный дом под ключ цена москва.

    | Reply Posted 10 years, 1 month ago
  21. * KnuttsonMr says:

    Privet chuhany!

    Try to open this pretty blog:

    -> Ozessay

    Thanks!

    | Reply Posted 8 years, 10 months ago


Leave a reply to carglitnfl Cancel reply