-
Notifications
You must be signed in to change notification settings - Fork 60
Description
This is an optimization idea to avoid python boxing / unboxing overhead. TBD if there are any issues to actually implement this
The idea is to hold native ( C++ ) and dialect specific ( PyObjectPtr for python ) version of data in the dataline. c++ adapters would only set native data, upon access of the data we would check if dialect specific is valid if not we convert once and update.
Similarly for python outputs, we would only set the dialect value. If a c++ node or c++ adapter needs to access the value, we convert to c++ once if invalid.
Some technical notes:
to be generic for other dialects, and to avoid dialect specific compilation issues, the dialect version would be stored as a raw void *
in order to flag native values as valid or not without introducing a separate bitmask, we can use the low order bit of the void * dialect pointer
for dialects that can read native types natively ( ie c# ) they should be able to avoid accessing dialect side for such types