我是一个初级软件开发人员,我想知道什么时候才是优化软件以获得更好性能(速度)的最佳时机。
假设软件不是非常大和复杂的管理,那么最好是在开始时花更多的时间来优化它,还是应该只开发正确执行所有功能的软件,然后继续优化它以获得更好的性能?
发布于 2018-03-09 00:39:16
第一件事应该永远是可读性的。如果它慢但易读,我可以修复它。如果它坏了,但可读,我可以修复它。如果它是不可读的,我必须问其他人,它甚至应该做什么。
值得注意的是,当您只关注于可读性时,代码的性能是多么出色。如此之多,所以我通常忽略表现,直到有理由去关心。这不应该被理解为我不在乎速度。我知道。我刚刚发现,只有极少数问题的解决方案在很难理解的情况下才会更快。
只有两件事让我脱离了这种模式:
无论如何,通过让自己认为不应该尝试解决方案来避免分析性瘫痪,因为它可能不是最快的。如果您尝试多种解决方案,您的代码实际上将受益,因为进行更改将迫使您使用一种易于更改的设计。在以后真正需要的地方,灵活的代码库可以变得更快。选择灵活的速度而不是速度,你可以选择你需要的速度。
发布于 2018-03-08 23:27:24
如果一定程度的性能是必需的(非功能性需求),那么从一开始就应该是设计目标。例如,这可能会影响哪些技术可能是合适的,或者您如何在程序中构造数据流。
但是一般来说,在编写代码之前不可能进行优化:先使它起作用,然后使它正确,最后,使它快速。。
在实现大多数功能之前进行优化的一个大问题是,您已经将自己锁定在错误的地方进行次优设计决策。在可维护性和性能之间经常存在(但不一定)权衡。程序的大部分部分与性能完全无关!典型的程序只有少数几个值得优化的热点。因此,在所有不需要性能的地方牺牲可维护性以获得性能是非常糟糕的交易。
优化可维护性是较好的方法。如果您将聪明用于可维护性和清晰的设计,那么从长远来看,您会发现更容易识别关键部分,并在不影响总体设计的情况下安全地优化它们。
发布于 2018-03-09 22:50:41
什么时候才是优化软件以获得更好性能(速度)的最佳时机。
首先,从你的脑海中移除一个概念,即性能和速度是一样的。性能是用户认为性能是什么。
如果应用程序对鼠标单击的响应速度是鼠标单击速度的两倍,并且从10微秒到5微秒,用户不会在意。如果应用程序对鼠标单击的响应速度是鼠标单击速度的两倍,并且从四千年到两千年,用户也不会在意。
如果您将应用程序的速度提高了一倍,并且耗尽了机器上的所有内存并崩溃,用户并不关心它现在的速度是原来的两倍。
性能是对资源消耗进行有效权衡以获得特定用户体验的科学。用户的时间是一个重要的资源,但它从来没有仅仅是“更快”。实现性能目标几乎总是需要权衡,而且它们通常是用时间换取空间,反之亦然。
假设软件不是非常大和复杂的管理
这是个糟糕的假设。
如果软件不是大型的和复杂的管理,那么它可能解决不了一个有趣的问题,用户关心,它可能是超级容易优化。
最好是在开始时花更多的时间来优化它,还是应该开发一个软件来正确地执行所有的功能,然后继续优化它以获得更好的性能?
你坐在一个空白页上,写void main() {},你开始优化了吗?没有什么需要优化的!正确的顺序是:
如果你试图按任何其他顺序去做,你最终会得到错误的代码,这是一个混乱,现在你已经有一个程序产生错误的答案非常快,并抵制变化。
但那里缺少了一步。真正正确的顺序是:
https://softwareengineering.stackexchange.com/questions/367344
复制相似问题