インテルさんの謎掛けに答えるだけだったのに、BASICプログラムの最適化に発展した件(つづき)

「インテルさんの謎掛けに答えるだけだったのに、BASICプログラムの最適化に発展した件」 http://togetter.com/li/589187 の続きです。既にBASICプログラムの最適化ではなくなっていますが、 ついてこれる人は 続きを読む
12
おちゃめ @ochame_nako

例のPC-6001による最適化だけど10進数として扱うならデータを数値変数に入れてやって100000で割れば左3桁の値を得ることができ高速化できると思う。中央や右もINTで求められる。動作環境がないから速くなるかは確かめられないけど。

2013-11-13 23:09:09
TINY野郎 @tiny_yarou

@ochame_nako P6は実数演算がとにかく遅いので、A=A/10000と一度計算するだけでも20msecくらいかかってしまいます。現在の最速は、演算というものを極限まで減らしたプログラムなので、これだけ速い(約950msec)のでした。

2013-11-14 01:58:13
TINY野郎 @tiny_yarou

@Lindberg1999 @KAW6001 @Ackieee @akikawa134 @beautyplanets @gorry5 @SOW74656 ふと思いついたやり方で856。もちろん、インチキ変態野郎的な方法さ! http://t.co/AnaLhG6Id7

2013-11-14 03:06:41
拡大
KAW @KAW6001

@tiny_yarou @Lindberg1999 @Ackieee @akikawa134 @beautyplanets @gorry5 @SOW74656 ははは、なるほど^^。変数FはFOR開始時のみ使われる(多分)ので変数にしない方が良さげです。

2013-11-14 06:16:09
Ackieee @Ackieee

@Lindberg1999 @KAW6001 @tiny_yarou @akikawa134 @beautyplanets @gorry5 @SOW74656 ちくちくと細かい最適化繰り返されて、あるときドカッと産業革命的なイノベーションがやってくるのが面白いです。

2013-11-14 09:33:38
おちゃめ @ochame_nako

@tiny_yarou 私はポケコンでは発表プログラムすべてにおいて0.1m秒単位の限界までの高速化を行ってきたので高速化には自信があったのですが、機種が異なると全然変わるため難しいですね。ちゃんと動作できる環境がないと高速化の話題には口出しをしない方が賢明でした(笑)

2013-11-14 12:22:17
TINY野郎 @tiny_yarou

@ochame_nako アルゴリズムの高速化の段階であれば誰でも考えられると思うのですが、すでにBASICインタプリタのアルゴリズムを追ったりする段階まで来てしまっているので、さすがに動作環境がないと厳しいかもしれません(^_^;)

2013-11-14 12:33:28
Ackieee @Ackieee

@tiny_yarou @Lindberg1999 @akikawa134 @beautyplanets @gorry5 @SOW74656 @KAW6001 DATA文を上に持って行ったところ,さらに高速動作するようになりました。 http://t.co/5vzR1utfk3

2013-11-14 13:01:03
拡大
TINY野郎 @tiny_yarou

@Ackieee @Lindberg1999 @akikawa134 @beautyplanets @gorry5 @SOW74656 @KAW6001 そうですね、RESTORE初期値がプログラムの先頭アドレスになっているので、先頭からDATAがある場合は効果がないかと。

2013-11-14 13:28:57
Ackieee @Ackieee

@tiny_yarou @Lindberg1999 @akikawa134 @beautyplanets @gorry5 @SOW74656 @KAW6001 そう、そのRESTORE3を省略して高速化するためにDATA文を0行目に移しました。そしたら40くらい縮まってびっくり。

2013-11-14 13:46:34
Ackieee @Ackieee

@tiny_yarou @Lindberg1999 @akikawa134 @beautyplanets @gorry5 @SOW74656 @KAW6001 さらにその無駄なRESTORE0を外したら更に2カウントぐらい減るかな?と期待したけど、結果は変わらずでした。

2013-11-14 13:50:20
TINY野郎 @tiny_yarou

@Ackieee なんか私のところのP6VW、Ackieeeさんより40くらい遅い気がする。。。何か設定が違うんでしょうか。。。ちなみに、ver307a1です。

2013-11-14 14:01:44
Ackieee @Ackieee

@tiny_yarou バージョン308、BBSで公開された最新版です。p6vwemu.exeのファイル バージョンは 3.0.8.0 です。プロパティのコメントに「PC-6001 VW 20110916」と入っていて、ファイルの更新日時は2011/12/14 21:00:38

2013-11-14 14:13:49
TINY野郎 @tiny_yarou

@Ackieee あ、そうでしたかー。了解しました。

2013-11-14 14:23:08
Ackieee @Ackieee

@tiny_yarou じゃあデータ文の位置替えは効果が無かった可能性もありますね。戻ったら野郎さんの最終版未改変で計測しなおしてみます。

2013-11-14 15:33:00
秋川藤志 @akikawa134

@Ackieee @tiny_yarou @Lindberg1999 @beautyplanets @gorry5 @SOW74656 @KAW6001 1ページにして4096〜61664行(0x1000〜0xf0e0)を追加すれば掛け算をなくせるので、もう少し減らせそうです。

2013-11-14 19:39:12