\r\n\r\n

マシン依存型とマシン独立型コード最適化の違い

コンピュータ・プログラムは、あるタスクを実行するために使用される命令の集合体です。これらのプログラムのほとんどは、コンピュータが理解できない高級言語で書かれている。そこで、これらの命令を機械語やターゲットコードに変換するために、コンパイラが使われます。いくつかの段階を経て、ターゲットコードを構築します。コードの最適化もその一つです。最適化技術には、マシン依存型とマシン非依存型のコード最適化などがある。機械依存コード最適化と機械独立コード最適化の主な違いは、機械依存最適化がオブジェクトコードに適用されるのに対し、機械独立コード最適化は中間コードに適用されることである...

主な違い - マシンに関連するコードの最適化 vs マシンに依存しないコードの最適化

コンピュータ・プログラムは、あるタスクを実行するために使用される命令の集合体です。これらのプログラムのほとんどは、コンピュータが理解できない高級言語で書かれている。そこで、これらの命令を機械語やターゲットコードに変換するために、コンパイラが使われます。いくつかの段階を経て、ターゲットコードを構築します。コードの最適化もその一つです。最適化技術には、マシン依存型とマシン非依存型のコード最適化などがある。機械依存コード最適化と機械独立コード最適化の主な違いは、機械依存最適化がオブジェクトコードに適用されるのに対して、機械独立コード最適化は中間コードに使用されることです。

カタログ

1. 概要と主な相違点 2. 機械依存のコード最適化とは 3. 機械独立のコード最適化とは 4. 機械依存と機械独立のコード最適化の類似点 5. 横並びの比較 - 表形式での機械依存コード最適化と機械独立コード最適化 6. 要約

マシン依存のコード最適化は何ですか?

ソースコードをターゲットコードやオブジェクトコードに変換する際、コンパイラはいくつかの段階を経ます。まず、ソースコードが字句解析器に供給され、トークンが生成される。この出力は構文解析に渡され、生成されたトークンが論理的な順序で並んでいるかどうかをチェックする。この出力はセマンティックパーサーに提供される。p=q+rという符号があるとする。

ここで、p,qは整数、rは浮動小数点数である。意味解析器を用いて、c の整数型変数を float に変換している。意味解析の出力は、中間コード生成器に送られる。中間コードが返され、それがコードオプティマイザに送られる。コードの最適化とは、実際のソースコードの意味を変えることなく、不要なプログラム文を削除することである。強制的な最適化ではありませんが、ターゲットコードの実行速度を向上させることができます。コードオプティマイザーの出力はコードジェネレーターに提供され、最終的にターゲットコードを生成する。

取决于机器(machine dependent)和机器无关代码优化(machine independent code optimization)的区别

図01:コンパイラのステージ

マシン依存型コード最適化では、十分なリソースを割り当てることで、プログラムの実行効率が向上するようにソースコードを最適化する。

マシン独立型コード最適化は何ですか?

中間コードの最適化を行う場合、マシンインディペンデントコード最適化と呼ばれる。機械に依存しないコード最適化の実装には、さまざまな手法があります。以下の例で説明します。

次のコードの行を読んでください。

for (j+; j=10+){の場合。

b = x + 2 とする。

a[j]=5*j.

}

上記のコードによると、各反復で b = x + 2 が繰り返し計算される。一旦 b が計算されると、それは変化しない。そこで、この行は次のようにループの外側に配置することができます。

b=x+2である。

for (j=0; j<10; j++)

{a[j]=5*j.

}

これをコードムーブといいます。

次のコードの行を読んでください。

j=5.

If (j==10) {

a = b + 20.

}

上記のコードでは、jの値が10になることはなく、5で初期化されているため、ifブロックは実行されない。 したがって、ifブロックを削除することができる。この技法がデッドコードエリミネーションです。

また、もう一つのアプローチとして、原単位削減があります。乗算などの算術演算は、より多くのメモリ、時間、CPUサイクルを必要とします。これらの高価な式は、b = a*2 のように安価な式に置き換えることができます。また、b = a + a のように足し算で置き換えることもできます。

以下のコードを参照してください。

for (j=1; j<=5; j++){。

値=j*5。

}

乗算の代わりに、次のようにコードを変更することができます。

内部温度=5.

for (j=1; j<=5; j++){。

温度=気温+5.

値=温度。

}

これは定数折りたたみと呼ばれ、b[j+1] = c[j+1]のように表現できる。

その代わり、次のように変更することができます。

n=j+1である。

b[n] = c[n]とする。

次のようなサイクルが可能です。

for (j=0; j<5; j++){の場合。

printf("a\n").

}

for (j=0; j<5; j++){の場合。

printf("bēng")。

}

aとbを同じ繰り返し回数で表示する。両者は以下のようにforループにまとめることができる。

for (j=0; j<5; j++){の場合。

printf("a\n").

printf("bēng")。

}

もう一つの重要なテクニックは、同じ式を変数に置き換えて計算を行う汎用部分式消去である。

a = b*c + k となります。

d = b*c + m。

このコードは、次のように変換できます。

温度=b*c。

a = 温度 + k。

d = 温度 + m。

b*cを繰り返し計算する必要がなく、掛け算の値を変数に格納して再利用することができる。

マシン依存型とマシン非依存型のコード最適化の類似性は何ですか?

  • いずれもコードの最適化

マシン依存型とマシン独立型コード最適化の違い

マシン関連コードの最適化 vs. マシンに依存しないコードの最適化
ターゲットコードに機械関連のコード最適化を適用する。 中間コードは、マシンに依存しないコードを用いて最適化されます。
ハードウエア関連
マシン関連の最適化には、CPUレジスタや絶対メモリ参照などがあります。 マシンに依存しないコード最適化では、CPUレジスタや絶対的なメモリ参照は関係ありません。

概要 - マシン依存型 vs. マシン独立型コード最適化

コード最適化には、マシン依存型コード最適化とマシン非依存型コード最適化という2種類の最適化技術があります。機械依存コード最適化と機械非依存コード最適化の違いは、機械依存コード最適化がターゲットコードに適用されるのに対し、機械非依存コード最適化は中間コードに適用される点である。

マシン関連およびマシンに依存しないコード最適化 pdf 版のダウンロード

本記事のPDF版をダウンロードし、オフラインで使用する場合は、引用の指示に従ってください。PDF版のダウンロードはこちら マシン依存型とマシン非依存型のコード最適化の違い

引用

1. "コンパイラの設計|コードの最適化"GeeksforGeeks。ここで2点、チュートリアル。"コンパイラの設計-コードの最適化"Www.tutorialspoint.com ウェブサイト、チュートリアルポイント、2017年8月15日。ここで入手可能 3. Estudies4you. "JNTUH CSE Learning Materials", 機械関連とスタンドアローンでのコード最適化の違いについて。こちらで購入可能です 2.エッセンシャルズ、チュートリアル。"コンパイラの設計-コードの最適化"Www.tutorialspoint.com ウェブサイト、チュートリアルポイント、2017年8月15日 3.あなたを勉強してください。"JNTUH CSE学習教材" 機械関連とスタンドアローンのコード最適化の違い。

  • 2020-10-20 02:55 に公開
  • 閲覧 ( 24 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ