考虑到今天的处理器,代码膨胀是否不再重要?

Does code bloat matter anymore given today's processors?

本文关键字:不再 是否 膨胀 代码 今天 处理器 考虑到      更新时间:2023-10-16

例如,假设您在一个非常大的软件中使用完全限定的名称空间,而不是别名或"using"语句。假设你输入了各种不需要的废话,当你的目标被执行时,你的数组不会停止迭代,等等。这些类型的代码效率低下会影响今天软件的执行速度吗?

如果"代码膨胀"指的是可读性较差且不必要复杂的代码,那么"代码膨胀"的主要代价是开发时间较长,而不是代码速度较慢。这并不意味着在效率方面永远不会有成本,但有时更干净的代码会更慢。所以,我想说,代码膨胀并不一定意味着代码更慢或更快,只是不可读性会阻止人们以高性能的方式进行编码,因为理解代码和优化性能的障碍更高。

如果你所说的代码膨胀是指算法效率,那可能取决于你在做什么。对于大型数据集,性能曲线为O(e^n)的东西会很慢,无论你的处理器有多快。也就是说,我通常基于n的大小。如果我知道我的数据集会很小(一个有7个项目的硬编码下拉菜单),那么如果我在O(log(n))中进行线性搜索O(n)而不是二进制搜索,我就不会那么担心了。但如果可能的话,我通常倾向于做得更快。

如果我说的是希腊语,请使用Big-O符号:https://en.wikipedia.org/wiki/Big_O_notation

程序中使用的字符数(甚至不是LOC)通常不会显示出复杂性。因此,我们不能说它对总吞吐量的影响,至少在一般情况下是这样。然而,更准确地说,你的程序的复杂性在今天甚至在未来都不重要。请考虑一下,我们的需求随着我们的能力而增加。如今,我们面临着大数据,这个术语的意思是数千TB,但大约15年前,这种规模的数据令人难以置信。

看看这两个片段:

//Block 2 - O(1)
int abcdef1;
int abcdef2;
//...
int abcdef100000;
//----------------
//Block 2 - O(n^2)
for (int i=0; i < n; i++)
for (int j=0; j < n; j++)
//do something
//----------------

很明显,字符的数量并不是衡量复杂性的代表性指标。欲了解更多详细信息,请访问:

  • 八岁孩子的大O
  • http://en.wikipedia.org/wiki/Big_O_notation(如前所述)
  • 您是否在';真实世界'
  • 什么是大O符号?你用它吗
  • 大O表示法在计算机科学中有什么大不了的