我有一个想法,我正在和一些同事商量。我们都不知道它目前是否存在。
基本前提是拥有一个具有 100% 正常运行时间但可以动态变得更高效的系统。



你在实践中见过类似的概念吗? 批评请...

最佳答案

我认为这个想法是一个有趣的理论辩论,但由于以下原因而不太实用:

  • 为确保新版本的代码运行良好,您需要进行出色的自动测试,这是一个很难实现的目标,也是许多公司未能开发的目标。只有在此类自动测试到位后,您才能继续实现系统。
  • 该系统的全部意义在于性能调优,即 - 代码的特定版本被替换为在性能上取代它的版本。对于当今的大多数应用程序,性能并不重要。意思是,大多数应用程序的整体性能是足够的——想想看,你可能很少发现自己提示“这个应用程序非常慢”,相反,你通常会发现自己提示缺乏特定功能、稳定性问题、UI 问题等. 即使您确实提示速度缓慢,这通常是系统整体缓慢,而不仅仅是特定应用程序(当然也有异常(exception))。
  • 对于性能是一个大问题的应用程序或模块,改进它们的方法通常是找出瓶颈,编写新版本并首先独立于系统进行测试,使用某种基准测试。对整个应用程序的新版本进行基准测试当然也是必要的,但总的来说,我认为这个过程只会发生很少的次数(遵循 20%-80% 规则)。在这些情况下,“手动”执行此过程可能比所描述的系统更容易且更具成本效益。
  • 当您添加功能、修复与性能无关的错误等时会发生什么?您不会从系统中获得任何好处。
  • 结合运行两个版本来比较它们的性能问题比你想象的要多得多——不仅你可能有竞争条件,而且如果输入不是一个合适的基准,你可能会得到错误的结果(例如,如果你得到负载小数据包,即在 90% 的时间内输入是大数据包)。此外,这可能是不可能的(例如,如果实际代码更改了数据,则不能同时运行它们)。

  • 这听起来很有用,实际上“必须”的唯一“环境”是一个“遗传”系统,它自己生成新版本的代码,但这是一个完全不同的故事,并没有真正广泛适用......

    关于unit-testing - 自测系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60478/

    10-16 03:26