Follows from investigation for T242024: Investigate load.php backend latency and minify-calls regression (November 2019)
It seems that on a typical enwiki load.php request for modules=startup, there are 250 calls to Message::unserialize (all via MemcachedPeclBagOStuff::doGetMulti).
This spends a majority of its time in 237 calls to Title::newFromText which needs to perform title parsing, which is fairly expensive.
I imagine (not yet confirmed) there is a similar overhead on the storing side where it has to invoke TitleFormatter operations.
Store a namespace/dbkey instead (possibly based on LinkTarget, or an array that mirrors it).
A possible follow-up could be to kick off the larger propagation of the classes Message -> MessageCache::parse -> Parser::parse which still only accept a Title object today which is wasteful because it pays for title parsing upfront regardless of how much it is or isn't needed, such as for ->plain().
It would be nice if the new REST API, and load.php etc. in methods like ResourceLoaderContext::msg() could then pass a LinkTarget internally for their dummy placeholders instead which would be significantly cheaper.