Repository navigation
Add compute benchmarks for Widen - #10888
Conversation
Merging this PR will degrade performance by 12.14%2 warnings
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
robert3005
left a comment
There was a problem hiding this comment.
apart from the take benchmark name
750b804 to
47cead7
Compare
NarrowWiden
47cead7 to
c071759
Compare
Each case runs one operation on three inputs that hold the same logical i64 values: a Widen over i16 values, the same Widen decoded inside the timed region, and a canonical i64 array. A Widen kernel changes only the widen case, so the other two are controls for the kernels in the next PRs of the stack. The inputs have 32,768 rows, so every case does a few microseconds of work above the CodSpeed harness floor. Signed-off-by: Connor Tsui <[email protected]>
Signed-off-by: Connor Tsui <[email protected]>
`take` and `dict_take` both execute a `Dict` over the values, because `take` builds a lazy `Dict`. So they run the same take kernel and differ only in the ratio of indices to values. Rename them to `take_few_indices` and `take_many_indices`, call `take` in both, and describe each case by its shape. Signed-off-by: Connor Tsui <[email protected]>
c071759 to
1b094bd
Compare
Summary
Widenencoding for integers and decimals #10733The next two PRs in this stack add aggregate, arithmetic and pushdown kernels for
Widen. Their only purpose is speed, so CodSpeed needs a baseline before they land. This PR addsvortex-array/benches/widen.rsand no library code.Based on #10864.
Changes
Each case runs one operation on three inputs that hold the same logical
i64values:widenis aWidenoveri16values,decodedis thatWidendecoded inside the timed region, andcanonicalis the canonicali64array. A kernel forWidenshould move only thewidencase, sodecodedandcanonicalare controls. The operations are compare, between, filter, take (with fewer indices than values, and with many indices into few values, as a dictionary has), slice, sum, min_max, add (with a constant, aWidenand a canonical operand), cast tof64, fill null with a value outside thei16range, zip, chunked canonicalization and interleave.The CodSpeed benchmark IDs changed from
narrowtowiden, and thewideinput label changed tocanonical.The inputs have 32,768 rows, so every case does a few µs of work above the CodSpeed harness floor (the fastest local median is about 2.4 µs) and the slowest stays under 30 µs. The
widentarget joins the "Array compute" CodSpeed shard, because its cases are compute.