Мне интересно узнать о производительности использования std::atomic по сравнению с обычным числом с плавающей запятой в приложении. Мне тоже интересно, что на это влияет. Я часто вижу темы о производительности атомов и мьютексов, но мне труднее найти информацию об атомах и неатомарностях.
Я не использую это как способ сделать мой код потокобезопасным или нет, просто хочу понять связанные с этим накладные расходы.
(EDIT: на этом этапе исходного вопроса Я привел пример (см. ниже), который должен был иллюстрировать изменение реализации, а не задавать конкретный вопрос об этом коде. Похоже, это смутило людей относительно того, о чем я спрашивал, поэтому я его удалил.)
В основном я хочу знать, каковы общие факторы, влияющие на производительность std::atomic. Это платформа? Как они используются? Не медленнее ли использовать атомы, к которым два потока обращаются примерно к одному и тому же объему, вместо того, чтобы один поток обращался к ним 95% времени, а другой лишь изредка?
Кроме того, есть ли какая-либо разница между std::atomic и std::atomic в этом отношении?
Спасибо заранее,
Адам
Пример из исходного вопроса :
По сути, я попробовал создать миллион чисел с плавающей запятой и записать в них значения 200 раз. У меня это заняло 0,87 секунды. Когда я изменил их на std::atomic, это заняло около 2,5 секунд. Это означает, что использование std::atomic примерно в 3 раза дороже.
Я пробовал это, но для чтение значений, а не запись, и обнаружил, что обычные операции с плавающей запятой и std::atomic занимают одинаковое количество времени.
Но влияет ли на это что-то еще? Если другой поток записывает/читает мои атомы, замедляет ли это другие операции чтения/записи в ту же переменную? Вероятно, так и есть, но как мне это лучше понять?
Подробнее здесь: https://stackoverflow.com/questions/518 ... -variables
Какова производительность std::atomic и неатомарных переменных? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение