Почему std :: for_each быстрее, чем __gnu_parallel :: for_each

При работе в режиме песочницы вы можете отправлять только проверенным пользователям - как только ваша учетная запись активирована, вы можете отправить ее кому-либо.

Выход из песочницы:

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html

0
задан Ja_cpp 15 January 2019 в 16:19
поделиться

1 ответ

Ваш эталонный тест неисправен, я даже удивлен, что для его запуска требуется время.

Вы писали: std :: for_each (v.begin (), v.end (), [] (auto v) {v = 0;});

Поскольку v является локальным аргумент operator() без чтения, я ожидаю, что он будет удален вашим компилятором. Поскольку теперь у вас есть цикл с телом, этот цикл можно удалить, так как эффекта не наблюдается. И так же, вектор может быть удален, так как у вас нет читателей.

Таким образом, без каких-либо побочных эффектов, все это может быть удалено. Если бы вы использовали параллельный алгоритм, есть вероятность, что у вас есть какая-то синхронизация, которая значительно усложняет оптимизацию, поскольку в другом потоке могут быть побочные эффекты? Доказать, что это не сложнее, не говоря уже о побочных эффектах управления потоками, которые могут существовать?

Чтобы решить эту проблему, на многих тестах есть макросы в грузовиках, заставляющие компилятор принимать побочные эффекты. Используйте их в лямбда-выражениях, чтобы компилятор не удалял их.

0
ответ дан JVApen 15 January 2019 в 16:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: