2010-01-12 95 views
2

我现在正在一个网站上工作,并且有一个专注于加载,处理等的效率和速度。对象与阵列

我使用mysqli扩展来获得我的数据库位和鲍勃,但我想知道什么是输出我的数据集的最佳/最有效的方式?

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

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

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

回答

5

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

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

0

我相信一个数值数组可能是最轻量级的,其次是关联数组,然后是一个对象。我认为差异不会太大,因此无论您使用哪种语法最适合。

1

mysql_fetch_object()

说明手册页:性能

速度明智的,功能是相同的mysql_fetch_array(),和几乎一样快 和mysql_fetch_row()(的区别是微不足道的)

正如Tatu给出的基准提示,有一个细微的差异,但请记住数字已经从连续的100个查询累计。我会说你现在不打扰并稍后优化的策略是一个不错的选择。