auto lam = [](int a, int b, int c) { return a < b && b < c; };
struct functor {
int a;
int b;
bool operator()(int n) const { return a < n && n < b; }
};
< /code>
В первой версии мы < /p>
std::vector lamvals;
// get parameters and for each
lamvals.emplace_back(std::bind(lam, a, std::placeholders::_1, b));
< /code>
Альтернатива - < /p>
std::vector lamvals;
// get parameters and for each
lamvals.emplace_back(functor{a, b});
< /code>
В обоих случаях у нас есть простая итерация < /p>
return std::any_of(lamvals.cbegin(), lamvals.cend(),
[n](const decltype(lamvals)::value_type & t){return t(n);});
< /code>
Я вижу разницу в скорости 3: 1, с границей Lambda медленнее. Функтор почти такой же быстрый, как хранение целочисленных пар и жестких кодировки тестов. Очевидно, что жесткий кодирование не так полезно для производственного кода, потому что в игре будет несколько функций, а не только между. Тем не менее, я могу пойти со многими функторами или многими ламбдами. Последнее меньше строк кода и выглядит чище, но я не думаю, что могу позволить себе такую разницу в скорости; Этот код находится в критическом цикле. < /p>
Я ищу предложения ускорения. < /p>
Подробнее здесь: https://stackoverflow.com/questions/259 ... tor-struct
Скорость связанной лямбда (через std :: function) vs operator () структуры функции ⇐ C++
Программы на C++. Форум разработчиков
1746121704
Anonymous
auto lam = [](int a, int b, int c) { return a < b && b < c; };
struct functor {
int a;
int b;
bool operator()(int n) const { return a < n && n < b; }
};
< /code>
В первой версии мы < /p>
std::vector lamvals;
// get parameters and for each
lamvals.emplace_back(std::bind(lam, a, std::placeholders::_1, b));
< /code>
Альтернатива - < /p>
std::vector lamvals;
// get parameters and for each
lamvals.emplace_back(functor{a, b});
< /code>
В обоих случаях у нас есть простая итерация < /p>
return std::any_of(lamvals.cbegin(), lamvals.cend(),
[n](const decltype(lamvals)::value_type & t){return t(n);});
< /code>
Я вижу разницу в скорости 3: 1, с границей Lambda медленнее. Функтор почти такой же быстрый, как хранение целочисленных пар и жестких кодировки тестов. Очевидно, что жесткий кодирование не так полезно для производственного кода, потому что в игре будет несколько функций, а не только между. Тем не менее, я могу пойти со многими функторами или многими ламбдами. Последнее меньше строк кода и выглядит чище, но я не думаю, что могу позволить себе такую разницу в скорости; Этот код находится в критическом цикле. < /p>
Я ищу предложения ускорения. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/25985248/speed-of-bound-lambda-via-stdfunction-vs-operator-of-functor-struct[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия