Performance rework to eliminate excess memory allocations
Issue #58
resolved
Significant work at using DETT to identify and eliminate memory allocations/copying, using large Arrays (1 million DBL) in messages as a test.
Comments (4)
-
reporter -
reporter Major success is to get Event Notifications (by label) to N-1 copies, so zero-copy for one Notification! Combined with the new EventDVRMessenger, this is actor-to-actor zero copy of large data!
-
reporter Improving TCP Messengers is harder, as Flattening/Unflattening is copy expensive. Got it down to two copies for each of Flatten and Unflatten. Major problem is that Unflatten node wont work on subArrays.
-
reporter - changed status to resolved
2.0
- Log in to comment
Major change is to use “Mark as Modifier” in the parent implementations of “Send.vi”, telling compiler we wish to use the incoming Message. This has teh problem of forcing a copy in the Caller, if that wire is branched.
One idea that would improve things is to add a Message output to the “Send.vi” method, so Sends can be chained, rather than branched.