2017年5月9日火曜日

Visual C# / その3

前回、VisualC#の基本的な罠に色々掛かってしまったわけだが。

その辺を回避したら、サクサク作れる。
オブジェクト指向などは、Javaで散々やってきているので、
C#独特の解放(デストラクタ)周りの、ガベージコレクトを何とかすれば良い。

それも、基本形は公開されているものをコピペでOK。

Javaで作っていた各種ツールを移植しようと思ったが、
基本部分を作ってから出ないと、気がすまないので…。

まずは、実行ログを出力テキストエリアと、結果を効率よく表示するための、
タブ切り替えを設置。
ファイル読み込み/書き込みのユーティリティは既に作ったので、
ソレを利用して、ツールのオプションを自動保存する機能も追加。

これらも、そこまで悩むこともなく、追加できたので、ようやくツール本体へ。
ツール本体を作成するには、画像の合成が必要だが、先に作っていた独自イメージクラスで基本はOK。
塗りつぶし処理を追加するくらいでできた。
(Javaでいうところの、Paint が、Brushになっている程度)

そこで、100枚程度の細かい画像パーツを1枚のテクスチャに敷き詰める処理を移植。
Javaでは、独自にクイックソートAPIを作成していたが、C#でのその部分は、LINQを使って楽をする。

サクッと単純移植した結果、1枚の生成に3秒かからないくらい。
これ、Javaとそんなには違わない。
だがしかし、アルゴリズムに改良の余地があることは分かっていたので、それを実装した結果…。

50ミリ秒。

そんなもんさ!
いくら、頑張って最適化しても、ちょこっと速くなればラッキー。
もちろん、そのちょこっとが必要なときもある。

だが、大抵は、アルゴリズムの改良の方が効果的なのだ。

50ミリ秒より速く…はできないだろうなぁ。


0 件のコメント:

コメントを投稿