Re[2]: многопоточность и скорость
От: remark Россия http://www.1024cores.net/
Дата: 05.02.09 13:54
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, kot--, Вы писали:


K>> Скомпилированный с оптимизацией(/O2) по скорости экзешник считает на 20% чем его однопоточный(/O2).

K>> Скомпилированный БЕЗ ОПТИМИЗАЦИИ(/Od) — на 77% быстрее однопоточный(/Od).

K>> Чем можно объяснить подобные результаты?


E>Вполне возможно, что в программе есть куски кода, которые действительно исполняются параллельно, а есть точки, в которых работа приостанавливается для взаимной синхронизации (даже на неявной, вроде копирования двух std::string). Без оптимизации параллельные куски кода работают дольше, поэтому время распределяется так, что несколько потоков редко одновременно оказываются на точках синхронизации. С оптимизацией куски кода работают быстрее, соответственно время распределяется по другому и потоки чаще одновременно входят в точки синхронизации и, соответственно, больше простаивают.


Полностью согласен. В релиз версии синхронизация стала чаще, соотв. больше конкуренции. А учитывая, что на современных компиляторах скорость релиз и дебаг могут отличаться порядка 10 раз, то соотв. синхронизация стала значительно чаще.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.