packet_analysis: Avoid shared_ptr copying for analyzer lookups

For deeply encapsulated connections (think AWS traffic mirroring format
like IP,UDP,GENEVE,IP,UDP,VXLAN,ETH,IP,TCP), the Dispatcher::Lookup()
method is fairly visible in profiles when running in bare mode.

This changes the Analyzer::Lookup() and Dispatcher::Lookup() return value
breaking the API in favor of the performance improvement.

Relates to zeek/zeek#3379.
This commit is contained in:
Arne Welzel 2023-11-01 10:03:49 +01:00
parent a821604505
commit e56ef0fd9b
5 changed files with 56 additions and 33 deletions

View file

@ -35,7 +35,7 @@ public:
* @return The analyzer registered for the given identifier. Returns a
* nullptr if no analyzer is registered.
*/
AnalyzerPtr Lookup(uint32_t identifier) const;
const AnalyzerPtr& Lookup(uint32_t identifier) const;
/**
* Returns the number of registered analyzers.