iPhone は本当に遅いのか?


久しぶりにブログ記事を紹介します。今日の記事は海上忍さんの「OS X ハッキング!」シリーズ「“脱獄”後のお約束、各種ベンチマークを測定」です。

この人の記事はふだんは面白いんだけど、今日の記事は駄目。(いいときの記事をあまり紹介していなくてごめんなさい。何回かは紹介してるとは思いますけど。)基本がなってません。ベンチマークのなんたるかを学び直す必要があります。

実は海上忍さんの記事で最初に引っかかったのが安易に平均値を使っている点だったんです。でも、実はそんなことは小さな問題だった。iPhoneの上でJavaやFlashはまともな性能を発揮できないとした主張の根拠が怪しいのです。iPhoneの上でのJavaやFlashの性能については全く別のベンチマークテストを待つ必要があります。

*平均をとる前にちょっと考えて!

なにが気にいらないかって、全く独立のベンチマークの結果の平均をとっている点です。とんでもない評価です。とはいえ、そもそも SciMark とかいうベンチマークプログラムが各種のベンチマーク結果を平均して Composite Score とか称して表示いるのがそもそも悪いんです。でも、それにコロッと騙される記者も情けない。

なんで悪いかって?二つのベンチマークAとBを実行することを考えてみましょう。あるパソコンでAが1秒で終り、Bは5時間かかったとします。別のパソコンではAが100秒、Bが4.7時間とします。この結果を見れば、前者と後者ではベンチマークBについては大きな違いがないけれども、ベンチマークAについては100倍の開きがあるというのが素直な結論でしょう。ベンチマークAが重要な指標だとしたら、間違いなく前者の方が遥かに優秀なパソコンでしょ?

ところが、この結果の平均を見てしまうと、それぞれ2.5時間と2.35時間となって、後者がわずかばかり優秀だけど大きな差はないということになります。少しでも性能がよいものをと思う人は後者を選ぶことでしょう。でも、ベンチマークAでは前者の方が100倍速いんですよ!

なんでもかんでも平均を出せばよいというものではありません。基本的に全然違うものどうしを足してはいけません。蕎麦の分量を計算するのに、蕎麦の長さと太さと本数を足す人はいないでしょ?平均と言われるとごまかされちゃうかもしれないけれども、同じ足すことにかわりはないんだから。

*iPhotoの上のFlashは遅いって本当?

海上忍さんの記事を最初に読んだときはなんとなく読み飛ばしてしまったのですが、この記事を書いていて気になった部分があります。それは記事の最後の方に書かれている以下の記述です。

>今回使用したベンチマークテストは、描画や各種I/Oの測定は含まないものばかりだったが、1つハッキリしたことがある。それは、現状のままではFlashやJavaを快適に利用するには厳しいということ。

今回取り上げたベンチマークは大部分が浮動小数点演算の性能評価のようです。まず、SciMarkに含まれる以下のベンチマーク群は行列計算を中心としたものでいずれも山のように浮動小数点数を計算するものです。

– FFT ← 高速フーリエ変換
– SOR ← ヤコビ法の逐次過緩和
– Monte Carlo integration ← モンテカルロ積分
– Sparse matrix multiply ← 疎行列の積
– dense LU matrix factorization ← 密行列のLU分解

また、二番目のマンデルブロ集合の計算もループのなかで浮動小数点数の計算をひたすら続けるものですす。

これらのベンチマークの結果、iPhone が Mac の20倍くらい遅いということは、iPhone での浮動小数点数の計算が Mac のそれに比べて20倍遅い、というかARM11の浮動小数点コプロセッサがCore 2 Duoの浮動小数点コプロセッサよりも20倍遅いということに過ぎません。要するにここでのベンチマークが示唆しているのは iPhone が科学技術計算に向いていないということだけです。そんなことは分りきっているじゃないですか。

記事の結論では iPhone における Flash や Java の性能について予測しています。でも、インタプリタの核で浮動小数点数演算は使われません。FlashやJavaの高速化に関しては浮動小数点数演算の寄与は少ないと思うのです。

[[はてなブックマークのコメント:http://b.hatena.ne.jp/entry/http://journal.mycom.co.jp/column/osx/286/index.html%5D%5Dを見ると分るのですが、すでに多くの人々がこの記事の結論を真に受けてFlashやJavaScriptの性能が出ないと信じ始めています。記事どおりに、整数演算の性能もMacにはるかに及ばなければ問題はないのかもしれません。でも、そうではなくて、世界の中で日本の技術者ばかりが iPhone や iPod Touch の上で Flash や Java がまともに動かないと勘違いしていたとしたら、どうします?ものすごくまずいですよ。((CPUの性能以上に問題になるのはJust In Timeコンパイラを小さなメモリで実装することのような気がします))

わたしは iPod Touch を使っています。たしかに mobile Safari は Mac 版 Safari よりも遅いです。でも、10倍も遅いですか?

もう一度、きちんとベンチマークをとり直して欲しいなあ。続報、期待しています。