電卓ベンチマーク (1) プログラム関数電卓編1

これまでプログラム関数電卓コレクションを紹介してきましたが、ここらへんで一度性能比較のため、簡単なベンチマークを行ってみることにしました。今回は、グラフ機能を持たないプログラム関数電卓で整数演算・ループ計算の速度を比較してみることにします。他のポケコンなどと比較しやすいように、今回はUP-Cさんのサイトに掲載されている、1~1000までの整数を加算するプログラムを作ってみました。

1. CASIO FX-603P
この機種はUP-Cさんに掲載されているプログラムをそのまま使用しました。
リストは以下のとおりです。
 P0
 0 Min01
 1000 Min00
 LBL1
 MR00 M+01
 DSZ GOTO1
 MR01
実行はRUNモードで[P0]です。所要時間は19.1秒でした。
FX-603P

2. CASIO fx-360MT
この機種はプログラムエリアが1つだけであり、条件ジャンプはプログラム先頭に戻ることしかできません。したがって、実行前に変数の初期値を手入力してやる必要があります。プログラムリストは下記のとおりです。
 MR Kin+ 1
 1 M-
 x≦M
 Kout 1
実行はRUNモードで[SHIFT][KAC]1000[SHIFT][Min][RUN]としてください。所要時間は73.5秒でした。
fx-360MT

3. CASIO fx-3600Pv
この機種のプログラム言語はfx-360MTとほぼ同じです。そこで最初はプログラムも同じものを使おうとしたのですが、なぜか正しい結果が出ませんでした。10~1までのループにしてMメモリの内容を追ってみると…。
 10→89→78→67→56→45→34→23→12→1 …
なんじゃこれは?って感じですね。Mメモリからは1ずつ減算されるはずなのに、なぜかめちゃくちゃです。そこで、次は"1 M-"を"- 1 = Min"に、"x≦M"を"1 x≦M"に変更すると、今度はオーバーフローしてエラーで止まってしまいます。同様に10~1までのループにしてMメモリの内容を追ってみると…。
 10→89→888→8887→88886→888885→ …
これまたなんじゃこりゃって感じですね。やっていることは上と同じはずなのですが…。この機種にはループ計算にバグがあるようで、これでは全く使い物になりません。(下記の通り"x≦M"命令の動作が怪しいのですが、fx-3600Pvのマニュアルに載っている"x≦M"を使用したサンプルプログラムは正常動作するので、故障ではないと思っています…)
仕方がないので、条件分岐に"x≦M"を使用するのを止めて"x>0"を使用するようにすると正常動作するようになりました。そのリストが下記の通りです。(ステップ数は長くなってしまいました)
 P2
 KAC
 1000 Min
 P1
 MR Kin+ 1
 - 1 = Min
 x>0
 Kout 1
実行はRUNモードで[P2][P1]です。所要時間は75.2秒でした。
fx-3600Pv

4. HP-15C Limited Edition
HPの4レベルRPN電卓はFX-603Pとプログラム言語の文法が似ています。もちろん細かい違いはありますが、おおまかには計算式がRPNか代数記法かの程度の違いしかありません。なので、FX-603PからはHP-15Cの同等の命令に置き換えるだけで簡単に移植ができました。リストは以下のとおりです。
 LBL A
 0 STO 1
 1000 STO 0
 LBL 1
 RCL 0 ST+ 1
 DSE 0 GTO 1
 RCL 1
 RTN
実行はRUNモードで[f][A]です。所要時間は3.0秒でした。(速っ!!)
HP-15C 結果
実行中は"running"と表示されます。点滅するうえ一瞬なのでなかなかうまく撮れませんが…。
HP-15C 実行中

5. SHARP EL-566E
この機種はSHARPの典型的なAER言語を搭載しています。CASIOの機種などと異なり、プログラムの途中に[=]を入力することができない([=]キーはプログラム入力完了を意味する)ので、一つ一つの計算が終わったら" "(スペース)で区切る必要があります。また、STO命令(⇒)は、CASIOのMinやHPのSTOと異なり、それまでの計算式を実行する([=]を操作するのと同じ)となっているので注意が必要です。プログラムリストは下記のとおりですが、必ず改行の部分でスペースを入れてください。(改行以外の部分では見やすくするためにスペースを入れていますが、実際には入力しないでください)
 1:
 1⇒A
 0⇒M
 ↳ A M+
 A + 1 ⇒A
 1000 ≧ A ■Y→[ ↰ ] M
実行はNORMALモードで[ALPHA][1:]です。所要時間は24.2秒でした。
EL-566E 結果
実行中は"calculating..."と表示されます。
EL-566E 実行中

6. SHARP EL-5020
この機種もSHARPのAERで、EL-566Eに似てはいますが、ジャンプや条件判断の命令が簡略化されています。初出の変数名があると入力を求める仕様のため、実行時に初期値を入力する必要があります。プログラムリストは下記のとおりですが、EL-566Eと同様に必ず改行の部分でスペースを入れてください。(改行以外の部分では見やすくするためにスペースを入れていますが、実際には入力しないでください)
 1:
 A + M STO A
 1 M+
 1000 x≧M
 A
実行はNORMALモードで[2ndF][1:]です。A?に対して0, M?に対して1を入力してください。EL-5020 入力
入力完了後の所要時間は85.1秒でした。
EL-5020 結果

やはり最新のARMプロセッサ搭載のHP-15C LEはダントツに速いですね。次点が当時は高級プログラム電卓であったFX-603P、3位が現行機種であるEL-566Eとなりました。fx-360MT, fx-3600Pv, EL-5020はあまりにも遅すぎです。これらのエントリクラスのプログラム関数電卓はプログラム言語自体機能制限が多いですし、複雑な計算には向かないということなのでしょうか。

こうしていろいろな機種でプログラムを作ってみると、一見同等と思える命令も微妙に動作が異なっていたりするので、結構戸惑いますね。自分的には古くから使い慣れているFX-601P/603Pの言語が最もしっくりきたりします。実行モードとプログラムモードでのキー操作の違いが最小限に抑えられており、プログラム中で普通に[AC]やら[=]やらが入力でき、式やステートメントの区切りなどを気にする必要もないので理解しやすいと思います。逆にSHARPのAERでは[=]が入力できない(実際には[:]などで代用する)こと、きちんと式を区切らなければいけないことに気づかず、こんな短いプログラムでも最初はエラーばかり出していました(汗)。FX-601P/603Pに比べるときちんと説明書を読んで覚えなければいかないことが多いように思いますね。

他に紹介したプログラム関数電卓としては、EL-5002EL-5103がありましたが、これらの電卓ではループ、ジャンプなどの命令がないため今回のベンチマークプログラムを移植することはできませんでした。次の機会にはグラフ電卓編、浮動小数点演算編などもやってみたいと思います。

fx-3600Pvの動作異常についての報告を探しています。上記のプログラムの動作状況、またこれと近いfx-3600P/3800Pでの状況も教えていただけるとうれしいです。私のようにfx-3600Pvでループ計算の結果がおかしいと思われた場合は、"x≦M"を使うのを止めて"x>0"を使うように変更するのも一つの方法だと思います。

この2機種は現在でも購入可能です。EL-566Eは価格も安くそこそこ高性能なのでお勧めです。

関連記事
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

tag : プログラム関数電卓 ベンチマーク FX-603P fx-360MT fx-3600Pv HP-15C EL-566E EL-5020

コメント

非公開コメント

No title

こんばんは。
くぬぎです。
よろしくお願いします。
プログラム関数電卓の方言は、面倒ですよね。
fx-5800Pとfx-cg20の言語が殆ど同じなので、カシオもいよいよ、言語が完成形に近づいた感がありますね。
シャープがEL-9900を最後に、プログラム関数電卓を出していないのかなーと、少し残念に思いました。
HPのポケットコンピュータは高いですね。ちょっと手が出ません。
面白い記事を読ませて頂きありがとうございました。

Re: No title

コメントありがとうございます。
言語の方言について、比較表のようなものを作ろうと思っているのですが、
最近忙しくて進んでいません。
いつかは完成させたいのですが…(汗)

No title

通りすがりの者です。
電卓のことで彷徨っていたら、あなた様のサイトにたどり着きました。
PC-1500で、下らないプログラムを組んでベンチマークテストをやってみました。

1000 : CLS
1100 : CLEAR
1200 : PRINT TIME
1300 : BEEP 1
1400 : FOR L = 1 TO 1000
1500 : N = N + L
1600 : NEXT L
1700 : BEEP 2
1800 : PRINT N
1900 : BEEP 1
2000 : PRINT TIME
2100 : END

ENTER キーを押すタイミングがあるのですが、32秒はかかりました。
当時は、もっと速い・・・印象だったような・・・・。
やっぱり30年前?の電卓ですね。

Re: No title

コメントありがとうございます。
確かに1000までの加算はこの当時の電卓だと数十秒~数分かかるものが多かったですね。
ARMでエミュレーションを行ってるHP 15C Limited Editionだと3秒ぐらいで終わりますが…。
アクセスカウンタ
カレンダー
09 | 2020/10 | 11
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新記事
最新コメント
リンク
カテゴリ
楽天お勧め商品
検索フォーム
Kyoroのつぶやき
FC2掲示板
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示