2017年9月15日金曜日

DxRubyとDxRubyWSと・・・ 或いはDxRuby vs Ruby/Tk

マンデルブローの描画速度で明らかになったもっとも大きな収穫はDxRuby使えるじゃんってこと。
前項のruby-profもそうだけどruby界隈には痒い所に手がとどくようなライブラリーが結構ある。
DxRubyの作者さんが提供しているDxRubyWS(DxRuby WindowSystemだそうな)なども面白そう。(ただし3~4年ぐらい放置なのだが・・)

ゲーム用のプラットフォームで仕事用のツールはちょっとあれだけど速いは正義ってことも大いにあるので活用していこうと思う。

しかしながらRubyTkには遅い以外にも問題がありそうな感じなのだ。
下記は現行で最速のruby/Tk,DxRuby,C#の各々のマンデルブロー集合描画


各々の実行時間はTk:Dx:C#=7533:2031:208 (mS)なのだが問題はそれ以外のところにあった。画面をよく見てみると細部の表現が同じではない。描写の細かさなどの順でも速度と同じ順位なのだ。つまり粗さの点でTk>Dx>C#でC#が最も細かい。
右の大きな黒い部分と左の2番めに大きな黒い部分の境の砂州に似た部分の長さが違う。
また個々のリアス式海岸様の部分の細かさも異なる。
過去の他言語の結果を見比べてみるとどうやらrubyだけがこの傾向を持つようだ。
そしてDxよりもTkのほうがより顕著に甘く粗い。繰り返し回数に依存しているわけではなさそうである。既に旧BASICを除けば最遅のRubyTkでこれ以上の追求はしない(する気にならない。)がDxについては繰り返し回数を他の並に上げるなどして様子を見たい。
これもまた実行が速ければの事だ。

さっそく32回で打ち切っていた繰り返し上限を100にして試行してみた。
実行速度が2.03→4.55と倍以上遅くなったが画面的には満足の行く形になった。

こちらはExcelのCellを画素に見立てて書いてみたもの。
256x180と桁違いに小さい画素量だけどまずまずの速度かと思う。
まああくまでも実用とか他の表示とか無視した遊び。 

ついつい怖いもの見たさにやらかしてしまいました。
Ruby/Tkのmandelで発散確認回数を増やして画面精度を上げました。
なんと373秒です。(6分強か!待てねえな)
もうこの手の試用でruby/tkは辞めます。でも画面はやっと人並み




0 件のコメント:

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...