Currently, DagCbor References scrapes references from a blob very efficiently. But DagPbCodec and DagJsonCodec does not. It creates a temporary IPLD AST just to scrape the links from that and throw away the rest.
Especially for DagPbCodec this should be easy, since links are all in one part.
// An IPFS MerkleDAG Node
message PBNode {
// refs to other objects
repeated PBLink Links = 2;
// opaque user data
bytes Data = 1;
}