我开发了多个巨大的数组激烈计算的算法。 现在,我已经使用PHP数组来完成这项工作,但是,它似乎比什么我需要它要慢一些。 我想使用的MySQLi表和PHP数组转换成数据库行,然后开始计算,解决了速度问题。
在第一步,当我被转换20×10 PHP数组成200行含有数据库零的,花了较长的时间。 下面是代码:(基本上下面的代码生成一个零矩阵,如果你有兴趣就知道了)
$stmt = $mysqli->prepare("INSERT INTO `table` (`Row`, `Col`, `Value`) VALUES (?, ?, '0')");
for($i=0;$i<$rowsNo;$i++){
for($j=0;$j<$colsNo;$j++){
//$myArray[$j]=array_fill(0,$colsNo,0);
$stmt->bind_param("ii", $i, $j);
$stmt->execute();
}
}
$stmt->close();
该注释的线 “$ myArray的[$ J] = array_fill(0,$ colsNo,0);” 将生成阵列非常快,而在接下来的两行填写该表,花了很长的时间。
阵列时间:0.00068秒
库MySQLi时间:25.76秒
还有很多更计算剩余的和我甚至修改许多部位后,可能变得更糟担心。 我搜索了很多,但我无法找到阵列是一个更好的选择或MySQL表的任何答案吗? 有没有人做过或知道任何这基准测试?
我真的很感激任何帮助。
提前致谢
更新:
我做了以下测试了273 * 273的矩阵。 我创建了两个版本相同的数据。 第一个,二维PHP阵列和第二一体,具有273 * 273 = 74529行的表,二者均含有相同的数据。 以下是用于从两个类似检索数据的速度试验结果[在这里,找出哪些特定行的列(或多个)具有等于1的值 - 的其他列都是零]:
- 花了0.00021秒的阵列。
- 花了0.0026秒为mysqli的表。 (超过10倍慢)
我的结论是坚持到阵列,而不是将它们转换成数据库表。
最后要说的,在情况下,所提及的数据被存储在数据库表中的第一位,产生的阵列,然后使用这将是更慢得多,如下所示(由于较慢的从数据库检索数据):
- 花了0.9秒的阵列。 (超过400倍更慢)
- 花了0.0021秒为mysqli的表。