Avatar
kateiくんの発表で紹介されてたbenchmarkgamesのSwiftのコードを見てたら、↓が他より30倍以上遅いんだけど、何がそんなに悪いんだろう?コードの処理の中身までちゃんと追ってないから効率の悪い計算してるのかもしれないけど、そんなにヤバいことしてなさそうな。変にクラスとかも使ってないし、CoWのコピーも発動してなさそう。ジェネリクスの Specialize が効いてなかったりする?? https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-swift-9.html
5:10 AM
SIMD4(repeating:) を多用してるのは気になる。
5:13 AM
やってるのは N体のシミュレーションっぽい。太陽・木星・土星・天王星・海王星の運動をシミュレーションしてる。
5:14 AM
SIMDの使い方がよくないのかな・・・。
5:15 AM
あとは計算方法が普通に効率悪い可能性あるけど、それはちゃんと見比べないとわからないな。
5:17 AM
SIMD3 にして質量を別で扱うと速くなるかも。 SIMD4 にしてる利点がない気がする。
5:18 AM
-Ounchecked でコンパイルされてるみたいだから、普通に考えたら Specialize はされそう。
5:18 AM
swiftc nbody.swift-9.swift -Ounchecked -wmo -o nbody.swift-9.swift_run