性能:存储一个大的mysql结果在类vars VS结果数组


performance: store a large mysql result in class vars VS result array

大家好,

我想知道什么更快。建议我们有一个大的数据库表,大约有50列,并有一个类来处理这些列。

类构造函数加载所有字段——我的问题由此开始。

将每列存储在自己的类变量中是否有用,或者这只是不性能?在这种情况下,我已经有一个数组,例如$result,其中键是表列。

还是这无关紧要?

我试着写一个基准,但我只有一个vServer测试,所以结果不是很清楚。

是一个一次性的函数,存储在类变量值更快,然后搜索整个数组的每个'get'方法?

Thanks in advance:)

注:PHP 5

我认为你的问题的答案是"这并不重要"。

就应用程序性能而言,您所谈论的代码—在内存中循环迭代50次并在内存中操作数据,检索类数据或从关联数组中检索数据—非常快。如此之快,以至于在正常情况下几乎无法测量差异。为了注意到employee::$id, employee::$nameemployee::$result['id'], employee::$result['name']之间的任何差异,您必须处理极端情况—例如,包含数百万列的$result数组。请看这个基准。

另一方面,从设计的角度来看,有一些权衡——通过将结果映射到类变量,您可以隐藏业务逻辑,并创建一致的接口。例如,如果您的雇员类需要根据数据库字段monthly_salary计算annual_salary,您可以创建另一个类变量"annual_salary",并且客户端代码始终保持一致-它是employee::annual_salaryemployee::monthly_salary,而不是employee::result['monthly_salary']employee::annual_salary