php - 'clean code' 的性能影响

标签 php performance refactoring separation-of-concerns

在我的工作场所,我们计划对我们的核心产品进行重大重构,这是一个具有多个“模块”的网络应用程序。我引用那句话是因为这是我们的主要关注点之一:模块并不是真正的模块,整个东西是整体的。该应用程序是用 PHP 编写的,带有 smarty 模板并使用 Pear 访问 MySQL 数据库。我们并不真正关心数据库独立性,但如果这不需要几个月的时间来实现就好了。

我们主要担心的是开发时间/成本呈指数级增长,因为错误在不相关的地方突然出现,并且没有可靠的通用架构来依赖以获得最常见的功能(每个模块基本上是从以前的模块复制/粘贴一个,然后适应)。

对web MVC原理有一定的了解,主要是ASP.NET MVC。我喜欢它提供的干净分离和可测试性。然而,当在本地机器上尝试这个时,应用程序比它应该的要慢得多。

好了,介绍到此为止,下面是问题: - 我应该依赖缓存模块吗?这是否消除了使用良好架构提供的大部分开销?类似 APC 的东西。

  • 申请主要是阅读。写入主要是单个值(更改记录上的单个字段)。任何擅长此的 PHP OR/M?
  • 也在寻找灵活的 MVC 框架。我知道 Zend、CakePHP,也许还有 Symfony?

棘手的部分是我们没有能够进行完全重写的奢侈。我们将不得不逐步改进当前非常困惑的代码库。这必须在编写新代码或修复错误时完成。我真的非常想做的一件事是在修复新错误之前为它编写回归测试,以防止它以后再次弹出(这种情况偶尔会发生)。

我目前正在考虑的堆栈包含:

  • 选择的 MVC 框架
  • 日志记录(log4php?)
  • 选择 OR/M(不必是动态的,代码生成也可以)
  • 选择的 IoC 容器
  • Smarty Templating,也许是抽象的,因此我们可以在需要时将其关闭。
  • 选择的操作码缓存(我们现在正在使用一个,忘了哪个,必须问系统管理员)

让我担心的要点是在 PHP 中创建干净代码的性能影响。看到它是一种与 .NET/Java 网络堆栈之类的东西相对的解析语言,为其他内联代码创建抽象(在不同文件中强制分离)可能会在另一个层面上产生新问题。


注意:如果您提出更合适的标签,请重新标记,我不确定当前的标签。

最佳答案

拥有干净的设置通常不是性能问题。大多数性能都花在了数据库或您正在与之通信的其他外部系统上。

除了这些,通常还有一两个热点可能值得优化,但为此您应该从干净的设计开始,然后使用分析器(如 XDebug 或 ZendDebugger)来识别瓶颈。

干净的软件设计比“优化”设计带来的 0.01% 的性能提升重要得多。通常,购买和运行更多硬件比担心无法维护的“优化”代码库更便宜。

关于php - 'clean code' 的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1809174/

相关文章:

refactoring - 某种全站 CSS 检查器

php - 许多网址的Javascript iframe加载时间功能

php - 从复选框中获取选中的值,即从数据库中获取数据

c++ - 循环复制是否比 memcpy() 效率低?

performance - 如何提高 ElasticSearch 中的过滤器性能?

javascript - 重构确定数字是否以十、百、千等为单位的基本代码

c# - 更优雅的嵌套 Linq 查询解决方案?

php - 将数组值翻转为数组键的函数?

PHP 在 switch 语句中查询数据库

PHP + mySQL + Pdo 查询速度性能