OOPS,表现如何?

ana*_*rex 3 php oop

我正在使用php/mysql编写的网站上工作.当我第一次写它的时候,意大利面很多嵌入了html之类的php - 很难维护.

我用OOPS重写了一个很好的模块化结构,现在它更容易维护和扩展.

但是,当使用webwait和siege 测试站点性能时,较新的,结构更好的版本似乎比spaghetti代码版本运行和加载更慢.

装载时间差异接近1秒 - 2.39秒vs 3.81秒

除了PHP代码之外没有其他任何改变 - 不是js,而不是css

那么这里的问题是什么?我应该恢复旧代码吗?这是否发生在其他人身上?

编辑:

  • 我已经使用cachegrind进行了一些分析,包括我认为代码非常好.
  • 我也知道问题不仅仅是OOPS,而是更大的结构等,而且OOP根本不能保证更好的性能.
  • 我也多次运行代码.
  • 我使用了cachecind和kcachegrind,包括,围攻(Rasmus lerdorf在他的drupalcon 2008中关于'简单就是硬'的演讲中概述了大多数工具)

我想知道的是其他人如何处理这个问题.

S.L*_*ott 14

"我应该恢复旧代码吗?"

如果我说恢复,你会说"看,我知道OO是一个被炸的单位,没有人可以制作一个有效的OO应用程序." 那是错的.

如果我说不回复,你会说,"但它的速度慢得令人无法接受."

那么,还剩下什么?

你必须写得更好.直走.重写你的OO,以便它真正起作用.OO不是"魔术" - 它不保证任何东西.有糟糕的面向对象程序和良好的面向对象程序.在你的情况下,你显然还有改进的余地.

因此,获取一些性能分析工具,找出时间已经过去的地方.

另外,不要"优化" - 重写.

很有可能你正在进行某种搜索会花费很多时间.消除搜索.使用更好的容器和集合(哈希映射,集合等)


Jon*_*eet 6

描述代码.我不知道在PHP中如何做到这一点,但它是解决正在发生的事情的唯一合理方法.

有时使代码更优雅会对性能产生不利影响,但通常不会达到这种程度.你需要找出时间在哪里,并解决这个问题.