Protobuf varints are particularly annoying because they require searching for a terminating byte. A naive implementation needs to make 20 comparisons to decode an 8-byte int (checking the value of each byte, and for overflow in the input data).
UTF-8-style varints, where the encoded length can be determined entirely from the first byte, are much nicer.