Произвёл модификацию кода
Добавил свой алгоритм, сделанный на основании ranges::copy_if
( modified_copy_if: В предикат передаётся исходное значение, а в результат пишется проекция )
( В стандартном copy_if: проекция передаётся в предикат, но в результат пишет исходное )
Добавил custom div
Исходник:
https://godbolt.org/z/K5hKP5fnv
Замеры на ноуте: (ms vc community 2022)
mcq: 2557us
mcq: 2257us
for loop: 2252us
for loop: 2627us
algo: 2456us (filter_view + transform)
algo: 2471us (filter_view + transform)
algo div: 21614us (transform div() + filter rem zero + transform quot)
algo div: 18330us (transform div() + filter rem zero + transform quot)
algo div custom: 13423us (transform my_div() + filter rem zero + transform quot)
algo div custom: 12781us (transform my_div() + filter rem zero + transform quot)
for div: 10058us
for div: 9904us
for div custom: 9812us
for div custom: 10002us
algo modified_copy_if: 1455us (custom algo)
algo modified_copy_if: 1453us (custom algo)
Замеры в готболте: (gcc)
mcq: 3334us
mcq: 2005us
for loop: 2518us
for loop: 2351us
algo: 1681us (filter_view + transform)
algo: 1671us (filter_view + transform)
algo div: 12756us (transform div() + filter rem zero + transform quot)
algo div: 13324us (transform div() + filter rem zero + transform quot)
algo div custom: 1831us (transform my_div() + filter rem zero + transform quot)
algo div custom: 2302us (transform my_div() + filter rem zero + transform quot)
for div: 9182us
for div: 8855us
for div custom: 1635us
for div custom: 1606us
algo modified_copy_if: 1570us (custom algo)
algo modified_copy_if: 1517us (custom algo)