忍者ブログ

RAPTのブログ

自サイトに書ききれなくなってしまったので、こちらに退避します。
ま、自サイトと異なり、ここではもっとフランクに行こうかと。

[PR]

2024/04/19(Fri)21:44

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

No.|CommentTrackback

最適化

2006/09/28(Thu)00:50

Donut RAPT/L/Q は未だに VC++6.0 で作成されています。VC++6.0 は Windows 2000 が発売される前に出たもので、かなり古い開発環境です。しかも、Standard 版を使っているため、最適化機能はありません。

そのため、拙作のソースを Professional 版で最適化付きでビルドするだけで、パフォーマンスの向上や、サイズの最小化を行うことも可能です。

Standard 版の制限は、最適化機能だけでなく、プロファイラが無い事もあげられます。通常の開発では、ある程度完成したら、プロファイリングを行ない、動作が遅い個所を調査し、改善を図るための目安とするものです。しかし、Donut ではこれがないため、基本的に全部手探りで行なっています。


では、どうやって Donut Q で高速化を図ることができたのか。
今まで、Donut RAPT/L では、作成当時の開発環境が Windows 98 であったこともあって、なるべくシステムリソースを消費しない作りにすることが美徳であるような時代でした。メモリを節約するため、地道な作業をやっていました。

しかし、この「地道な作業」というのは、作業効率上はあまり望ましくありませんでした。そこで、Donut Q では、メモリを潤沢に使うことで、今まである処理を1つずつ順番に処理していたのを、一気にまとめて処理するように変更するようにでき、結果として処理速度を大幅に向上できるようになりました。

また、プロファイラや最適化機能がない分は、カンとアタリとカタコトのアセンブラの知識で対処していました。もっとも、アセンブラと言ってもアセンブラコードを書けるという意味ではなく、コンパイラの翻訳結果を見て、最も処理コード数が少ない方法を選択するという地味な作業でした。

例えば、クラスのインスタンスのメンバ変数を参照するよりも、一度別の変数に値をコピーしてから、そのコピー後の変数を使ってループした方が速いだとか、INI 設定ファイルの読み書きは、従来の1行単位から1セクション単位に変更し、メモリ内で値の置き換えを行なうようにするだとか。


Donut は元々 .cpp ファイルは 1 つしかなく、すべてのコードはヘッダファイルに記載することになる上、構造が複雑になりすぎ、ちょっと気を抜くと依存関係が分かりにくくなるという構造上の欠点も開発を難航させている原因の1つになっています。

最近、会社の方の仕事もあって、VC++.NET でもコードを書けるようになりました。VC++.NET では最適化機能は標準で付属しているので、こちらでコードを書けるようになれば、成果物も作業効率も向上すると思います。が、当面は VC++6 での開発になりそうな気がするなぁ。。。

PR

No.10|Donut 関連Comment(0)Trackback

Comment

Comment Write
Name
Title
Mail
URL

Pass Vodafone絵文字 i-mode絵文字 Ezweb絵文字