TimelyDataflow / differential-dataflow

An implementation of differential dataflow using timely dataflow on Rust.
MIT License
2.53k stars 182 forks source link

Change parameters to exert_logic from iterator to slice #461

Closed antiguru closed 6 months ago

antiguru commented 6 months ago

This avoid the intermediate allocation for every invocation of exert_logic to create a boxed iterator. Instead, pass a slice that contains the same information previously revealed by the iterator. At the same time, wrap the logic in an option to only invoke it if it is set.

This is the source of around 80% of all allocations in mostly idle Materialize clusters. The lower two large blocks are related to this in the following image.

image

frankmcsherry commented 6 months ago

Looks good to me!