Being 3.9 times faster than python, the language that consistently looses most benchmarks by considerable margin (ok, it's on par with Perl, Ruby and PHP; but it looses to anything statically typed), is nothing one should be boasting about.
The benchmarks on shootout show C++ more than order of magnitude faster than python in most cases. It is not much better when comparing with Java, C# (on Mono), OCaml, Haskell and even Clojure, which is not statically typed.
So the real question is how is ObjC only 2.8 times slower than python. Apparently they carefully chose benchmark where the slow fully dynamic dispatch of ObjC hurts a lot. Any statically typed language should be able to do better. In complex object sort there are many method calls for comparing the objects and the actual comparison was probably not very complex itself. So if Swift takes at least some advantage of the type information, it can easily do better on the method calls and there is not enough other operations that ObjC could be better in.
Of course, as the bechmarks on shootout clearly demonstrate, the relative performance on different tasks varies wildly, so one benchmark is not really representative. If they had benchmark where it had bigger advantage, they would have shown us that one instead, so on other tasks it probably isn't better or not so much.