|
|
|
|
|
by nheer
180 days ago
|
|
Author here. There are actually 3 Swift versions in the benchmark: - Swift (standard): 893ms
- Swift (relaxed): 903ms (uses fast-math equivalent)
- Swift (SIMD): 509ms (explicit SIMD4)
The standard version uses x *= -1.0 which creates a loop-carried dependency that blocks auto-vectorization - same issue as Crystal, Odin, Ada. The SIMD version uses the branchless i & 0x1 trick and is ~1.75x faster.Fair point that someone versed in Swift would probably use the better pattern in the standard version too. PRs welcome to improve it! The goal was idiomatic-ish code, but I'm not an expert in all 40+ languages. |
|