Odin's binary format serialization (which is what's used in player builds by default) is highly optimized and performant and allocates next to no garbage. It stores everything in a byte array on the unity object itself. But while you're in the Editor it uses a different node-based format that serializes the data in a merge-friendly manner, and we do sacrifice a bit of performance in order to do that. But you can change all of that from the Odin preferences window.
It's also worth mentioning that Odin's serialization only kicks in on types that Unity doesn't know how to serialize. So we leave everything Unity already knows how to serialize alone. Here are some more examples of that.