我有一个比较两个数组的简单代码:
private static $translate = array( 'Introduction' );
是否有任何方法可以使用处理器的所有内核来比较这两个数组?
答案 0 :(得分:1)
如果你真的想加快速度(而不是仅仅使用更多内存),你可以做一些事情。
File.ReadAllLines()
用于两个文件(将整个文件读入内存),而是使用File.ReadLines()
作为外部循环中使用的文件。这将只逐行读取该文件,并避免使用大量内存。string.IndexOf()
,如下所示:var onlyB = linesA.Where(a => linesB.Any(b => a.IndexOf(b, StringComparison.OrdinalIgnoreCase) >= 0));
.AsParallel()
并行部分循环。把这一切放在一起:
var linesA = File.ReadLines(Path.Combine(directory, "array1.txt"));
var linesB = File.ReadAllLines(Path.Combine(directory, "array2.txt"));
Stopwatch sw = Stopwatch.StartNew();
var onlyB = linesA.AsParallel().Where(a => linesB.Any(b => a.IndexOf(b, StringComparison.OrdinalIgnoreCase) >= 0));
进行这些更改后,我的测试程序从约3.8秒变为~0.6秒,并且使用了更少的内存。