Как мне победить оптимизатор Go в тестах? - PullRequest
0 голосов
/ 07 мая 2020

В Rust вы можете использовать функцию black_box, чтобы заставить компилятор

  1. предположить, что используется аргумент функции (заставляя его не оптимизировать код, который генерирует это значение)
  2. не сможет проверить, как создается его возвращаемое значение (не позволяя ему выполнять свертывание констант и другие подобные оптимизации).

Есть ли подобное средство в Go (для выполнения sh любой задачи)?

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Есть ли аналогичное средство в Go (для выполнения sh любой задачи)?

Нет.

Если вы хотите использовать результат: Присвойте экспортированному глобалу.

1 голос
/ 07 мая 2020

Я считаю, что runtime.KeepAlive рекомендуется в соответствии со следующей проблемой Github. К сожалению, неясно, существует ли что-нибудь для аргументов функции и действительно ли KeepAlive гарантированно работает.

https://github.com/golang/go/issues/27400

...