首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >培养一个每个人都可以尝试任何想法使软件运行更快的时间段?

培养一个每个人都可以尝试任何想法使软件运行更快的时间段?
EN

Software Engineering用户
提问于 2011-05-09 04:45:00
回答 6查看 717关注 0票数 16

有时,软件性能技巧是从方法和彻底的搜索中发现的。有时,尝试疯狂的想法需要发散的思维和勇气。有时候,一个想法只是一个开始,需要通过大量的努力工作来遵循。

如何培养一个时间周期,让每个人都能尝试不同的想法,以提高我们正在工作的软件的性能?团队中的每个人都至少有几个月的软件经验,并且非常擅长它。

你同意发散思维有助于找到提高软件性能的方法吗?为什么?为什么不行?

什么技术将使我们能够迅速地尝试一个优化的想法?测试是否需要快速的编码速度才能获得好的结果?

最后,应该分配多少“时间”来确保好的结果,而不造成松懈的可能性?

有必要进行实验来证明“一种更快的方法”的存在吗?(由2011-06至07年度增补)

相关信息:

(仅限于2011/06/07年度,团队规模为2-4名开发人员,没有专门的QA。开发人员完成的所有代码、单元测试和性能测试。由于项目的性质,分析器结果在显示比例执行时间方面非常有用,即使它没有显示出单个瓶颈。)

EN

回答 6

Software Engineering用户

回答已采纳

发布于 2011-05-09 05:08:03

你最好的选择是用剖析器识别热点,并作为一个团队讨论如何修复热点。

你必须能够衡量和记录改进(所以这不仅仅是猜测),并作为一个团队确保人们知道什么是修复和如何解决。

让程序员疯狂地对代码库进行尝试,意味着您无法控制正在发生的事情,以及它是否有效。

票数 21
EN

Software Engineering用户

发布于 2011-05-09 04:59:07

程序员倾向于聪明和有创造力(因为这些都是编程能力的先决条件),所以在解决问题时让他们尝试广泛的想法总是很好的。然而,在试图提高性能时,有两件事是很重要的(我假设“性能”是指降低执行速度):

  • 算法优化往往比任何其他优化都更有效。作为一个简单的例子,无论您对bubblesort实现做了什么,只要有足够的数量,一个极慢的快速排序实现最终都会更快。
  • 做任何与性能相关的事情都是完全没有意义的,除非你测量(概要)并根据结果做任何事情。

我的主要观点是,在你开始一段疯狂的实验之前,确保你和每个人在这些事情上是一致的,这一点很重要。事后发现你经验不足的同事正在尝试一些根本行不通的事情,这总是令人遗憾的(而且你本可以提前告诉他们这一点)。

票数 6
EN

Software Engineering用户

发布于 2011-06-07 03:36:21

我们在前几支球队做过的一个成功的练习就是有了“深潜”的概念。一些人会聚集在会议室,确定一些用户场景,然后开始执行代码或查看分析器日志。在某些情况下,数据清楚地显示了瓶颈,这使得我们能够让怀疑者相信他们自己的代码中确实存在一些特殊的问题!为了使这项工作取得成功,我们遵循了一些关键原则:

  1. 尝试关注怀疑瓶颈的关键场景或代码路径。不要浪费时间来优化那些不需要优化的东西(如果它没有坏的话.)
  2. 保持小组规模小,并专注于那些最了解代码的人。不要忘记包括测试人员和项目经理的特性-他们有关键的洞察力,可以受益于参与,或收集信息,以使他们能够更好地测试。
  3. 通过让区域所有者给出一个高级别的体系结构框图和该区域的概述来开始会话。关键组件是什么,并简要描述它们所做的工作。当我们深入到代码中时,你会惊讶于有多少次方框图没有反映现实。(实际引用:“我不知道我们还在使用那个组件,我以为我们几年前就把它处理掉了!”)
  4. 期望找到功能性的bug以及perf问题。这是一件好事。而且,有时候,你不会发现任何有意义的东西。这也是件好事。
  5. 预计会有几次长时间的会议。这些是工作会议。舒服点,然后努力解决它。当你们都能长时间合作的时候,你们就能完成更多的工作。
  6. 记笔记,记好笔记。如果使用缺陷跟踪数据库,请考虑立即打开问题以跟踪问题,即使这些问题的优先级较低。

避免让整个团队参与“性能提升”。由于索尔比约恩·拉文·安德森在另一个答案中提到的原因,这些结果通常没有管理层期望的结果。你会在一些领域获得巨大的收益,在其他人们不熟悉的领域得到回归,很难预测/跟踪你应该得到多少“你完成了”的收益。这是一次与管理层的富有挑战性的谈话。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/74781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档