对象与数组

时间:2010-01-12 10:28:15

标签: php mysqli benchmarking

我目前正在网站上工作,并且集中关注加载,处理等方面的效率和速度。

我正在使用mysqli扩展来获取我的数据库位和bob,但我想知道输出数据集的最佳/最有效方法是什么?

目前我正在使用$ mysqli-> fetch_assoc()和foreach()。阅读http://www.phpbench.com后,我知道计算我的数据会有所作为。 (我打算在构建后进行优化)

我的问题是,将结果集转换为php数据更快。创建一个对象?数值数组?关联数组?我的想法是一个对象,但我不确定。

好奇,因为我不熟悉PHP内部:)

3 个答案:

答案 0 :(得分:5)

mysql_fetch_object的评论下,PHP文档中实际上有一个小基准:

SELECT * FROM bench... (mysql_fetch_object)
  

查询时间:5.40725040436
  提取时间:16.2730708122(平均值:1.32130565643E-5)
  总时间:21.6803212166

SELECT * FROM bench... (mysql_fetch_array)
  

查询时间:5.37693023682
  提取时间:10.3851644993(平均值:7.48886537552E-6)
  总时间:15.7620947361

SELECT * FROM bench... (mysql_fetch_assoc)
  

查询时间:5.345921278
  提取时间:10.6170959473(平均值:7.64049530029E-6)
  总时间:15.9630172253

获取对象的速度最慢,获取数字数组可能比使用mysql_fetch_arraymysql_fetch_assoc快一点,但差异可以忽略不计。事实上,mysql_fetch_array同时提取了assoc和numeric,并且它比mysql_fetch_assoc更快,如图所示..但是如果你在演出之后,就不要使用mysql_fetch_object

答案 1 :(得分:1)

来自mysql_fetch_object()

的手册页
  

注意:效果

     

速度方面,该功能与mysql_fetch_array()相同,几乎一样快   mysql_fetch_row()(差异无关紧要)

正如Tatu给出的基准所暗示的那样,存在细微的差别,但请记住,已连续100次查询累计数字。我说你现在不打扰并稍后优化的策略是个不错的选择。

答案 2 :(得分:0)

我相信数值数组可能是最轻量级的,其次是关联数组,然后是对象。我不认为差异会增加太多,所以你最熟悉的语法最好。