优化和压缩之间是否存在关联?

时间:2016-03-13 01:52:15

标签: performance optimization compilation compression compiler-optimization

优化是用更少的资源做更多的计算。 压缩越多越少。 这两者之间有关系吗?你能压缩计算吗?

2 个答案:

答案 0 :(得分:0)

是。 好问题。 连接是Information Theory。 让我大大简化一下:

a)数据量与b)信息之间存在差异。 数据是某物的物理量,例如磁盘上或通信线上的位。 信息是它告诉任何人阅读它的信息,作为一种衡量标准,它总是小于或等于携带它的数据。 数据超出其承载的信息的量称为冗余。 压缩的作用是通过减少冗余来减少数据,使其更接近信息内容。

计算怎么样?将程序视为信息通道,获取输入数据并对其进行处理以识别其信息。 程序完成后,它“知道”有关输入的一定数量的信息。 它执行的每个基本操作都是获取(或丢失)信息的操作,并且在获得所有信息之前不会完成。

示例:在1024个数字的表中搜索特定键值。 当找到密钥时,已经学习了10位信息,因为需要10位来指示该数字在表中的位置。 如果使用二进制搜索,则需要进行10次比较,因此每次比较都是“学习”一位。 如果密钥可以直接用作表中的索引,则有一种更快的方法。 在这种情况下,索引操作在一个步骤中“学习”所有10位。 有一种较慢的方法 - 线性搜索,平均需要512次比较。 在该方法中,每个比较仅获得一小部分。 (这就是为什么它很慢。)

因此,如果计算机操作与数据类似,则优化会尝试最小化给定信息量的操作次数,而压缩会尝试最小化给定信息量的数据位数。

答案 1 :(得分:0)

这是算法中常见的权衡:交换额外空间以便更快地计算(具有可能值的查找表),或相反(二进制搜索或类似)。我建议读一下空间和时间的复杂性。您可以找到一些巧妙的技巧,帮助您优化或压缩,无论您需要更多。