Optimization 代码优化与数据压缩的关系

Optimization 代码优化与数据压缩的关系,optimization,compilation,compiler-construction,compression,list-comprehension,Optimization,Compilation,Compiler Construction,Compression,List Comprehension,我在互联网上搜索了这个问题,发现一些研究人员使用数据压缩算法进行编译器优化,比如哈夫曼编码 我的问题比较笼统: 我们可以把代码优化看作是有损压缩类型吗? 具体来说,是苹果和桔子。但在抽象层面上,这是一个有趣的问题 数据压缩处理冗余,即数据和信息之间的差异。 它试图通过修改信息编码来减少不必要的冗余。 这种编码通常是通过获取一个公共子字符串并生成一个引用它的代码来工作的,而不是重复该子字符串 编译器优化(速度)旨在减少不必要的周期。 一种方法是,如果某些计算的结果需要两次或两次以上, 确保它保存在

我在互联网上搜索了这个问题,发现一些研究人员使用数据压缩算法进行编译器优化,比如哈夫曼编码

我的问题比较笼统:


<>我们可以把代码优化看作是有损压缩类型吗? 具体来说,是苹果和桔子。但在抽象层面上,这是一个有趣的问题

数据压缩处理冗余,即数据和信息之间的差异。 它试图通过修改信息编码来减少不必要的冗余。 这种编码通常是通过获取一个公共子字符串并生成一个引用它的代码来工作的,而不是重复该子字符串

编译器优化(速度)旨在减少不必要的周期。 一种方法是,如果某些计算的结果需要两次或两次以上, 确保它保存在某个地址或寄存器中(内存化),以便以更少的周期重复使用

数字编码的另一种形式是所谓的“一元表示法”,其中只有一个数字,数字通过重复它来表示。例如,数字“三”和“四”是“111”和“1111”,这两个数字取N位。 此代码通过切换到二进制代码进行优化,如“011”和“100”中的代码,它们采用对数(N)位数(当然是以2为基数)

与此类似的编程是线性搜索和二进制搜索之间的区别。 线性搜索需要O(N)个比较。 每次比较都可能产生大量的信息,或者产生很少的信息——平均而言,信息量要少得多。 二进制搜索进行O(log(N))比较,每次比较产生一位


有一些想法,应该有可能找到其他的相似之处。

你不能认为它是一种有损的东西,因为它不是有损的,赫夫曼编码不是编译器优化技术。你的问题毫无意义。我投票决定结束,因为我不清楚你在问什么。不。您提到的优化类型非常具体。大多数优化(例如循环展开)倾向于使代码更大。我的问题是,它们都旨在消除冗余,同时保留代码/数据的语义。