Optimization 优化代码会变得不必要吗?

Optimization 优化代码会变得不必要吗?,optimization,gpu,performance,cpu-speed,moores-law,Optimization,Gpu,Performance,Cpu Speed,Moores Law,如果这是真的,并且CPU/GPU变得越来越快,那么软件(以及,通过关联,您的软件开发人员)是否仍然会将边界推到您仍然需要优化代码的程度?或者,对于您的代码来说,一个简单的阶乘解决方案是否足够好(等等)?优化不仅仅是速度。摩尔定律不适用于计算机内存。此外,优化通常是编译代码以利用CPU特定指令的过程。这些只是我能想到的一些优化,这些优化不会被更快的CPU解决 计算机的速度越快,我们就越希望它们做得更好 在所有程序员第一次编写最优代码之前,总会有一个优化的地方。与此同时,真正的问题是:我们应该首先优

如果这是真的,并且CPU/GPU变得越来越快,那么软件(以及,通过关联,您的软件开发人员)是否仍然会将边界推到您仍然需要优化代码的程度?或者,对于您的代码来说,一个简单的阶乘解决方案是否足够好(等等)?

优化不仅仅是速度。摩尔定律不适用于计算机内存。此外,优化通常是编译代码以利用CPU特定指令的过程。这些只是我能想到的一些优化,这些优化不会被更快的CPU解决

计算机的速度越快,我们就越希望它们做得更好

在所有程序员第一次编写最优代码之前,总会有一个优化的地方。与此同时,真正的问题是:我们应该首先优化什么?

2x处理能力对改善糟糕的n^2搜索的糟糕程度没有多大作用。

如果速度更快有竞争优势,那么它是视频游戏中更多多边形的更快编码,还是金融市场交易的更快算法,优化仍然很重要。你不必比追赶你和你的伙伴的狮子跑得快——你只要比你的伙伴跑得快就行了。

对还是错,在我看来,这已经发生了,而且并不总是坏事。更好的硬件确实为开发人员提供了机会,他们可以将更多精力集中在解决手头的问题上,而不是担心额外的10%的内存利用率


优化是不可辩驳的,但只有在需要的时候。我认为额外的硬件功能只是减少了真正需要的实例。然而,无论是谁编写软件将航天飞机发射到月球,最好对其代码进行优化:)

摩尔定律说明了我们可以在一个芯片上封装多少个晶体管,但没有说明这些晶体管能够随着速度越来越快而切换。事实上,在过去几年中,时钟速度或多或少停滞不前——我们只是不断地在每个芯片上获得越来越多的“核心”(基本上是完整的CPU)。要利用这一点,需要对代码进行并行化,因此如果您“天真地”编写代码,未来神奇的优化器将忙于发现代码中隐藏的并行性,以便它可以将其分配到多个核心(更现实地说,在可预见的未来,您必须大量帮助编译器;-)考虑到计算机的速度比几十年前快了大约一千倍,但总体上看起来并没有快多少,我想说,在我们不再担心优化之前,我们还有很长的路要走。问题是,随着计算机变得越来越强大,我们让计算机为我们做越来越多的工作,这样我们就可以在更高的抽象层次上工作。每个抽象级别的优化仍然很重要

是的,计算机做很多事情都要快得多:你可以在几分钟内画出一个曼德尔布罗特,这过去需要几天的计算机时间。GIF几乎是瞬间加载的,而不是用几秒钟在屏幕上绘制。很多事情都更快。但以浏览为例,速度并没有那么快。文字处理没有那么快。随着计算机越来越强大,我们只是期望更多,我们让计算机做得更多


优化对于可预见的未来将是重要的。然而,微观优化远不如过去重要。现在最重要的优化可能是算法的选择。您选择O(n日志n)还是O(n^2)。。。。等等。

优化总是必要的,因为摩尔定律的缓和因素是。

优化的成本非常低,所以我怀疑是否有必要放弃它。真正的问题是找到任务来利用现有的所有计算能力——因此,我们不会放弃优化,而是在优化我们的处理能力。

最终,我们将无法加快速度,最终我们将受到空间的限制,这就是为什么您会看到3GHZ和多核下的新处理器。。因此,是的,优化仍然是必要的。

在许多情况下仍然需要优化,特别是:

  • 实时系统,cpu时间非常宝贵

  • 在嵌入式系统中,内存就是内存,这是一个很好的选择

  • 多个进程同时需要关注的服务器

  • 在游戏中,三维光线追踪、音频、人工智能和网络可以成为非常苛刻的程序


    • 糟糕的代码总能克服CPU速度

      要获得一个很好的示例,请转到本专栏并向下滚动到描述编程珍珠一书的部分。这里有一个图表显示,对于某种算法,带有4.77MHz 8位处理器的TRS-80如何击败32位Alpha芯片

      当前的加速趋势是增加更多的内核,因为要使单个内核运行得更快是很困难的。因此,聚合速度提高了,但线性任务并不总是受益

      “没有暴力和无知无法克服的问题”这句话并不总是正确的。

      :

      软件变得比硬件变得更快更慢


      另一个更严肃的问题是:随着计算模型转向并行处理,代码优化变得更加重要。如果您优化代码2x,并且它在一个盒子上运行5分钟而不是10分钟,那么它可能不会给人留下深刻印象。下一台速度为2倍的计算机将对此进行补偿。但是想象一下你在1000个CPU上运行你的程序。然后,任何优化都可以节省大量的机器时间。和电力。优化和拯救地球!:)

      其他答案似乎集中在问题的速度方面。那很好。我能看到的真正问题是,如果您优化代码,运行它所需的能量就会减少。您的数据中心运行更凉爽,您的笔记本电脑使用时间更长,您的手机使用寿命更长