【发布时间】:2015-12-16 20:52:56
【问题描述】:
我正在寻找我的脚本中的性能漏洞,也许有人知道一些天才的东西?
实际上我有一个巨大的数组(300 万个数据集),它看起来像这样(简化):
[2]=>
array(11) {
["A"]=>
string(10) "10-12-1995"
["B"]=>
NULL
["C"]=>
NULL
[3]=>
array(11) {
["A"]=>
string(10) "31-12-1955"
["B"]=>
NULL
["C"]=>
string(6) "random"
我的函数必须检查 $StartDate 是否在 $sheetData[$i]['A'] 中。 我还没有找到任何更好的主意,而且检查的时间 > 10 秒 整个数组:(
function searchForDate($StartDate, $sheetData)
{
foreach($sheetData as $key => &$val)
{
if ($val['A'] === $StartDate)
{
return true;
}
}
return null;
}
【问题讨论】:
-
您正在对 300 万个数据点进行线性搜索。你能安排数据按日期排序(或按日期索引)吗?如果是这样,您可以改为执行二进制搜索。假设数据完全在内存中,我看不出任何现代语言在任何现代硬件上都需要 10 秒的明显原因。这是什么语言?
-
您使用的是什么语言或系统?
标签: php performance foreach