At startup, Bloom extracts all register information from the relevant TDF, and constructs a TargetRegisterDescriptor for each register.
Whenever we want to do something with a register, like read its value, we pass the TargetRegisterDescriptor to the TargetControllerService, where it eventually gets copied. This copying can be expensive, as the TargetRegisterDescriptor contains multiple std::strings.
We shouldn't be using TargetRegisterDescriptor objects as register IDs. Instead, we should introduce an integer ID in TargetRegisterDescriptor, which should then be used to reference registers throughout Bloom.
Register descriptors should still be included in the TargetDescriptor.
At startup, Bloom extracts all register information from the relevant TDF, and constructs a
TargetRegisterDescriptor
for each register.Whenever we want to do something with a register, like read its value, we pass the
TargetRegisterDescriptor
to theTargetControllerService
, where it eventually gets copied. This copying can be expensive, as theTargetRegisterDescriptor
contains multiplestd::string
s.We shouldn't be using
TargetRegisterDescriptor
objects as register IDs. Instead, we should introduce an integer ID inTargetRegisterDescriptor
, which should then be used to reference registers throughout Bloom.Register descriptors should still be included in the
TargetDescriptor
.