Acovea

ソフトウェアのスクリーンショット:
Acovea
ソフトウェアの詳細:
バージョン: 1.0.1
日付のアップロード: 3 Jun 15
開発者: Scott Robert Ladd
ライセンス: 無料
人気: 176

Rating: 2.7/5 (Total Votes: 3)

Acoveaは、GCCのCおよびC ++コンパイラでプログラムをコンパイルするための「最良」のオプションを見つけるための遺伝的アルゴリズムを実装しています。
ACOVEA(進化的アルゴリズムを介して、コンパイラオプションの分析)は、GNUコンパイラコレクション(GCC)は、CおよびC ++コンパイラでプログラムをコンパイルするための「最良」のオプションを見つけるために遺伝的アルゴリズムを実装しています。
「ベスト」は、この文脈において、指定されたソースコードから最速の実行可能プログラムを生成し、これらのオプションのように定義されます。 Acoveaは他のプログラミング言語と非GCCコンパイラをテストするために拡張することができますC ++のフレームワークです。
私はプロファイリングに目的で同様の最適化ツール、としてAcoveaを想定します。伝統的な関数レベルのプロファイリングはプログラムのパフォーマンスで最も影響力のアルゴリズムを識別する。 Acoveaその後、最速のコードを生成するコンパイラフラグやオプションを検索するためにこれらのアルゴリズムに適用されます。
Acoveaも悲観的な相互作用のための、およびコンパイラの信頼性をテストするためのフラグの組み合わせをテストするのに便利です。
現代のソフトウェアは、理解し、伝統的な手段で検証することは困難です。数百万行のコードは、アプリケーションが簡単な説明やブルートフォース調査を挑む、複雑な相互作用を含む生産します。
ソフトウェアの複雑さ、所定の非現実的な提案 - テストに導かれ、決定論的なアプローチは、アクションのすべての組み合わせを想定するために、ヒト試験者に依存しています。しかし、その複雑さにもかかわらず、我々は近代的な、大規模なソフトウェアに関する重要な質問の答えを必要としています。
重要な問題はどのような? GNUコンパイラコレクションを考えてみましょう。私は、ベンチマークのコード生成記事、異なるコンパイラが提供する無数の選択肢のために困難を伴うタスクを記述します。私のベンチマークは何の意味を持っているために、私は特定のアプリケーションの最速のコードを生成オプションのどの組み合わせを知る必要があります。
オプションの「最良」のセットを見つけることはGCCのマニュアルの程度およびGCCの開発者コミュニティの社会通念を考えると、単純な作業のように聞こえます。ああ、それが唯一のように簡単であれば! GCCのマニュアルでは、大規模なながらも、正直に不正確です。
私は、ドキュメントのこのスタイルに感謝します。自社製品の「品質」についての絶対的な文を作る多くの商業ベンダーとは異なり、GCCの文書​​作成は、コード生成を変更する方法をさまざまなオプションの不確実性を認めています。実際には、コード生成は、コンパイルされているアプリケーションの種類やターゲットプラットフォームに完全に依存します。一つのソースコードの高速実行可能コードを生成するオプションは、他のプログラムの性能に有害であり得ます。
私は新しい記事を公開するたびに「従来の知恵は、 "私の受信​​トレイに到着しました。丁寧からしつこいに失礼に至るまで、これらの電子メールが速いコードを生成するための矛盾の提案が含まれています。
ほとんどの場合、そのような事例アサーションは少なからず、その有効性のいずれかの形式的な証明を欠いている、と、提案した「改善」は、無効または有害です。これらのすべてのGCCのオプションは、プログラムコードを生成する際にどのように機能するか正確に知っている - それは含ま--myself誰もことがますます明白になってきています。
私は最適化の聖杯を求めて - しかし、最適化は、正確に何ですか?問題を理解することが解決策を見つけるための最初のステップです。
最適化は、ソースコードから「最良」のマシンコードを生成しようとします。 「ベスト」は、異なるアプリケーションに異なるものを意味します。科学的なアプリケーションは、迅速かつ正確な結果に関係しながら、情報のデータベースシャベルチャンク;組込みシステムのための最初の懸念は、コードサイズとすることができます。
そして、それは小さなコードが正確で速く、または高速のコードであることが十分に可能です。最適化は、ハードウェアとソフトウェアの構成の多様性を考えると、はるかに正確な科学であるからです。
最適化アルゴリズムは、不変、またはグローバル共通部分式を除去するプログラム全体を調べるように複雑ループを削除するのと同じくらい簡単であってもよいです。多くの最適化は、プログラマが効率のために、基礎となる詳細を変化させながら、同じ結果を生成する、より効率的な形に書いたものを変更します。他の「最適化」は、特別な命令セットとして基本となるハードウェアの特定の特性を、使用するコードを生成します。
メモリ·アーキテクチャ、パイプライン、オンとオフチップ·キャッシュ - すべては、高レベルの言語を使用するプログラマには明らかではない方法でのコードのパフォーマンスに影響を与えます。高速なコードを生成するように見えるかもしれませんが、最適化は、実際には、より多くのキャッシュミスを引き起こす大規模なコード、このように性能が低下を作成することができます。
さえベストハンドチューニングCコードは解釈の領域が含まれています。 Cステートメントと機械語命令の間には絶対的な、1対1の対応はありません。しかし、機能的に同等 - - ソースコードのほとんどすべての配列が異なるにコンパイルすることができる機械語命令は、異なるサイズおよびパフォーマンス特性とストリーム。
より高速なプログラムを生成することができる機能コード自体に関数の呼び出しを置き換えるだけでなく、プログラムのサイズを増加させることができる:関数をインライン化すると、この現象の典型的な例です。プログラムサイズの増加、ひいては、このように伴うキャッシュミスにプログラムを遅くする、高速キャッシュメモリの内部にフィットからアルゴリズムを防止することができます。
イタチ語の私の使用を注意してください "かもしれない" - 小さな関数をインライン展開することは、時には他の最適化アルゴリズムをさらに高速化し、より小さなコード生成し、地域の状況のた​​めのコードを改善する機会を可能にします。
最適化は、単純または明白ではない、とアルゴリズムの組み合わせは、予期しない結果につながることができます。これは質問に私を戻す:任意のアプリケーションの場合、最も効果的な最適化オプションは何ですか?
このリリースの新機能:
·非フリーのライセンスでマイナーチェンジ。
·サポートはlibcoyotlとlibevocosmの最新バージョンに追加されました。

同じようなソフトウェア

nose-performance
nose-performance

20 Feb 15

jenkviz
jenkviz

14 Apr 15

AceUnit
AceUnit

2 Jun 15

assertEquals
assertEquals

20 Feb 15

開発者の他のソフトウェア Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

へのコメント Acovea

コメントが見つかりません
コメントを追加
画像をオンにする!