ideas icon indicating copy to clipboard operation
ideas copied to clipboard

атрибут заменяющий реализацию benchmark::DoNotOptimize(..)

Open gleb-kov opened this issue 3 years ago • 0 comments

<Описание вашей идеи> Для бенчмаркинга используют функции clobber и escape (https://youtu.be/nXaxk27zwlk?t=2441). В актуальном google benchmark это функции Clobber и DoNotOptimize. Если Clobber получил адекватную реализацию с с++11 через atomic_signal_fence, то DoNotOptimize все еще остается compiler-specific asm кодом.

<Примеры, где ваша идея будет полезна. Чем больше примеров и чем большую аудиторию они охватывают - тем лучше>

  • Стандартизированный способ, который можно использовать в бенчмарках. Сейчас есть несколько способов реализовать эту функцию.
  • Хочется форсировать "грязные вычисления" для сайд эффектов, но результат выражения бесполезен

<Код c реализацией вашей идеи, если есть>

  • Здесь https://github.com/google/benchmark/commit/7b03df7ff76844a39359e9233f31ca8cdb073313 то как поменялась реализация этой функции несколько лет назад
  • https://github.com/catboost/catboost/blob/master/util/system/compiler.h#L660

Полезные ссылки:

  • https://quick-bench.com/ - онлайн бенчмарк, поможет вам продемонстрировать эффективность вашего подхода
  • https://godbolt.org/ - онлайн дизассемблер
  • https://eel.is/c++draft/ - черновик стандарта C++ с возможностью ссылаться на конкретные параграфы
  • https://wg21.link/ - универсальная ссылка на международные proposal или баги в С++, например https://wg21.link/P1000 ссылается на документ P1000, а https://wg21.link/cwg100 на 100 баг в ядре языка

gleb-kov avatar May 16 '22 14:05 gleb-kov