我正在研究大量数据(500k-1m记录)。我需要在几毫秒内过滤这些记录。
目前我在C#中使用带有FindAll
方法的列表,但从200k记录中过滤记录需要至少1秒。
我使用过类似的东西:
var FilteredRecords = ListofAllRecords.FindAll(row => row["ID"].tostring().StartsWith("value"))
还有其他更快的方法吗(以毫秒为单位)?
答案 0 :(得分:2)
我从你的回复中得到了一个提示,并使用下面的代码解决了我的问题 -
var FilteredRecords = ListofAllRecords.AsParallel().Where(row =>
row.Field<string>("ID").tostring().StartsWith("value"))
现在只花了几毫秒。
答案 1 :(得分:0)
Actualy FindAll是最快的,因为它没有像Where(Linq)那样使用迭代器模式。 您可以尝试的是并行过滤
<?php
$arr = ['@3', 'zpo', 'ahb', '@1', '@7', 'bes', 'kk'];
asort($arr); // Regular sorting
$arr2 = [];
foreach ($arr as $key => $value) {
if (0 === strpos($value, '@')) {
$arr2[] = $value; // Add the value to the secondary array
unset($arr[$key]); // Remove the key from the primary array
}
}
array_merge($arr, $arr2);