有时,软件性能技巧是从方法和彻底的搜索中发现的。有时,尝试疯狂的想法需要发散的思维和勇气。有时候,一个想法只是一个开始,需要通过大量的努力工作来遵循。
如何培养一个时间周期,让每个人都能尝试不同的想法,以提高我们正在工作的软件的性能?团队中的每个人都至少有几个月的软件经验,并且非常擅长它。
你同意发散思维有助于找到提高软件性能的方法吗?为什么?为什么不行?
什么技术将使我们能够迅速地尝试一个优化的想法?测试是否需要快速的编码速度才能获得好的结果?
最后,应该分配多少“时间”来确保好的结果,而不造成松懈的可能性?
有必要进行实验来证明“一种更快的方法”的存在吗?(由2011-06至07年度增补)
相关信息:
(仅限于2011/06/07年度,团队规模为2-4名开发人员,没有专门的QA。开发人员完成的所有代码、单元测试和性能测试。由于项目的性质,分析器结果在显示比例执行时间方面非常有用,即使它没有显示出单个瓶颈。)
发布于 2011-05-09 05:08:03
你最好的选择是用剖析器识别热点,并作为一个团队讨论如何修复热点。
你必须能够衡量和记录改进(所以这不仅仅是猜测),并作为一个团队确保人们知道什么是修复和如何解决。
让程序员疯狂地对代码库进行尝试,意味着您无法控制正在发生的事情,以及它是否有效。
发布于 2011-05-09 04:59:07
程序员倾向于聪明和有创造力(因为这些都是编程能力的先决条件),所以在解决问题时让他们尝试广泛的想法总是很好的。然而,在试图提高性能时,有两件事是很重要的(我假设“性能”是指降低执行速度):
我的主要观点是,在你开始一段疯狂的实验之前,确保你和每个人在这些事情上是一致的,这一点很重要。事后发现你经验不足的同事正在尝试一些根本行不通的事情,这总是令人遗憾的(而且你本可以提前告诉他们这一点)。
发布于 2011-06-07 03:36:21
我们在前几支球队做过的一个成功的练习就是有了“深潜”的概念。一些人会聚集在会议室,确定一些用户场景,然后开始执行代码或查看分析器日志。在某些情况下,数据清楚地显示了瓶颈,这使得我们能够让怀疑者相信他们自己的代码中确实存在一些特殊的问题!为了使这项工作取得成功,我们遵循了一些关键原则:
避免让整个团队参与“性能提升”。由于索尔比约恩·拉文·安德森在另一个答案中提到的原因,这些结果通常没有管理层期望的结果。你会在一些领域获得巨大的收益,在其他人们不熟悉的领域得到回归,很难预测/跟踪你应该得到多少“你完成了”的收益。这是一次与管理层的富有挑战性的谈话。
https://softwareengineering.stackexchange.com/questions/74781
复制相似问题