Hello, Zhihong.
Thanks for your comments.
1. I am afraid that an equivalence of "floor(val + 0.5)" to "cell(val)" is incorrect: "floor(2.1 + 0.5)" returns 2
while "cell(2.1)" returns 3. We can’t use such replacement, as you have suggested.
2. >> For compare_rows(), it seems the computation of oa and ob can be delayed to when ba == bb (after the first two if
statements).
I have checked some examples of ASM code generated by different compilers with -O2/O3 flags on https://gcc.godbolt.org
anddidn’t see any big benefit in result CPU instructions. You can check yourself an attached example below.
Best regards,
Denis Smirnov | Developer
sd@arenadata.io
Arenadata | Godovikova 9-17, Moscow 129085 Russia