鉴于今天的处理器代码膨胀是否重要?

时间:2014-02-13 05:59:19

标签: c# java c++ visual-c++

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

2 个答案:

答案 0 :(得分:4)

如果“代码膨胀”是指代码不太可读且不必要的复杂,“代码膨胀”的主要成本是开发时间较长,而不是代码较慢。这并不意味着在效率方面永远不会有成本,但有时更清洁的代码更慢。所以,我会说代码膨胀并不一定意味着代码更慢或更快,除了不可读性可以阻止人们以高效的方式编码,因为理解代码和优化性能的障碍更高。

如果代码膨胀,你的意思是算法效率,它可能取决于你在做什么。无论处理器的速度有多快,大型数据集的性能曲线为O(e ^ n)的东西都会变慢。也就是说,我通常以n的大小为基础。如果我知道我的数据集会很小(一个带有7个项目的硬编码下拉菜单),那么如果我正在进行线性搜索O(n),我不会太担心在O(log(n))中进行二进制搜索。但是如果可能的话,我通常会更快地做到这一点。

Big-O-Notation,以防我说希腊语:https://en.wikipedia.org/wiki/Big_O_notation

答案 1 :(得分:1)

当然,程序中使用的字符数,甚至不是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
//----------------

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