百科问答小站 logo
百科问答小站 font logo



单机游戏《戴森球计划》从立项一开始就将优化放在很高的位置,为什么没有「过早优化是万恶之源」的问题? 第1页

  

user avatar   iGrfx 网友的相关建议: 
      

“过早优化”应该是指目前没这个症状,你也不确定以后会不会遇到这个问题,单纯为了“优化”而优化。

如果你对遇到的技术问题肯定以后要面对,那这显然不是“过早”优化,而是未雨绸缪。


user avatar   noslopforever 网友的相关建议: 
      

个人理解,简单说,范畴不同。

成功的验证过程,并不代表着整个过程中不存在某个个体的过早优化。

而某个个体执行了一次过早优化,也并不影响整个项目有一个成功的验证过程。


以下详细展开分析过程:


词语是信息的凝聚和压缩,而同时也必然带来信息的损失。

“优化”这个词语在不同语境下含义未必一致。

要明确问题,我们最好回到各自的上下文。


先说,“过早优化是万恶之源”:

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

结合上下文看,这句话里“premature optimization ”的指向是非常明确的:

wrong place:典型如,这段代码并未出现在“热点地区”,针对每逻辑帧仅占0.0001ms的调用去优化半个月……还因此固化了一系列假设,因而影响了其它模块的设计自由度……

wrong times:典型如,兴高采烈优化完,做了个自己觉得完美到不能再完美的方案,提交甲方后,需求改了,整个模块废弃。

为什么会出现错误的地点、错误的时间呢?

比较直接的原因,个人感觉,很大的可能是对当前模块目标本身的不明确:不明确当前模块在整个系统中所处的地位、亦不明确当前开发过程的目标和路径,因而,也就无法明确当前模块的各种量化目标、甚至连接口都无法确定。(这种不确定,不是说是此开发者有责任,只是某种客观的状态,策划那边如果这个想试试、那个也想试试,同样会导致程序设计目标难以明确)

不确定,就有充分的空间去“赌”,赌系统接下来可能的要求,赌团队接下来可能的动向……因而也就基于这些——并不真实存在的——结构和量化指标,产生了“过度设计”和“过早的优化”。

在需求和方向混沌未明的情况下,采取保守一些的策略,比如最小化接口、保持简单、仅完成覆盖需求的最小功能集合,当然未必优雅、未必完美,但是,出了问题好调整,全模块废弃导致的损失也不大。

从减少资源浪费的角度来看,这种“放弃优化”的“保守”,自然也会是相对有利的策略。


再说戴森球的“优化”语境

个人对这个项目并不是很了解,也许会说错,容在下先行道歉。

戴森球前阵子粗略看了篇文档讲他们的开发过程,貌似提到了他们一开始就开展了针对性的技术验证。不知道这个是不是就是题主所说的“将优化放在高位”。

验证过程本身是一个循环迭代过程,当前的工作结果汇集起来,核心团队根据这些信息调整方案、固化框架,工程师再根据新的动向进行调整,如此往复多次。

如果这个过程名为“将优化摆在重要位置”,那么,这个的涵义显然不是过早优化的那个涵义。

举个例子就好理解了(这个例子完全是脑补的,只为解释问题):

假如,球体的分割方案做过多个版本。

假如,第一个版本做的时候,要求是重点验证分割后球体的渲染性能,不存在对内存io的需求,某位开发者却仍然给自己加了诸如内存优化、io优化等一系列工作量。

结果,第一版方案,由于性能就没达标,整体被推翻,此君的所有这些内存和io相关的工作都浪费了。

假如发生了这样的事情,那就是说,对于这位开发者而言,仍然进行了“过度优化”。

但是,整个验证过程却仍然达成了目标:即,第一版方案关键指标得到量化,并基于量化结果被淘汰。

因而,就有了一开始的结论:两个“优化”所述的语义,范畴不同。


验证阶段是完全可能对目标模块提出明确的量化指标要求的。比如单次执行在10ms内、同时内存占用在50MB以内。

模块设计过程中,考虑到这些指标做出的设计,也许可以被称为优化,但显然不是过早优化

——因为目标是明确的、已知的,而不是基于个人的主观想象。

也许,这就是语义发生混淆的地方吧?




  

相关话题

  为何游戏圈似乎总有人认为大多数人需要的是单机游戏? 
  如何评价Epic CEO:若Steam答应88%分成,就停止新游独占? 
  steam下载时这样代表了什么? 
  游戏制作过程中,2D 比 3D 需要更多的资金和人力吗? 
  口袋妖怪有哪些好的交通兽? 
  怎样评价很多单机游戏里主角(玩家角色)可以随意进入民居甚至顺手牵羊的行为? 
  作为一名游戏开发者,自己是否应该成为这个游戏类型的资深玩家? 
  侠盗飞车五可以在现有存档上再开一个存档吗? 
  如何看待在《艾尔登法环》爆卖千万份之下,是FS社员工为爱发电,工资不如在便利店打工的情况? 
  漆黑的魅影不小心把炎帝打死了后面还能抓吗?我还没存档? 

前一个讨论
中国税务局和美国国税局在权力上的差别如何?
下一个讨论
为什么发动机至今仍是中国的软肋?我们大概什么时候能改变这一局面?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利