В конце http://blog.memsql.com/common-pitfalls-in-writing-lock-free-algorithms/ Дэвид Столп показывает данные о производительности для стека блокировки, показывающие, что версия без блокировки медленнее, чем последовательная версия, защищенная мьютексом, даже если конфликт увеличивается. Результаты интересны, но меня интересуют две вещи:Являются ли данные о производительности для стека без блокировки на http://tinyurl.com/pzpyvb9 реалистичным?
- В лучшем случае «общая пропускная способность» уменьшается, а затем выравнивается по мере увеличения количества потоков. Должна ли общая пропускная способность увеличиваться по мере увеличения количества потоков?
- В итоговой таблице значения производительности для 1 потока варьируются от 35М до 55М. Это похоже на ужасно широкий диапазон для 1 потока (где не может быть никаких разногласий).
Я попытался найти способ связаться с автором по этим вопросам, но у меня не было успеха, поэтому я обращаюсь к сообществу SO, чтобы убедиться, что результаты кажутся реалистичными. Они?
Как я вижу, версия мьютекса si самая медленная. –
@GJ: Из того, что я могу сказать, версия на основе мьютекса - это, по сути, та же самая (медленная) скорость, что и «наивная» версия без блокировки (за финальную диаграмму). Это может быть немного медленнее, однако вы правы. Но это не влияет на мои вопросы о пропускной способности, поскольку количество потоков увеличивается или широкий диапазон значений пропускной способности для одного потока. – KnowItAllWannabe