|
プロジェクト・リソースImagix 4Dは一連のデータベースを使用して、データ収集の結果をロードし、その解析機能を実行します。大規模なプロジェクトの場合、収集されるデータの量と、結果として生じるメモリと処理の要件が大きくなる可能性があります。プロジェクトのコンテンツとデータベースストレージを制御するオプションにより、より大きなソースコードセットをサポートでき、ツールの応答性を向上できます。
コアデータコアエンティティと関係のデータは常にメモリに保持されます。このデータは、ファイル、クラス、関数グラフ、相互参照情報、ソースブラウジングなど、Imagix 4D解析と結果表示のほとんどの基礎となります。コアデータのメモリ要件は、コード内のシンボル(エンティティ)の数と使用に依存します。通常、Imagix 4Dの32ビットバージョンでは、1つのプロジェクトで最大400万~1000万のステートメントを含むソースコードを処理できます。 WindowsおよびLinuxで利用可能なImagix 4Dの64ビットバージョンを実行することにより、より大きなプロジェクトをサポートできます。 64ビットバージョンは同じプロジェクトに対して2倍のメモリを使用しますが、32ビットアプリケーションのメモリ制限を回避することで、より大きなプロジェクトをサポートできます。たとえば、上記の400万~1000万のステートメントプロジェクトの基本的な解析を行うには、64ビットバージョンのImagix 4Dには4 GBのメモリが必要であり、32ビットシステムで使用可能なメモリの2倍です。システムサイズを8GBに増やすと、800万~2000万件近くのステートメントを含むプロジェクトが可能になります。ただし、大規模なプロジェクトでは、データのパフォーマンスのロード、解析、表示が低下し始めます。 メモリ要件はプロジェクトの内容を管理することで削減できます。一つの方法は、ソースコードを分割して、独立して解析できる別々のプロジェクトを作成することです。意味のある範囲で小さなプロジェクトを作成できる場合、これには不要なデータを排除し、特定のプロジェクト内で解析作業に集中できるという追加の利点があります。混合プロジェクトを使用すると、そのようなプロジェクトの結合を解析できます。混合プロジェクトによって消費されるメモリは、2つ(またはそれ以上)のプロジェクトが単一の統合プロジェクトとしてロードされた場合と同じです。 コアデータのサイズを削減する別のアプローチは、特定の情報の収集をオフにすることです。最初の候補は、プロジェクト変数の仕様で利用可能なオプションであるローカル変数に関するデータを削除することです。そうすると、実行できる解析の一部が制限されます。特に、データフローといくつかのフローチェックレポートにはローカル変数データが必要です。ただし、ローカル変数の関係は範囲が非常に限られているため、Imagix 4Dの解析のほとんどは、このデータを省略しても影響を受けません。 新しいプロジェクトを軽量プロジェクトまたは最小プロジェクトとして設定することで、より包括的なデータ削減が可能です。デフォルトでは、任意の新しいプロジェクトは通常のプロジェクトとして作成され、ソースコードに関する詳細で広範なデータが収集されます。しかし、オプションダイアログの設定 ([ファイル] > [オプション...] > [データコレクション] > [プロジェクトロケーション及びリソース]) を通じて、プロジェクト作成時に代替のプロジェクトタイプを指定するステップを追加できます。軽量プロジェクトでは、型やマクロ、ローカル変数に関するデータ収集が省かれます。最小プロジェクトでは、さらにプロジェクト内容が削減され、すべての変数が省かれます。これにより、サポートされるプロジェクトのサイズが約4倍に拡張されます(32ビット環境で1500万~4000万のステートメント)。結果として得られるプロジェクトでは、グラフビュー、メトリクス、およびレポートは、利用可能なデータによってサポートされるものに限られます。
ソースチェックとメトリックデータソフトウェアメトリクスとソースチェック情報は、第二のデータベースに保持されます。コアデータとは異なり、メトリクスデータは要求に応じてロードされます。デフォルトでは、生成されるメトリクスデータベースはメモリにロードされます。要求駆動型であるため、データサイズは要求されるメトリクスに依存します。一般的な目安として、データサイズはコアデータの1~2倍と見なすことができます。これにより、メトリクスやソースチェックがロードされると、Imagix 4Dの32ビット版で単一プロジェクトとして処理できるソースコードのサイズは150万~500万ステートメントに減少します。これらのメモリ要件は、プロジェクトリソースの設定([ファイル] > [オプション...] > [データ収集] > [プロジェクトの場所とリソース])を使用して削減できます。メトリクスとソースチェックデータの設定は、インストール内のすべてのプロジェクトに適用されます。 「ディスクデータベースにロード」または「セッション間で値を保存」を設定すると、32ビットバージョンで最大300万~800万のステートメントを含むプロジェクトが可能になります。この削減は、ディスクデータベースを使用することで実現されます。メモリではなくディスクを使用すると、メトリックデータの初期計算が2~10倍遅くなります。 「セッション間で値を保存する」設定では、これは特定のプロジェクトの1回限りのスローダウンです。プロジェクトの2回目のメトリック情報がロードされると、メトリックは生データからすでに計算されているため、ロード時間は実際にはメモリよりも高速です。
データフローデータフローチェックレポートおよびデータフローで使用されるデータフローデータは、第三のデータベースに保持されます。メトリクスデータと同様に、データフローデータも要求に応じてロードおよび計算されます。これらは、多くのフローチェックレポートやデータフローに使用されます。基礎となるグローバルデータフロー解析は非常に複雑で、多大な時間とメモリを必要とします。データフローデータのサイズは、コアデータの5~20倍の範囲に及び、非ローカル変数の数、関数の数と再帰、および循環的複雑度などの要因に依存します。これにより、Imagix 4Dの32ビット版では、0.2~0.3百万ステートメントを含むソースコードを処理することができます。このサイズのプロジェクトを解析するには数時間かかることがあります。64ビット版では16~32GBのメモリを使用して、2.0~3.0百万ステートメントを含むソースコードを解析できますが、解析完了までに数日かかることがあります。
|