The C++ runtime supports sparse multiports more efficiently since https://github.com/lf-lang/reactor-cpp/pull/24. The set ports can be queried more efficiently because they're saved in a vector in the multiport. This apparently has significant performance impact on benchmarks like Big.
The Rust runtime cannot support this directly yet -setting a port does not notify any of the downstream ports, and ports do not know the multiports that contain them anyway. I imagine this will be difficult to implement because of the constraints on circular references in Rust. Maybe a solution would be to introduce new data structures to track which port can influence which multiport, which would be prepared during initialization.
The C++ runtime supports sparse multiports more efficiently since https://github.com/lf-lang/reactor-cpp/pull/24. The set ports can be queried more efficiently because they're saved in a vector in the multiport. This apparently has significant performance impact on benchmarks like Big.
The Rust runtime cannot support this directly yet -setting a port does not notify any of the downstream ports, and ports do not know the multiports that contain them anyway. I imagine this will be difficult to implement because of the constraints on circular references in Rust. Maybe a solution would be to introduce new data structures to track which port can influence which multiport, which would be prepared during initialization.