Es-compiler-design-compiler-design-code-optimization
CompiladorDiseño-OptimizacióndeCódigo
最適化された技術の変革、メトラー・エル・コーディゴ・ポル・ロー・クェート・トラタ・ド・メジョラー・エル・コーディゴ・ポル・ロ・ク・メノス・リカーソ(es decir CPU、memoria)y ofrecer una alta velocidad。
アルトニベルオプティマイザシオンジェネラルデプログラマシオンソンサスティトゥドスポルコンストラクシオンズミューエフィシェントデバホニベルロスコーディゴスデプログラマシオン。 最適化プロセスの最適化継続的な説明:継続的な説明:
- エル・コディゴ・デ・サライダのデベ、デ・ニンニャ・マネラ、カンビア・エル・センティド・デル・プログラム。
- 最適化されたプログラムは、プログラムの可能性、プログラムの実行、プログラムの追加などが可能です。
- Optimizacióndebe serrápidoy no debe retrasar el proceso decompilacióngeneral。
ロス・エフエルソス・パラ・ウン・コディゴ・オプティミザード・プエデ・セル・ユーティリザド・エン・ロス・ディスティントス・ニヴェルズ・デ・ラボラシオン・デル・プロセソ
- アル・プリンシピオ、ロス・ウスアリオス・プエデン・カンビアー、リオーガナイザー・エル・コーディゴ、ユーティリザーズ・ラス・メジョーレス・アルゴリトモス・パラ・エスクリビル・エル・コーディゴ。
- インテルコーポレーションジェネラルコーポレーション、エルコンピラドールプエデモディフィカルエルコーディゴインターメディオpordirecciónloscálculosy mejorar los lazos。
- アル・ティエンポ・ク・ゼ・プロデュース・ラ・マキナ・デ・デスティノ・コディゴ、エル・コンピラドール・プエデ・ヘーサー・ウソ・デ・ジェラルキア・デ・メモリア・アンド・レジスト・デ・ラ・CPU。
ラオプティマイザシオンプエデクラシフィカルスアンドスグランデカテゴリア:独立したラマキナとディペンデデラマキナ。
Optimizaciónindependiente de lamáquina
オプティマイザシオン、エル・コンピラドール、コーディゴ・インターメディオ、コーディゴ・ナ・パルト・デル・コーディゴ、CPUの登録なし、メモリ・アブソリュータの登録なし。 イェンプロによる:
do
{
item = 10;
value = value + item;
} while(value<100);
要素の識別、要素の識別、クエリポネモスの形式:
Item = 10;
do
{
value = value + item;
} while(value<100);
CPUの保護者ではなく、クアルキエプロセッサーの使用が必要です。
Optimizacióndependientes de lamáquina
ラ・マキナ依存性は、デスティノ・デ・クエデ・コデゴデ・・デデデデクェスス・・デデデククク・・デデデデデクク・・デデクストト・・デデデデククク・・デデデククト・・デデデククト・・デデデククトク・・デデデククトト・・デデデクククトト・・デデデデクククトト・・ククアル・エル・ココーデゴおよび CPUの履歴と参考文献の関連資料を参照してください。 記念碑のマキシマデマルティモデマルティモデマルティモデオリエンティテス
Bloquesbásicos
ロス・コーディゴス・フエンテ・ティエネン・ウナ・セリエ・ド・インストルシオン・ケス・セ・・エジェククタン・・シエンン・・エデン・・エデン・・・・・・・・・・・・・・コン・・・・・・・・・ロロロスン・・バロス・ス・ココディゴ。 Estos dos bloquesbásicosno tienen instrucciones de salto entre ellos、es decir、cuando la primera se ejecuta lainstrucción、todas las instrucciones en el mismo bloquebásicoseráejecutado en su secuencia deapariciónsin deder jo
un programa puede tener diversas construcciones como bloquesbásicos、como IF-THEN-ELSE、SWITCH-CASE las sentencias condicionales、bucles、como DO-WHILE、FOR y REPETIR HASTA QUEなど
Identificacióndel bloquebásico
Podemos utilizar el siguiente algoritmo para encontrar los bloquesbásicosen un programa:
- 宣言書カベサルブスケダデトドスロスブロケスバシコスデデドンデセイニシアウンブロケバシコ:
- プリメーラ・デクララシオン・デ・ウン・プログラム。
- Las declaraciones que son objetivo de cualquier rama(condicional o incondicional)。
- Las declaraciones que siguen cualquier rama。
- ラスデクララシオンデルカベサルイラスデクララシオンsiguientes forman un bloquebásico。
- Un bloquebásicono incluye cualquier cabezaldeclaraciónde cualquier otro bloquebásico。
Bloquesbásicos息子は、コーディゴとオプティマイザシオンを最適化するための重要な概念を持っています。
Bloquesbásicosdesempeñanun papel importante para identificar las variables、que seestánutilizandomásde una vez en unúnicobloquebásico。 変数の使用、変数の登録、変数の登録、変数の変更は必要ありません。空のブロックはメノスクの終端です。
Flujo de ControlGráfico
Bloquesbásicosen un programa puede ser presentado por medio degráficosde flujo de control。 制御プログラムを完全に制御し、プログラムを完全に制御します。 最適化された最適化されたプログラムは、ローカライズされたクアルキアーの核になります。
OptimizaciónBucle
Lamayoríade los programas se ejecutan como un bucle en el sistema。 CPUメモリーの最適化を行うための最適化されたソフトウェアです。 ロスループは、テクノロジーの最適化を可能にします。
- コーディゴ不変量:断片化されたコーディゴqueエルブレシーカリキュラムエルミスモバロールエンカダイテラシオンセデノミナブレックデコーディゴインバリアント。 Estacódigopuede ser trasladado fuera del circuito de ahorro que se calculansólouna vez、en lugar de en cadaiteración。
- Inducciónanálisis:不変の変数名inducciónの変数は、不変の変数であり、変数は不変です。
- * Fuerzareducción*:干し草の表現はCPUの消費量、メモリ量を消費します。 表現式の再構成は、式の結果を表示します。 ejemploによって、lamultiplicación(x * 2)es costosa entérminosde ciclos de CPU que(x << 1)y el mismo resultado。
Eliminacióndecódigomuerto
コーディゴムエルトes uno omásde uncódigo、que son:
- O nunca ejecutados o inalcanzable、 *O si se ejecuta、suproducciónnunca se utiliza。
ロタント、コーディゴムエルトジュエガパペルアルガルノエンクアルキエオペラデルプログラマーイケ、ポルロタント、プエデエリミナルシンプルメント。
コディゴムエルトパーシャルメント
Hay algunas instrucciones decódigocuyo valores calculados se utilizansóloen determinances circunstancias、es decir、veces se utilizan los valores y a veces no lo son。 Estoscódigos息子conocidos como parte decódigo。
制御ファイルのプログラムは、プログラム変数「a」を使用して、「x* y」という表現を使用します。 Supongamos que el valor asignado a a a nunca se utilista den bucle.Incontroltamentes des la de la salida del bucle de control、 'a' se le asigna el valor de la variable 'z'、que seutilizaránposteriormente en el programa。 Podemos concluir que elcódigodeasignaciónde la letra 'a' nunca es utilizado en cualquier parte、por lo tanto、es elibleible para ser eliminado。
デル・ミスモ・モード、ラ・イメージ・デ・アリバ・ムエストラ・ク・ラ・インストルシオン・コンディショナル・シエンプル・エス・ファソ、ロー・ケ・インプリカ・ケ・エル・コディゴ、エスクリト・エン・シエルト・カソ、ヌンカ・セ・エジェクタラ、ポル・ロ・ケ・セ・プエド・キタル
レダンダンシアパーシャル
ラスエクスプレッションズカルダンマスデウナベズエンルタパラレラ、シンニンニャンカンビオデオペランドズ。ミエントラスクパーシャルデラスエクスプレッションズリダンダンテズセカルキュランマスデデウナベズエンエルカミノ、シンニンニャンカンビオデオペランドズ。 イェメンプロによって、
a |
エクスプレッション] [冗長 a |
ループの不変条件は、冗長性と冗長性があります。
コーディゴの一部を冗長化する
If (condition)
{
a = y OP z;
}
else
{
...
}
c = y OP z;
オペランド( y Y z )の変数は、変数 a 変数 c を使用しません。 Aquí、si lacondiciónes verdadera、y OP z se calcula dos veces、si no、una vez。 Movimientocódigose puede utilizar para eliminar esta redundancia、como se muestra acontinuación:
If (condition)
{
...
tmp = y OP z;
a = tmp;
...
}
else
{
...
tmp = y OP z;
}
c = tmp;
este caso、si lacondiciónes verdadera o falsa; OP z debe calcularsesólouna vez。