Здравствуйте, гость ( Вход | Регистрация )
Iron Bug | Дата 1.9.2010, 20:54 |
как можно сравнивать производительность объектов предназначенных для различных целей? естественно то что эти объекты эффективнее использовать для того, для чего они предназчены. вполне даже можно. задача была - синхронизировать выполнение разных потоков. это можно сделать очень разными способами. меня интересовал наиболее быстрый из них. |
|
DEADHUNT | Дата 1.9.2010, 11:26 |
я сравнивала мьютексы, условные переменные, прерывания потока как можно сравнивать производительность объектов предназначенных для различных целей? естественно то что эти объекты эффективнее использовать для того, для чего они предназчены. |
|
Iron Bug | Дата 1.9.2010, 0:55 |
если вы все же имели ввиду boost.thread.future<>, то никакого прироста производительности он не дает. да, его имела в виду, фьюча из thread'а. поправила пост. просто тест был на синхронизацию потоков и я писала очень быстро (времени было мало), а интерпроцесс "засел в кеше" от проверки ошибок, которые лезли со студией. что касается "прироста производительности" - я про это не говорила. я сказала, что это самый быстрый метод синхронизации потоков. всего лишь. это из моего тестирования я такой вывод сделала. я сравнивала мьютексы, условные переменные, прерывания потока (на самом деле, ещё ради интереса проверяла скорость сигналов в однопоточных вызовах). в венде быстрее всех оказались фьючи. под линюксом - условные переменные, а фьючи - следующие по скорости. таким образом, для синхронизации кроссплатформенных риалтаймовских приложений я для себя выбрала фьючи. впрочем, под линюксом у меня и так проблем не возникает - он гораздо шустрее венды. а вот ради ускорения в венде пришлось писать тест. |
|
DEADHUNT | Дата 31.8.2010, 10:10 |
смотри std::future<> это переименованный boost::thread::unique_future, точно также как в boost::scoped_ptr, а в std его назвали unique_ptr. последнее время не использую C++0x, т.к. могут возникнуть проблемы с компиляцией под различные ОСи, и с запуском под линуксом без соответствующего stdlibc++ |
|
niXman | Дата 31.8.2010, 0:53 |
Цитата а что это там за шаблон future? смотри std::future<> |
|
BRE | Дата 30.8.2010, 23:38 |
IMHO, не совсем. http://blog.emptycrate.com/node/290 имелось ввиду unique_future/shared_future(ссылка), а что это там за шаблон future? я такого в boost не видел, и тем более там внизу написано что это fake. По мне, это не просто обертка над какой-то синхронизацией, а скорее объект позволяющий выполнить некую операцию в отдельном потоке и по готовности отдать результат. Хотя методы синхронизации так конечно используются. |
|
DEADHUNT | Дата 30.8.2010, 22:57 |
IMHO, не совсем. http://blog.emptycrate.com/node/290 имелось ввиду unique_future/shared_future(ссылка), а что это там за шаблон future? я такого в boost не видел, и тем более там внизу написано что это fake. |
|
BRE | Дата 30.8.2010, 22:25 |
boost::thread::future это скорее обёртка над mutex, wait_condition. IMHO, не совсем. http://blog.emptycrate.com/node/290 |
|
DEADHUNT | Дата 30.8.2010, 21:55 |
в boost.interprocess нет класса future. вы о чем? ![]() тоже не понравилось когда прочитал. boost.thread.future<> не имеет никакого отношения к механизмам синхронизации. это просто обертка над boost.thread, создающая объект владеющий потоком, в котором "живет" boost.thread ![]() boost::thread::future это скорее обёртка над mutex, wait_condition. |
|
niXman | Дата 30.8.2010, 0:14 |
Цитата фича interprocess'а: фьюча (future). в boost.interprocess нет класса future. вы о чем? ![]() Цитата (future). даёт несомненное преимущество по скорости если вы все же имели ввиду boost.thread.future<>, то никакого прироста производительности он не дает. Цитата даже по сравнению с использованием бустовских мьютексов (хотя это странно, но факт). boost.thread.future<> не имеет никакого отношения к механизмам синхронизации. это просто обертка над boost.thread, создающая объект владеющий потоком, в котором "живет" boost.thread ![]() Цитата может, потом опубликую результаты тестов. угу. дико любопытно понять, о чем вы все же ![]() |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 0:35 |