zoukankan      html  css  js  c++  java
  • C#并行编程---PLINQ

     实列:

    Console.WriteLine("Hello World!");
    Console.WriteLine("当前计算机处理器数:{0}", Environment.ProcessorCount);
    ConcurrentQueue<Product> products = new ConcurrentQueue<Product>();
    /*向集合中添加多条数据 可以修改数据量查看Linq和Plinq的性能*/
    Parallel.For(0, 60000000, (num) =>
    {
    products.Enqueue(new Product() { Category = "Category" + num, Name = "Name" + num, SellPrice = num });
    });

    /*采用LINQ查询符合条件的数据*/
    Stopwatch sw = new Stopwatch();
    sw.Restart();
    var productListLinq = from product in products
    where (product.Name.Contains("1") && product.Name.Contains("2") && product.Category.Contains("1") && product.Category.Contains("2"))
    select product;
    Console.WriteLine("采用Linq 查询得出数量为:{0}", productListLinq.Count());
    sw.Stop();
    Console.WriteLine("采用Linq 耗时:{0}", sw.ElapsedMilliseconds);

    Console.WriteLine(DateTime.Now);
    /*采用PLINQ查询符合条件的数据*/
    sw.Restart();
    var productListPLinq = from product in products.AsParallel() /*AsParallel 试图利用运行时所有可用的逻辑内核,从而使运行的速度比串行的版本要快 但是需要注意开销所带来的性能损耗*/
    where (product.Name.Contains("1") && product.Name.Contains("2") && product.Category.Contains("1") && product.Category.Contains("2"))
    select product;
    Console.WriteLine("采用PLinq 查询得出数量为:{0}", productListPLinq.Count());
    sw.Stop();
    Console.WriteLine(DateTime.Now);

    Console.WriteLine("采用PLinq 耗时:{0}", sw.ElapsedMilliseconds);
    Console.ReadLine();

  • 相关阅读:
    【结对开发】电梯调度 一(从电梯布局分配考虑)需求分析及设计思路。
    【结对开发】求一个整数数组的所有子数组中和的最大值。
    【测试用例选取及异常处理】 之 求一个数组中的最大整数。
    互测测评报告
    绩效考核
    冲刺5
    写个烂android一天到晚活累死,
    冲刺3
    冲刺2
    冲刺1
  • 原文地址:https://www.cnblogs.com/tianxujun/p/12294423.html
Copyright © 2011-2022 走看看