2017年8月8日火曜日

ついにJavaでMandel

あれこれ悩んでついにJavaでMandelbrotを書いた。

(基本的な実験記述がすんでからはjavascriptのソースをコピペして
 変数の宣言部をvarから該当する型に書き換えただけ)

なんだか実にサクサク書ける気がした。
それとNetbeans良いかもって感じ。
エラーのサジェストと直しが親切だしJavaの書き方とあいまって好み。

画面を見るとjavaの実行時間が89msでC#が463msで大変な差のように見えるが実際はそこまでの差はない。何度か実行するとjavaは100msぐらいでC#が300msぐらいで3倍位の差だ。(まあそれでも結構な差ではあるが・・・)

それと自分の環境ではWindowsを早くしたくて設定で余分な修飾をできるだけ付けないようにしているがC#のWindows部品の表現の素っ気無さに比べてjavaはボタンも角丸でテキストボックスも影付きでなかなか格好が良い。

C#のFormにはsetPixcelという点を描画する専用の命令があるがjavaは無いのでdrawlineで代用している。line系で代用する言語はruby/Tkなど多かったがline(x,y,x+1,y)などのようにx(またはy)を+1までしないと何も描画してくれないことが多かったがjavaはdrawLine(x,y,x,y);としてもちゃんと描いてくれた。結果としてjavascriptなど+1するものよりもdotのにじみが少なく思う。

またコンパイル系言語でのオブジェクトサイズについて考察すると
java :  8kB
c#   : 10kB
Lazarus : 15215kB
ActiveBasic : 44kB
で、javaとC#がほぼ同程度、ActiveBasicがやや大きめ、Lazarusはすべてのライブラリーを同梱しちゃうのかやたらと大きい(15MBって??)
javascriptとrubyはインタープリタだしAccessはMDBなのでサイズを比べることに無理がある。(ちなみにAccessは648kB)

実行時間は

  1. java :: 100ms
  2. C#  :: 300ms (formのthisのgraphicsに描くとこのスピードだが
             bitmapを利用すると200msと改善はする。)
  3. Access :: 940ms
  4. javascript :: 1280ms(chrome)
  5. lazarus :: 1300ms
  6. ruby :: 57秒547ms(57547msって!!)
rubyはデスクトップの記述はあきらめてsinatraの記述などに振り向けようと思わせる数字


0 件のコメント:

dosvaxj3が更新されていた。

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