Powershell(オセロ006_オブジェクト指向で作成_完了、バッチファイルベースと比較)
■オブジェクト指向での作成が完了したので、バッチファイルベースと比較してみる。
前回から少し手直しとコメントつけをして、下のようにオブジェクト指向のオセロのコードを作成した。
サンプルコードを添付する(ps1ははじかれるので、txtでアップロード)。
最近、Windows S modeを解除したせいか、Windows Powershell ISEという編集ソフトが使えることに気づいた。今までメモ帳で編集していたので、いろいろ便利。ただ、メモ帳で、文字コードUTF-8で保存したものをPowershell ISEで開くと全角部分が文字化けする。UTF-8(BOM付き)としなければならないよう。これで保存すると、どちらでも開いたり使用したりできる。下の図はPowershell ISEのもの。
オブジェクト指向とバッチファイルベース(過去にバッチファイルで組んだプログラムにならって作成したもの:Powershellオセロ003のサンプルコード参照)を比較すると下のようになる。
コード数はあまり変わらないが、処理速度はオブジェクト指向で作成したものの方が明らかに速くなった。裏返すものがあるかどうかの処理ロジックを少し変えたけど、全体的なロジックは同じ。なぜ、こんなに変わる?条件分岐やループ文の深さの問題なのかな。Windows S mode(PowershellのConstrainedLanguage mode)ではクラスの使用ができないので、オブジェクト指向のコードはWindows S modeでは動かない。あと、数値的な比較はできないけど、コードの可読性はオブジェクト指向のものの方がよい。
オブジェクト指向 | バッチファイルベース | |
コード数 (数字はおよそ) | ファイル:380行 1ゲームのループ処理:30行 (クラス内の処理行は含めず) 各クラス:30行、50行、200行 | ファイル:400行 1ゲームのループ処理:300行 (クラスなし) |
処理速度 (5000ゲームの処理、 石を置くのはランダム) | 約10分 | 約30分 |
Windows S modeでの使用 | × | 〇 |
これでオブジェクト指向でのコード作成は完了とする。
次回は、ロジックの追加など考えてみようか。