It's little bit apple and oranges because clojure is a dynamic and hosted language. Prototype do not compile. They don't actually need AOT neither. But protocols are way faster because they dispatches on a first argument not on arbitrary one as in case of multimethod.
Discussion
so again, that's the point, they are just a double indirection like an interface, a static type abstraction, just as it is cheap to resolve a pointer it is cheap to resolve the "fat pointer" of type and variable in an interface
it's just an interface
they muddy the waters by inventing new names for well established concepts
type aliases were a huge step forward.
Go with aliases (2017?) and it's implicit interfaces allows you similar things like protocols. It's not very common in other languages.
Clojure was out there before go (2007) and they also need to distinguish between hosted (jvm) interfaces and clojure's solution to expression problem.
I'm more in FP and go was very hard to use that way. I'm simply like protocols more. And also use go for different applications.