昨年ついに無料になったMathematicaですが、思ったほど盛り上がってはいないようです。盛る上がらない原因の一つに、性能の悪さがあるのは間違いないでしょう。特にGUIはかなり重く、Manipulateなどでインタラクティブに遊ぶのは無理です。(無料のMathematicaが動くのは、700MHzのCPU、最大でも512MBしか主記憶のないRaspberry Pi上。)
実際にベンチマークを取ってみると、Windows上のMathematica 9.01(CPUはCore i7 4700MQ、主記憶は16GB)で10秒で終わるMathematicaMark9が、Raspberry Pi上では約3300秒かかりました(800MHzにオーバークロックして約3000秒)。Core i7で動かすエミュレータ上でもおそらく同じ程度でしょう。
しかし不思議なことに、Raspberry Pi上のMathematicaのほうが早く解ける問題があります。
たとえば、A^2 + B^2 == 1かつP^2 + Q^2 == 1という条件で、以下のsの最小値を単純にMinValueで「解析的に」求めようとすると、上述のWindowsマシンではなんと約20000秒かかるのに対して、Raspberry Piでは約2200秒で終わります。追記:Raspberry Pi 2では約800秒です。
s = 1/24 (3 Sqrt[3] Abs[A P] + Sqrt[3] Abs[A P + 2 Sqrt[2] Q] + Abs[Sqrt[3] A P - 3 Sqrt[2] B P - Sqrt[6] Q] + Abs[Sqrt[3] A P + 3 Sqrt[2] B P - Sqrt[6] Q]); MinValue[{s, And[A^2 + B^2 == 1, P^2 + Q^2 == 1]}, {A, B, P, Q}]
(これは比較のために作った問題ではなく、実際に私が遭遇した問題です。実は、単純にMinValueを使うというのが間違っているのですが、本来Mathematicaはそういうことを気にせず使うソフトウェアのはずです。)
Raspberry Piの方が速い原因は、Windows版Mathematicaのバージョンが9.01なのに対して、Raspberry Pi版Mathematicaのバージョンが10であり、バージョン9.01と10の間で、このあたりのアルゴリズムが改良されたためだと思われます。
非力なRaspberry Piでの話なので、比較的速いCPUがあれば、エミュレートされたRaspberry Piでも同程度の時間でできるでしょうし(Windowsの場合・Ubuntuの場合)、ユーザーモードエミュレーションならこの半分くらいの時間でできるでしょう(ライセンス違反なので想像しているだけです)。
というわけで、Windows版Mathematica 10のリリースを待っています。
追記:Windows版Mathematica 10がリリースされたので試したところ54秒でした(CPUはCore i7 4700MQ、主記憶は16GB)。Raspberry Piは約2200秒なので、遅すぎです。
Ubuntu 版 Mathematica 10 Core i5 – 2500 k 15.6GB で計測してみました。
Timing を使用して 61.6 秒でした。
このコードは先生の論文にあった88年の東大第2問だと思いますが,ベンチマーク的な話は別として,その後,この問題に対する処理そのものの改善は試みられましたでしょうか?
上条さん
それに気付く人がいるとは思いませんでした。
コンピュータにどうサポートさせるかという点で、
あの問題の解法が異質だということはわかっているのですが、
まだ、改善はできていません。
こんばんわ.私が書くと,こんな具合です.
http://d.hatena.ne.jp/ehito/20141104/1415096583
すばらしい(第6問も).自分の方法が恥ずかしいです.
どこかで引用させてもらうときは,
上条あかね. 記事タイトル. ブログタイトル(ATPとCASのこと). URL.
などでいいですか.
私のコードはあくまで趣味の範囲ですが(笑),ご参照頂けるなら幸甚です.
ありがとうございます.
よろしくお願いします.