From c362121f04ffe72eed17126affc9129bbb354c49 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 11 Apr 2024 08:55:21 +0200 Subject: rewrite bitmask impl It's slower than the previous version but fixes a bug when stride isn't a multiple of 8. It can be improved further by setting `auto& byte` all at once instead of setting individual bits of multiple bytes in the innermost loop. ------------------------------------------------------------ New version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 1911 us 1893 us 5 Bitmask_median 1911 us 1885 us 5 Bitmask_stddev 2.00 us 18.7 us 5 Bitmask_cv 0.10 % 0.99 % 5 ------------------------------------------------------------- ------------------------------------------------------------ Buggy version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 841 us 841 us 5 Bitmask_median 839 us 837 us 5 Bitmask_stddev 3.29 us 7.80 us 5 Bitmask_cv 0.39 % 0.93 % 5 ------------------------------------------------------------ ----------------------------------------------------------- Naive version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 4006 us 3997 us 10 Bitmask_median 4006 us 3997 us 10 Bitmask_stddev 2.29 us 0.000 us 10 Bitmask_cv 0.06 % 0.00 % 10 ------------------------------------------------------------ --- images/bitmask-test1.png | Bin 0 -> 1727 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/bitmask-test1.png (limited to 'images') diff --git a/images/bitmask-test1.png b/images/bitmask-test1.png new file mode 100644 index 00000000..fe78a6ae Binary files /dev/null and b/images/bitmask-test1.png differ -- cgit v1.2.3