取決於機器(machine dependent)和機器無關程式碼最佳化(machine independent code optimization)的區別

計算機程式是一組指令,用於執行任務。這些程式大多是用高階語言編寫的,而計算機不理解這種語言。因此,編譯器用於將這些指令轉換為機器程式碼或目的碼。它經過幾個階段來構建目的碼。程式碼最佳化就是其中之一。有兩種最佳化技術,如機器依賴和機器無關的程式碼最佳化。機器依賴程式碼最佳化與機器無關程式碼最佳化的關鍵區別在於,將機器依賴最佳化應用於物件程式碼,而中間程式碼採用機器無關程式碼最佳化。...

關鍵區別-機器相關代碼優化與機器無關代碼優化

計算機程序是一組指令,用於執行任務。這些程序大多是用高級語言編寫的,而計算機不理解這種語言。因此,編譯器用於將這些指令轉換為機器代碼或目標代碼。它經過幾個階段來構建目標代碼。代碼優化就是其中之一。有兩種優化技術,如機器依賴和機器無關的代碼優化。機器依賴代碼優化與機器無關代碼優化的關鍵區別在於,將機器依賴優化應用於對象代碼,而中間代碼採用機器無關代碼優化。

目錄

1. 概述和主要區別
2. 什麼是依賴機器的代碼優化
3. 什麼是獨立於機器的代碼優化
4. 機器相關和機器無關代碼優化的相似性
5. 並排比較-以表格形式進行機器相關代碼優化與機器無關代碼優化
6. 摘要

什麼是依賴機器的代碼優化(machine dependent code optimization)?

在將源代碼轉換為目標代碼或目標代碼時,編譯器要經歷幾個階段。首先,源代碼提供給詞法分析器,後者生成標記。然後,輸出給語法分析器,語法分析器檢查生成的標記是否按邏輯順序排列。這個輸出被提供給語義分析器。假設有一段代碼p=q+r;

這裡,p,q是整數,而r是浮點數。使用語義分析器,將c整型變量轉換為float。因此,本文進行了語義分析。語義分析器的輸出到中間代碼生成器。它返回一箇中間代碼,然後轉到代碼優化器。代碼優化是在不改變實際源代碼含義的情況下消除不必要的程序語句的過程。它不是一個強制性的優化,但是它可以提高目標代碼的運行時間。代碼優化器的輸出被提供給代碼生成器,最後生成目標代碼。

取決於機器(machine dependent)和機器無關代碼優化(machine independent code optimization)的區別

圖01:編譯器的階段

在依賴機器的代碼優化中,對源代碼進行優化。在這種優化中,分配足夠的資源可以提高程序的執行效率。

什麼是機器無關代碼優化(machine independent code optimization)?

對中間代碼進行優化時,稱為機器無關代碼優化。實現獨立於機器的代碼優化有不同的技術。下面的例子對它們進行了描述。

閱讀下面幾行代碼。

對於(j+;j=10+){

b=x+2;

a[j]=5*j;

}

根據上面的代碼,在每次迭代中反覆計算b=x+2。一旦計算出b,它不會改變。所以,這條線可以放在循環的外面,如下所示。

b=x+2;

對於(j=0;j<10;j++)

{a[j]=5*j;

}

這叫做代碼移動。

閱讀下面幾行代碼。

j=5;

如果(j==10){

a=b+20;

}

根據上面的代碼,“if塊”永遠不會執行,因為j值永遠不會等於10。它已初始化為值5。因此,這個if塊可以被移除。這種技術是死代碼消除。

另一種方法是強度降低。像乘法這樣的算術運算需要更多的內存、時間和CPU週期。這些昂貴的表達式可以用廉價的表達式代替,比如b=a*2;或者可以用加法代替,b=a+a;

參考以下代碼。

對於(j=1;j<=5;j++){

值=j*5;

}

代替乘法,可以按如下方式更改代碼。

內部溫度=5;

對於(j=1;j<=5;j++){

溫度=溫度+5;

值=溫度;

}

可以在運行時計算作為常量的表達式。這叫做恆定摺疊。可以這樣表述:b[j+1]=c[j+1];

相反,它可以更改如下。

n=j+1;

b[n]=c[n];

可以有如下循環。

對於(j=0;j<5;j++){

printf(“a\n”);

}

對於(j=0;j<5;j++){

printf(“b\n”);

}

打印a和b,都有相同的迭代次數。兩個都可以組合成一個for循環,如下所示。

對於(j=0;j<5;j++){

printf(“a\n”);

printf(“b\n”);

}

另一個重要的技術是通用子表達式消除。它是用一個變量替換相同的表達式來進行計算。參考以下代碼。

a=b*c+k;

d=b*c+m;

此代碼可以按如下方式轉換。

溫度=b*c;

a=溫度+k;

d=溫度+m;

不需要反覆計算b*c。乘以的值可以存儲在一個變量中並可以重用。

什麼是機器相關和機器無關代碼優化的相似性(the similarity between machine dependent and machine independent code optimization)?

  • 這兩個都屬於代碼優化

取決於機器(machine dependent)和機器無關代碼優化(machine independent code optimization)的區別

機器相關代碼優化與機器無關代碼優化
將機器相關代碼優化應用於目標代碼。 中間代碼採用機器無關代碼優化。
與硬件有關
與機器相關的優化包括CPU寄存器和絕對內存引用。 與機器無關的代碼優化不涉及CPU寄存器或絕對內存引用。

總結 - 取決於機器(machine dependent) vs. 機器無關代碼優化(machine independent code optimization)

代碼優化包括兩種優化技術,即機器相關代碼優化和機器無關代碼優化。機器相關代碼優化與機器無關代碼優化的區別在於,機器相關代碼優化應用於目標代碼,而機器無關代碼優化應用於中間代碼。

下載與機器相關的與機器無關的代碼優化的pdf版本

你可以下載這篇文章的PDF版本,並按照引文說明離線使用。請在此下載PDF版本機器相關和機器無關代碼優化的區別

引用

1.“編譯器設計|代碼優化。”GeeksforGeeks。這裡有2點,教程。“編譯器設計-代碼優化。”Www.tutorialspoint.com網站,教程點,2017年8月15日。這裡有3.Estudies4you。“JNTUH CSE學習材料”,機器相關和獨立代碼優化的區別。此處提供
2.要點,教程。“編譯器設計-代碼優化。”Www.tutorialspoint.com網站,教程點,2017年8月15日。
3.研究你。“JNTUH CSE學習材料”,機器相關和獨立代碼優化的區別。

  • 發表於 2020-10-20 02:55
  • 閱讀 ( 48 )
  • 分類:科技

你可能感興趣的文章

密度無關(density independent)和密度相關限制因子(density dependent limiting factors)的區別

...以表格形式表示 6. 摘要 什麼是密度無關限制因子(density independent limiting factors)? 密度無關限制因子是調節種群增長率的非生物因子和環境因子。一般來說,它們是物理或化學性質的。這些因素影響人口的出生率和死亡率。其中...

  • 發佈於 2020-09-17 18:06
  • 閲讀 ( 65 )

認知計算(cognitive computing)和機器學習(machine learning)的區別

...習、識別模式並據此做出決策。然而,基於認知計算和基於機器學習的應用很難劃清界限和劃分。 目錄 1. 概述和主要區別 2. 什麼是認知計算 3. 什麼是機器學習 4. 認知計算與機器學習的關係 5. 並列比較-認知計算與表格形式的...

  • 發佈於 2020-10-18 10:57
  • 閲讀 ( 99 )

被監督的(supervised)和無監督機器學習(unsupervised machine learning)的區別

...演算法有很多種。其中一些是迴歸、分類和聚類。開發基於機器學習的應用程式最常用的程式語言是R和Python。也可以使用其他語言,如java、C++和MATLAB。 目錄 1. 概述和主要區別 2. 什麼是監督學習 3. 什麼是無監督學習 4. 有監督...

  • 發佈於 2020-10-19 03:49
  • 閲讀 ( 51 )

虛擬機器(virtual machine)和伺服器(server)的區別

關鍵區別–虛擬機器與伺服器 計算機是一種能根據給定指令執行任務的裝置。一臺計算機包含多個硬體資源。硬體的執行指令由軟體提供。作業系統也是軟體。虛擬機器是一種軟體或應用程式環境,它是計算機系統與作業系...

  • 發佈於 2020-10-19 14:47
  • 閲讀 ( 49 )

原始碼(source code)和位元組碼(bytecode)的區別

...組碼 計算機是一種能根據使用者提供的指令執行任務的機器。計算機程式可以向計算機發出指令。它是用一套特定的程式語言編寫的。程式語言有很多種。大多數程式語言都是高階程式語言。用高階語言編寫的程式很容易被人...

  • 發佈於 2020-10-19 15:49
  • 閲讀 ( 57 )

原始碼(source code)和目的碼(object code)的區別

...類可讀的程式語言編寫的計算機指令的集合,而目的碼是機器語言中的語句序列,是編譯器或彙編程式轉換原始碼後的輸出。 目錄 1. 概述和主要區別 2. 什麼是原始碼 3. 什麼是目的碼 4.原始碼和目的碼的相似性 5. 並行比較-原始...

  • 發佈於 2020-10-19 18:56
  • 閲讀 ( 188 )

機器學習(machine learning)和人工智慧(artificial intelligence)的區別

關鍵區別——機器學習與人工智慧 人工智慧是一個寬泛的概念。自動駕駛汽車、智慧家居就是人工智慧的一些例子。一些國家在醫藥、**業、軍事、農業和家庭等領域擁有智慧機器人。機器學習是一種人工智慧。機器學習和...

  • 發佈於 2020-10-19 20:24
  • 閲讀 ( 49 )

機器語言(machine language)和組合語言(assembly language)的區別

...vs. 組合語言(assembly language) 機器語言和組合語言的區別在於機器語言是由計算機直接執行的,組合語言是一種低階程式語言,它需要彙編程式轉換成目的碼或機器程式碼。組合語言比機器語言領先一步。組合語言是對基於微控制...

  • 發佈於 2020-10-20 02:53
  • 閲讀 ( 83 )

高階語言(high level language)和低階語言(low level language)的區別

...換為機器碼,因此低階語言比高階語言快。這些程式依賴於機器,不可移植。最常見的低階語言是機器語言和組合語言。 機器語言是最接近硬體的語言。CPU直接執行這些指令。機器語言由零和一組成。機器語言程式依賴於機器...

  • 發佈於 2020-10-23 20:12
  • 閲讀 ( 83 )

資料探勘(data mining)和機器學習(machine learning)的區別

...情況成長和變化,它真正接近於計算統計學。它也與數學最佳化有很強的聯絡。機器學習的一些最常見的應用是垃圾郵件過濾、光學字元識別和搜尋引擎。 自動線上助手是機器學習的一種應用 機器學習有時與資料探勘相沖突,...

  • 發佈於 2020-10-29 00:13
  • 閲讀 ( 47 )
fbar584984
fbar584984

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章