取决于机器(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
  • 阅读 ( 369 )
  • 分类:IT

你可能感兴趣的文章

密度无关(density independent)和密度相关限制因子(density dependent limiting factors)的区别

...-捕食 此外,这些因素影响人口死亡率和移民。承载能力取决于密度相关的限制因素。根据密度相关的限制因子,它是一个区域内可居住的最大个体数。 密度无关(density independent)和密度相关限制因子(density dependent limiting factors)的...

  • 发布于 2020-09-17 18:06
  • 阅读 ( 667 )

认知计算(cognitive computing)和机器学习(machine learning)的区别

认知计算和机器学习的关键区别在于,认知计算是一种技术,而机器学习是指解决问题的算法。认知计算使用机器学习算法。 认知计算使计算机能够模拟和补充人类的认知能力来做出决策。机器学习允许开发自学习算法来分...

  • 发布于 2020-10-18 10:57
  • 阅读 ( 600 )

机器语言(machine language)和汇编语言(assembly language)的区别

主要区别——机器语言与汇编语言 编程语言允许人类为计算机创建执行任务的指令。有三种编程语言,如高级编程语言、汇编语言和机器语言。高级编程语言对人类来说更容易理解。计算机所识别的语言被称为机器语言。汇...

  • 发布于 2020-10-20 02:53
  • 阅读 ( 630 )

数据挖掘(data mining)和机器学习(machine learning)的区别

数据挖掘(data mining)和机器学习(machine learning)的区别 数据挖掘和机器学习是两个密切相关的领域。作为亲属,他们是相似的,但他们有不同的父母。但目前,两者的生长越来越相似,几乎与双胞胎相似。因此,有人将机器学习...

  • 发布于 2020-10-29 00:13
  • 阅读 ( 231 )

如何使用time machine备份mac

...需要相当长的时间。可能是几个小时,也可能是几天,这取决于你有多少文件。 ...

  • 发布于 2021-03-24 06:16
  • 阅读 ( 275 )

hklm是hkey\ U local\ U机器的别名吗?

...题 超级用户读者Joe Kearney想知道HKLM是否只是HKEY\ U LOCAL\ U机器的别名,或者有时两者之间是否真的存在差异: HKLM is often used as an abbreviation for HKEY_LOCAL_MACHINE, but unexpectedly, this also appears to be true when I ask the Reg. for a value. C:\&gt;reg qu...

  • 发布于 2021-04-11 06:02
  • 阅读 ( 129 )

密度相关(density dependent)和密度无关(density independent)的区别

...。它通常在大量人口中运行,并导致人口增加或减少,这取决于它对生态系统的影响。 例如,庞大的人口会耗尽一个地区的自然资源和食物供应。这将导致这些必要元素的短缺,使该地区无法养活其人口,并最终导致该地区人...

  • 发布于 2021-06-23 20:00
  • 阅读 ( 348 )

hkey\ U当前\用户(hkey_current_user)和hkey\ U本地\机器(hkey_local_machine)的区别

...项,他只会更改自己的设置。但如果他更改HKEY\ U LOCAL\ U机器中的条目,他将更改所有使用该计算机的用户的设置。一个很好的例子就是安装一个新的软件。许多软件在安装时都会询问它是只针对当前用户还是针对每个人。为当...

  • 发布于 2021-06-23 20:51
  • 阅读 ( 137 )

装置(device)和机器(machine)的区别

机器和设备无处不在——无论是吊扇、冰箱还是智能**。它们的设计是为了让我们的日常生活更加轻松,只需几秒钟就可以完成简单到最复杂的任务。首先,计算机是一种设计用于轻松计算一种或多种计算功能的设备,或者是一...

  • 发布于 2021-06-25 15:10
  • 阅读 ( 419 )

机器学习的区别(differences between machine learning)和深度学习(deep learning)的区别

...经典机器学习的结果更难理解。决策层或步骤的确切数目取决于所选模型的类型和复杂性。 机器和深度学习中的数据和可伸缩性 机器学习传统上使用小数据集来学习和预测。通过少量的数据,研究人员可以确定精确的特征,这...

  • 发布于 2021-06-25 18:10
  • 阅读 ( 565 )
fbar584984
fbar584984

0 篇文章

相关推荐