我目前正在网站上工作,并且集中关注加载,处理等方面的效率和速度。
我正在使用mysqli扩展来获取我的数据库位和bob,但我想知道输出数据集的最佳/最有效方法是什么?
目前我正在使用$ mysqli-> fetch_assoc()和foreach()。阅读http://www.phpbench.com后,我知道计算我的数据会有所作为。 (我打算在构建后进行优化)
我的问题是,将结果集转换为php数据更快。创建一个对象?数值数组?关联数组?我的想法是一个对象,但我不确定。
好奇,因为我不熟悉PHP内部:)
答案 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_array
或mysql_fetch_assoc
快一点,但差异可以忽略不计。事实上,mysql_fetch_array
同时提取了assoc和numeric,并且它比mysql_fetch_assoc
更快,如图所示..但是如果你在演出之后,就不要使用mysql_fetch_object
。
答案 1 :(得分:1)
注意:效果
速度方面,该功能与mysql_fetch_array()相同,几乎一样快 mysql_fetch_row()(差异无关紧要)
正如Tatu给出的基准所暗示的那样,存在细微的差别,但请记住,已连续100次查询累计数字。我说你现在不打扰并稍后优化的策略是个不错的选择。
答案 2 :(得分:0)
我相信数值数组可能是最轻量级的,其次是关联数组,然后是对象。我不认为差异会增加太多,所以你最熟悉的语法最好。