AsParallel 究竟是如何工作的?

2023-11-21

对于下面的测试程序来说,它似乎并没有做深蹲。这是因为我正在用一个小列表进行测试吗?

static void Main(string[] args)
{
    List<int> list = 0.UpTo(4);

    Test(list.AsParallel());
    Test(list);
}

private static void Test(IEnumerable<int> input)
{
    var timer = new Stopwatch();
    timer.Start();
    var size = input.Count();
    if (input.Where(IsOdd).Count() != size / 2)
        throw new Exception("Failed to count the odds");

    timer.Stop();
    Console.WriteLine("Tested " + size + " numbers in " + timer.Elapsed.TotalSeconds + " seconds");
}

private static bool IsOdd(int n)
{
    Thread.Sleep(1000);
    return n%2 == 1;
}

两个版本的运行时间均为 4 秒。


任务并行库关心的是静态类型的序列。它应该是IParallelEnumerable<T>由 TPL 处理的操作。您正在将集合投射回IEnumerable<T>你打电话时Test。因此,编译器会解析.Where调用序列System.Linq.Enumerable.Where扩展方法而不是 TPL 提供的并行版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AsParallel 究竟是如何工作的? 的相关文章

随机推荐

  • 在 LINQ 中创建批处理

    有人可以建议一种在 LINQ 中创建特定大小的批次的方法吗 理想情况下 我希望能够以一些可配置数量的块执行操作 您不需要编写任何代码 使用MoreLINQ批处理方法 将源序列分批放入指定大小的存储桶中 MoreLINQ 作为可以安装的 Nu
  • 设置自定义文件夹 Android 下载管理器

    我有一个关于下载管理器的问题 我要从网站下载文件 当我设置默认下载目录 Environment DIRECTORY DOWNLOAD 时 一切正常并且我的下载开始 但如果我尝试更改目录 我的应用程序不会下载该文件 特别是 我希望我的文件进入
  • 如何在 create-react-app 项目中重命名index.html?

    我正在使用 Surge 托管我的 create react app 网站 为了使用客户端路由 您需要将入口点设置为200 html但是当使用 create react app 时它默认设置为index html 在不破坏网站的情况下重命名该
  • Laravel 批量更新

    我正在尝试更新包含每个记录的随机段值的表 vouchers Voucher gt get assume 10K for example foreach vouchers as voucher q UPDATE vouchers set sl
  • 如何使用 pyspark 将字段从 double 转换为 float 并对其进行舍入

    我有两个数据框 其架构如下 books with 10 ratings or more with title root ISBN string nullable true count long nullable false average
  • iCloud:我可以忽略那些禁用 iCloud 的人吗?

    我对 iCloud 的想法有点挣扎 并发布了一个更普遍的问题here 我最大的问题是决定是否应该停止将用户数据放入应用程序沙箱中的旧文档文件夹中 为了说明我的问题 The docs据我所知 不要给出答案 假设我有一个处理不同 txt 文件的
  • 变量值是否改变

    如何在 javascript 中查找变量的值是否更改 Ehm var testVariable 10 var oldVar testVariable if oldVar testVariable alert testVariable has
  • 如何将 CSV 文件导入 Firebase

    我看到我们可以将 json 文件导入到 firebase 中 我想知道是否有办法导入 CSV 文件 我的文件可能包含大约 50K 甚至更多记录 大约 10 列 在 firebase 中拥有这样的文件是否有意义 我无法回答在 Firebase
  • python-ldap OS X 10.6 和 Python 2.6

    尝试为我的 Django 项目安装 python ldap 到目前为止尝试过 easy install pip 以及自己构建 但仍然遇到相同的错误 dlopen Library Python 2 6 site packages ldap s
  • 让 Gii 在 Yii 2.0 上工作

    我下载了高级模板 将其解压并更改了后端和前端的根文档 但我似乎不知道如何让 Gii 执行增删改查操作 Composer JSON 中有 require 和 require dev 字段 我在它们两个中都包含了 gii 并且分别在每个字段中包
  • 始终允许本机数据库查询

    在 Excel 2013 中 如何更改选项 或者是否可能 以始终允许本机数据库查询 有人可以指导我如何设置吗 我还没有足够高的声誉来对 user2676140 的答案发表评论 但为了防止有人来到这个线程寻求 Excel 我可以利用它2016
  • 如何在C中将数组拆分为两个数组

    假设我有一个 C 数组 int array 6 1 2 3 4 5 6 我怎么能把它分成 1 2 3 and 4 5 6 使用 memcpy 可以吗 谢谢你 nonono 当然 最简单的解决方案是使用分配两个新数组malloc然后使用mem
  • JUnit TestCase 对象实例化

    是一个新的 或不同的 实例TestCase对象用于运行 JUnit 测试用例中的每个测试方法 或者所有测试都重复使用一个实例 public class MyTest extends TestCase public void testSome
  • 为什么 Eclipse 3.2 在启动时抛出错误

    我有一台 Windows 32 位计算机 刚刚下载了 Eclipse 3 2 SDK 但无法启动 它立即将以下错误抛出到日志文件中 我尝试用 java 1 5 VM 启动它 但仍然没有任何运气 有任何想法吗 谢谢 SESSION 2012
  • 使用 SSHTunnelForwarder 通过 SSH 连接到 MySQL 数据库

    我正在尝试在 python 中通过 ssh 连接到 mysql 数据库 但出现错误 我将以下内容保存在 python 文件 forward py 中 我的代码如下 转发 py from sshtunnel import SSHTunnelF
  • android:创建滚动时折叠的布局

    I need a layout view1 which on scrolling listview gets collapsed so that listview have full screen height 根据您的要求使用折叠工具栏布
  • 解决 bash 脚本中的 sys.excepthook 错误

    我编写了一个 bash 脚本 它完全按照我想要的方式执行 但排除了以下错误 close failed in file object destructor sys excepthook is missing lost sys stderr 我
  • 是否可以使用 javaagent 运行 Play Framework 2.0 服务器?

    我希望能够使用 javaagent 运行 Play Framework 2 0 服务器 网络上的一些资源 参见here and here 建议这可以简单地通过附加来完成 javaagent path to agent jar to play
  • 为什么删除迁移运行我的应用程序?

    我在过去几个月进行了一些版本升级 现在我注意到当我使用 remove migration 删除我恢复的迁移时 它首先运行我的应用程序 我注意到 因为我们在启动内更新数据库 所以我遇到了无法删除迁移的情况 因为每次我尝试删除迁移时 它都会自动
  • AsParallel 究竟是如何工作的?

    对于下面的测试程序来说 它似乎并没有做深蹲 这是因为我正在用一个小列表进行测试吗 static void Main string args List