One possible explanation:
In the first case, Pick by UID knows that there can only ever be one object with that UID, so it will stop once it finds it. In the second case C2 can't know that, so it has to check every Sprite object's variable to see if the value matches or not, as there may be more than one Sprite with that value.
It's also likely that C2 has an optimal way to pick by UIDs since it's a common operation.