首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可靠的原则可以用于高性能代码吗?

可靠的原则可以用于高性能代码吗?
EN

Stack Overflow用户
提问于 2020-12-17 11:33:44
回答 1查看 128关注 0票数 5

我曾经在一个专门研究高性能C++代码的团队中工作。为了从代码中榨取每一点性能,使用了不明显和微妙的技巧,使得代码难以阅读。Robert C. Martin的"Clean Architecture“一书宣传了可靠的体系结构原则:通过依赖反转、单次使用原则等实现代码的解耦。额外的层和严格遵守接口似乎会阻碍某些技术以获得更好的性能。人们必须在高性能和固态架构之间做出选择吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-19 08:29:30

人们必须在高性能和固态架构之间做出选择吗?

当然,这个问题的唯一合理答案是,这取决于您所说的高性能是什么意思。但是这个答案暗示了SOLID和性能是有某种关联的。

公平地说,OOP原则和模式通常不关注性能,也就是说,它们的目的不是为了提高甚至保持任何特定的性能水平。甚至可以公平地说,在大多数常见的OO语言中,实现这些OOP目标的最常见的机制会降低性能(尽管是轻微的)。

另一方面,公平地说,在大多数关于这些实践的文档中,性能并不是一个特定的目标;因此,没有什么可以阻止您将它们应用于性能关键型应用程序。

我发现在某种程度上修改这个问题是有用的,以便引起有趣的答案。例如,

是高度优化的代码,其可读性与允许做出一些性能让步的代码一样好吗?

显然不是。可读性、可维护性、可扩展性等都不是免费的。为什么他们应该是呢?在软件工程中没有免费的午餐。一切都是权衡。如果你不能牺牲一盎司的性能,为什么你要期望最高的代码质量呢?性能是机器的语言。质量是人类的语言。这两者之间总是存在阻抗不匹配。

您不应该做的一件事是得出这样的结论:如果可以通过违反原则来提高性能,那么可以忽略原则。很少能找到性能是主要关注点的应用程序。在人们认为它是的大多数应用程序中,事实并非如此。即使在性能至关重要的应用程序中,这也不是唯一需要考虑的问题。例如,如果计算错误,瞬时计算就没有什么价值。当普通程序员无法理解计算时,计算出错的可能性要大得多。

软件工程中的一切都是权衡。只是不要混淆相对值和绝对值。标题的答案是肯定的,但您可能需要针对您应用的原则,以及在哪里。性能并不能免除你对质量的考虑。这只会让你的工作变得更加复杂,因为除了质量之外,你还必须考虑性能。

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

https://stackoverflow.com/questions/65334365

复制
相关文章

相似问题

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