Вот сравнительная таблица результатов: http://shootout.alioth.debian.org/u32q/benchmark.php?test=chameneosredux&lang=all
Результат в 0.72 секунды, когда ближайший конкурент показывает 4.59 – это мощно!
А вот сама программа: http://shootout.alioth.debian.org/u32q/benchmark.php?test=chameneosredux&lang=gcc&id=5
Мои поздравления Дмитрию (aka remark)!
Update: Дмитрий подготовил подробное описание того, что именно он сделал в своей реализации этого теста.
да remark вообще крут! По rsdn виден его резкий прогресс. Вот что бывает когда человек чем то серьёзно увлекается.
ОтветитьУдалитьАга. Ведь мало того, что увлекается, так еще ему и время удается выкраивать для этого!
ОтветитьУдалитьХотя, я думаю, он бы был не против, если бы это было хорошо оплачиваемым увлечением :)
спасибо-спасибо :)
ОтветитьУдалитькруто конечно.
ОтветитьУдалитьвот только сочетание cas и реального быдлокода меня почему-то пугает. :)
Вот у нас реальный ппц - год не можем уговорить топ-менеджеров что работу софтинки в кластере должен делать программист, а не тело из офиса. При том что фабы уже стучатся с мешками бабла. Просто когда эти менеджеры закончили свое развитие не было кластеров и потоков и cas и вообще :D
ззы про контраст просто решил написать, вот.
2Rubanets Myroslav: да фиг его знает, во что реально весь этот шум вокруг multi/many-core затем превратится. В реальности все может оказаться и не так страшно. А может и наоборот -- вон, вокруг Web-технологий страшный ужас какой творится: начиналось с CGI, потом PHP/JSP/ASP, потом AJAX, JavaScript и Flash, RoR/Django -- и все это для решения, по сути, одних и тех же задач. Представь, что в области мультипоточности/многозадачности такой зоопарк вырастет? ;)
ОтветитьУдалитьА что такое "фабы"?
2eao197:
ОтветитьУдалитьзоопарк таки вырастет - и это хорошо.
фабы = иносказательно ;) http://images.google.com.ua/images?hl=ru&client=firefox-a&rls=org.mozilla:en-GB:official&hs=XGi&q=semiconductor+fab&um=1&ie=UTF-8&ei=bxmqSsv2J8zJ_gasiLm8Bg&sa=X&oi=image_result_group&ct=title&resnum=4&gbv=1&ei=gRmqSsHQEdbisAbwr7n0Bw
Поздравляю, remark!!!
ОтветитьУдалитьА насчет хорошо оплачиваемого увлечения - так он сам не хочет ;)
2jazzer Так просто оплаты никто и не предлагал. Предлагают или оплату И переезд из столицы в глубинку, или оплату И переезд вообще в другую часть света и культуру :)
ОтветитьУдалить2Rubanets Myroslav ну на вкус и цвет как говорится... Как по мне, так код вполне цивильный.
ОтветитьУдалитьКстати, а из-за каких именно моментов Вы назвали это быдлокодом?
В любом случае, проект открытый - любой может предложить свою, более хорошую реализацию.
Кстати, написал достаточно подробное описание реализации:
ОтветитьУдалитьhttp://software.intel.com/ru-ru/blogs/2009/09/15/2002127/
2Dmitriy V'jukov
ОтветитьУдалитья вообще то сказал что меня пугает смешивать такой код (тонкий) с быдлокодом. О вашем коде я хорошего мнения.
2Dmitriy V'jukov: за подробное описание того, что было сделано -- отдельное спасибо. Ща добавлю эту ссылку в текст заметки. Имхо -- это бы описание расширить вводными словами и пояснениями "для чайников" и получилась бы хорошая статья о том, как можно на низком уровне задействовать многоядерные процессоры.
ОтветитьУдалить2Rubanets Myroslav А, извиняюсь, тогда значит я не понял о чём речь... я правда и сейчас не понимаю. При чём тут быдлокод?
ОтветитьУдалить2Евгений Охотников а описанием чего именно расширить? Какие места требуют пояснения?
ОтветитьУдалить2Dmitriy V'jukov: навскидку:
ОтветитьУдалитьa) нужно более подробно описать условие задачи и дать ее "хрестоматийное" решение на каком-то псевдокоде;
b) нужно объяснить для чайников, что такое CAS и почему используется он;
c) нужно объяснить для чайников, что такое линии кэша и чем опасно попадание данных для разных ядер в одну линию.
Т.е. представь, что ты пишешь для человека, который слышал шум про мультиядерность, но не очень представляет себе что это такое и что такое бенчмарк chameneos-redux.
2Dmitriy V'jukov:
ОтветитьУдалитьв общем-то Евгений Охотников уже написал - люди ничего не знают про микропроцессоры и их кэш и слова "модель памяти" у них остались в учебнике где было написано random access каждого байта ;) Они пишут код который едва едва работает в одном потоке и постоянно течет и крашит. Смены языков на это не влияют пока. Влияют только на форму диалогового окошка "программа совершила суицид и будет отправлена в ад".
ps да мы это уже обсуждали на кывте не раз (sleepydrago@кывт)
Спасибо за предложения, постараюсь их учесть в некоторой мере в дальнейшем.
ОтветитьУдалитьНо как известно для кого пишешь, тот тебя и читает :) Если пишешь "для чайников", то и общаться потом придётся с чайниками. Пойдут вопросы а что такое мьютекс и когда я долежн я его использовать. Или а вот тут у меня лабораторная, не поможете? :)
Если/когда я буду зарабатывать этим на жизнь (платные статьи, лекции), то пожалуйста, тут можно на любом уровне. А так просто для себя писать полноценные тьюториалы, это конечно было бы здорово, но ресурсы не позволяют.
Ну смотри, Дима, ты автор, тебе решать. Представь себе, что есть куча опытных программистов, которые нормально понимают, как обращаться с mutex-ами и condition-ами, а вот с CAS-ами дел не имели. Я, например, и не вспомню, когда в последний раз CAS использовал и использовал ли вообще. Такие люди тебе только спасибо скажут, если ты механизм CAS-ов прямо в статье распишешь, а не будешь отсылать читателей в Wikipedia или какой другой толмуд.
ОтветитьУдалить