BT

SwiftはAppleが主張するほど高速ではない - 最初のベンチマークより

| 作者: Sergio De Simone フォローする 13 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年6月15日. 推定読書時間: 2 分 |

原文(投稿日:2014/06/11)へのリンク

Appleの新プログラム言語であるSwiftについて,OS XおよびiOS開発者に提供するメリットのひとつとして同社が主張するのは,そのパフォーマンスだ。しかしながら,社外の開発者による初めてのテストとベンチマークは,いくつかのケースにおけるSwiftのパフォーマンスが,まだ満足のいくものでないことを示している。

開発者であるJukka Suomela氏がStack Overflowに寄せた記事によると,氏はあるアルゴリズムをSwiftで実装したときに,パフォーマンスが極端に劣ってることに気が付いたという。その分析を進めていくうちに氏は,自身の記述したコードの中に,配列のソートのような単純なタスクに起因する,大きなボトルネックが存在することを発見した。

実際に100万個のランダムな整数配列をソートした場合,Swiftを使用すると6秒を要するのに対して,C++を使えば0.06秒,Pythonでは0.6秒だった。これらの結果はXcodeのリリースビルドで一般的に使用される,最適化レベル-O3でコンパイルした結果から得られたものだ。Xcodeのデバッグで使用される-O0 フラグに相当する,コンパイラの最適化をすべて無効にした場合には,上記のテストは88秒だった,と氏は報告している。

氏のこの結果は,Stack Overflowでの議論に参加した他の開発者によっても確認された。開発者のsjeohpクイックソートアルゴリズムを実装して,-Ononeを指定してコンパイラ最適化を無効にした場合,SwiftがCよりもおよそ1,000倍遅いことを確認している。その一方で氏は,積極的な最適化の実施(-Ofast0をコンパイラに実行させた場合,SwiftはCよりもわずかに速いことを発見した。イメージ処理テストに関するStack Overflowへの2回目の記事でも,同じような発見が報告されている。

LLVMの資料によると,積極的な最適化を有効にした場合には,標準への準拠は厳格に遵守されない。-Ofastはすべての-O3最適化に加えて,数学関数に対するIEEEあるいはISO仕様を緩和する-ffast-mathを有効にする。したがってこの仕様を保証する必要のあるプログラムでは,処理の結果が不正確になる可能性がある。さらに-Ofastは,整数値のオーバーフローと配列のインデックスオーバーフローのチェックを無効にするため,Swiftの安全機能を縮退させることにもなるのだ。

分析をさらに続けたJukka Suomela氏が別のテストでコンパイラの生成するアセンブリコードを調査したところ,配列に対する単純なループにおいて,まったく不要な大量のメモリ管理(retainとrelease)コールを生成されていることを発見した。このテストでは数学的な処理は行っていないので,パフォーマンスのボトルネックは主としてこれらの不要な処理に起因するようだ。

何人かの開発者が指摘しているように,Swiftはまだベータ版である。今回の件は,Swiftプログラムの現時点での動作であると理解すれば十分だろう。特に指摘されたような不要なrelease/retainコールについては,ARCオプティマイザのバグを示唆するものであって,積極的な最適化作業を必要とせずにフィックス可能なはずだ

Swift言語はベータ版であるため,Swiftを使って開発したアプリをレビュー用に提出することは許可されていない。最終的なXcodeのリリース今年秋に予定されている

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT