如何将所有处理器核心用于x64应用程序

时间:2016-04-24 09:37:57

标签: c# cpu-cores

我有一个比较两个数组的简单代码:

private static $translate = array( 'Introduction' );

是否有任何方法可以使用处理器的所有内核来比较这两个数组?

1 个答案:

答案 0 :(得分:1)

如果你真的想加快速度(而不是仅仅使用更多内存),你可以做一些事情。

  1. 不要将File.ReadAllLines()用于两个文件(将整个文件读入内存),而是使用File.ReadLines()作为外部循环中使用的文件。这将只逐行读取该文件,并避免使用大量内存。
  2. 不要多次在字符串上使用ToLower(),而是使用string.IndexOf(),如下所示:var onlyB = linesA.Where(a => linesB.Any(b => a.IndexOf(b, StringComparison.OrdinalIgnoreCase) >= 0));
  3. 使用.AsParallel()并行部分循环。
  4. 把这一切放在一起:

    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秒,并且使用了更少的内存。