5 ms·
I'd put Go at the top of the languages to compare it to. Maybe Java as well. The ecosystem still needs some time, but Swift's potential on the server is excelle
by matt4077 11y ago
I'd put Go at the top of the languages to compare it to. Maybe Java as well. The ecosystem still needs some time, but Swift's potential on the server is excellent:
- It is incredibly fast compared to current interpreted languages (i. e. factor 30+ vs. Python, possibly faster than C)
- Linux & OS X, open source
- Typed, safe
People like node.js mostly b/c it allows some code to be written once and run on both the server as well as the client. Considering almost any Web API also has an IOS client, Swift has the same potential.
- lorenzhs 11y agoDo you have a link to some benchmarks at hand? Your "possibly faster than C" claim sounds too good to be true without a source, but I'd very much like to be proven wrong :)
- thomasahle 11y agoBy http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html http://benchmarksgame.alioth.debian.org/u64q/which-programs-... Swift's performance is similar to Java's, but quite a bit faster when working with many objects: http://benchmarksgame.alioth.debian.org/u64q/swift.html http://benchmarksgame.alioth.debian.org/u64q/swift.html On a few benchmarks it's faster than C as well: http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=swift&lang2=gcc http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan... though not most. I suppose they were able to do the binary-tree benchmark so much better than Java, because Swift supports 'UnsafeMutablePointers': http://benchmarksgame.alioth.debian.org/u64q/program.php?test=binarytrees&lang=swift&id=5 http://benchmarksgame.alioth.debian.org/u64q/program.php?tes... Edit: This Quora question mentions the performance of Swift before and after unsafe programs were included: https://www.quora.com/In-terms-of-performance-speed-is-Swift-faster-than-Java https://www.quora.com/In-terms-of-performance-speed-is-Swift... The memory safe version used to be about 24x slower than C.
- igouy 11y ago>> I suppose they were able to do the binary-tree benchmark so much better than Java, because … because it's faster to use a memory pool than GC for that … ditto C Rust Ada Fortran C++ … http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=binarytrees http://benchmarksgame.alioth.debian.org/u64q/performance.php...
- kzaher 11y agoI don't think these benchmarks are realistic. Yes, you can use UnsafePointers, but that's not the real world case. ARC, runtime generics and structs have a huge cost in real world programs. Swift is unfortunatelly usually an order of magnitude slower then Java and C# in real world according to last benchmarks I've made. I'm hoping that will change because I really love Swift.
- hellofunk 11y agoAgreed. Swift is quite high-level compared to C or C++, for examples. As with any languages, there are tradeoffs with performance.
- igouy 11y agoPlease contribute Swift programs that you think are "the real world case": http://benchmarksgame.alioth.debian.org/play.html http://benchmarksgame.alioth.debian.org/play.html
- igouy 11y ago>> Edit: This Quora question mentions the performance of Swift before and after unsafe programs were included That Quora answer makes claims which are not true. The Swift benchmarks game programs were always compiled with -Ounchecked (since Dec 7 2015). The before was naive transliterations (from other programming languages) of single-core programs -- just to demonstrate that Swift was installed. The after was someone doing the work and contributing programs written for Swift and written for multi-core.
- Sean1708 11y agoObviously keep in mind the various caveats that come with benchmarks, but it seems that Swift is at least capable of achieving C-like performance[1] in some circumstances. [1]: https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=swift&lang2=gcc https://benchmarksgame.alioth.debian.org/u64q/compare.php?la...
- matt4077 11y agoSee https://gist.github.com/MatthiasWinkelmann/d1f19a11d539e609fb16fc0d4d048d07#file-sample_output-text https://gist.github.com/MatthiasWinkelmann/d1f19a11d539e609f... for something quick&dirty. Note that I don't want to claim that Swift is faster than C in general/real life/anything but a few microbenchmarks. But the two just being within an order of magnitude makes a really strong case for Swift, I believe.
- mirsadm 11y agoEvery new language has someone claim it's faster than C. I'll believe it when I see it.
- coldtea 11y agoLots of languages ARE faster than C, including older languages than C, like Fortran and Forth. Being faster than C is not anything special in itself. Most things being equal (typed, optimized, compiled, no runtime etc) C is mostly faster when it does something with a lower overhead than some other language (e.g. a specially written hashmap algorithm targeted to some program vs C++ std map type), not because of its primitives being faster.
- protomyth 11y agoFortran especially. Forth seems to depend on processor characteristics. I seem to remember that Ada compilers routinely produce faster code than C compilers.
- snuxoll 11y agoC has very loose semantics that make it difficult for a compiler to reason about code, as the saying goes, C is often little more than portable assembly. There's a reason that CLion was a big deal when JetBrains announced it, reasoning about C/C++ code is HARD.
- protomyth 11y agoIf I wasn't more interested in Agent oriented languages, it might be interesting to see what could be done to design a new language built for performance. I would imagine you'd start with the Ada side of the house and work your way back to more pleasing syntax.
- PeCaN 11y agoAda and Rust are both significantly easier to perform aliasing analysis on, so frequently you can get much better code. Both languages have slight overhead for bounds checking and such, but you can turn it off (at least in Ada) if it's a problem (hint: it isn't). Same reason Fortran is fast actually: it just disallows pointer aliasing entirely¹, meaning you get none of the flexibility of C pointers (heck, you don't even have pointers, basically), but if you're multiplying matrices it flies. ¹ I recall newer Fortrans have pointers, but as I'm not a Fortran programmer I don't actually know.
- riyadparvez 11y agoA bit of justification would be nice why you think Swift can be faster than C.