使用并行集合就地转换数组

2024-01-06

当拥有一组对象时,通常需要(例如出于性能原因)更新(替换)某些对象。例如,如果您有一个整数数组,您可能希望将负整数替换为正整数:

// Faster for primitives
var i = 0
while (i < a.length) {
  if (a(i) < 0) a(i) = -a(i)
  i += 1
}

// Fine for objects, often okay for primitives
for (i <- a.indices) if (a(i) < 0) a(i) = -a(i)

使用并行集合库执行此类修改的规范方法是什么?


就并行阵列而言,这是一个疏忽。平行transform并行数组可能会包含在下一个版本中。

但是,您可以使用并行范围来做到这一点:

for (i <- (0 until a.length).par) a(i) = computeSomething(i)

请注意,并非所有可变集合都可以通过这种方式进行修改。一般来说,如果您希望修改某些内容,则必须确保其正确同步。在这种情况下,这对于数组来说不是问题,因为不同的索引将修改不同的数组元素(并且最后调用者可以看到更改,因为并行操作的完成保证了所有写入都对调用者可见)。

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

使用并行集合就地转换数组 的相关文章

随机推荐

  • WPF RichTextBox 附加彩色文本

    我正在使用RichTextBox AppendText函数将字符串添加到我的RichTextBox 我想用特定的颜色设置它 我怎样才能做到这一点 试试这个 TextRange tr new TextRange rtb Document Co
  • 如何判断今天的日期是否在另外 2 个日期之间?

    我不太能得到正确的语法 我只需要一个 IF 语句来检查今天是否在一组日期之间 如果是 则回显 这个应该怎么调整呢 now time Y m d date september 2014 09 01 date october 2014 10 0
  • 使用非官方镜像的 Docker 安全问题

    如何确保 docker 容器的安全 尤其是在使用第三方容器或基础镜像时 使用基础映像时 它可能会启动任何服务或在后台挂载主机文件系统的任意分区 并可能向攻击者发送敏感数据 这是否正确 因此 如果我使用第三方容器 Dockerfile 证明该
  • WebDriverException:未知错误:尝试启动 Chrome 浏览器时 DevToolsActivePort 文件不存在

    我尝试使用 URL 启动 chrome 浏览器启动后什么也不做 1 分钟后我看到以下错误 Unable to open browser with url https www google com Root cause org openqa
  • Android 远程视频与 Titanium

    大家好 我正在尝试在 Android 手机上播放我们的网络服务器上托管的视频 我已经为 iPhone 构建了这个 并且效果很好 然而 Droid 是一个不同的问题 我没有看到视频 只是看到黑屏 没有错误或任何东西 我正在使用的代码是 act
  • Windows 10 开发者模式

    我有 Windows 10 Pro 从 Windows 8 1 Pro WMC 升级 我看到 不使用开发人员功能 选项呈灰色 禁用 无法选择 并且选择了 旁加载应用程序 选项 为什么我不能选择 不使用开发者功能 我怎样才能启用它 这主要是由
  • Postgresql 上 Bytea 数据类型的唯一约束

    我将图像存储在 Postgresql 的 Bytea 数据类型上 我确实知道不建议这样做 但我确实认为组织图像的好处超过了我使用的缺点 我面临的问题是我想确保只插入唯一的图像 但是当我创建唯一的约束时 出现以下错误 错误 索引行需要 281
  • 如何将 Q.all 与 chai-as-promised 一起使用?

    chai as promised 文档有以下在同一测试中处理多个 Promise 的示例 it should all be well function done Q all promiseA should become happy prom
  • 如何在 docker-compose.yml 中存储 server_key_rsa ?

    我需要将 sftpServer 的 server key rsa 存储在 docker compose yml 中 但我不知道如何存储它 现在看起来是这样的 BEGIN RSA PRIVATE KEY My Key bla bla bla
  • 使用 JQuery 验证来验证字段而不进行任何提交?

    我有一个 HTML5 Web 应用程序 其中包含许多用户输入的字段 我想在将这些字段发送到服务器之前在 javascript 中对这些字段进行一些客户端验证 容易吧 只需使用JQuery验证插件 http jqueryvalidation
  • Ember:在 ArrayController 中使用 itemController 不起作用(TypeError:无法调用 null 的“lookup”方法)

    按照以下示例Ember http emberjs com api classes Ember ArrayController html在我的 ArrayController 定义中设置 itemController 会导致阻塞错误消息 Ty
  • 使用 xpath 和 DOMDocument 检索元素

    我在下面的 html 代码中有一个广告列表 我需要一个 PHP 循环来获取每个广告的以下元素 广告网址 的 href 属性 a tag 广告图片网址 src 属性 img tag 广告标题 html 内容 div class title t
  • 如何将 typescript 定义文件添加到 npm 包中?

    有没有办法添加打字稿定义 d ts文件 直接到一个纯javascript项目 例如在package json 我找不到任何相关文档 里面有一个页面TypeScript 手册 https www typescriptlang org docs
  • Mule AMQP 传输 3.6.2 社区可能存在的错误

    我一直在追踪一些奇怪的行为 最终成功地将其隔离 我相信这是一个错误 为了重现该行为 我创建了 4 个测试流程 在 4 个不同的 mule 文件中
  • 错误:找不到资源映射||确保首先安装 CRD

    错误 未找到名称的资源映射 ingress srv 名称空间 ingress srv yaml 中的 版本 networking k8s io v1beta1 中的类型 Ingress 不匹配 确保首先安装 CRD 我是 Kubernete
  • Swagger Codegen basePath 被忽略

    我正在尝试使用生成一些网络服务定义Swagger 代码生成 2 2 1 所有配置都正常工作 并且我的类已正确生成 yaml定义 为何选择该物业basePath被忽视了 My RestController仅使用生成paths定义 https
  • 使用 Chart.js 根据时间字符串绘制单圈时间

    我正在尝试使用 Chart js 绘制一个折线图 显示一系列单圈时间的趋势 但我正在努力将时间字符串解析为正确的格式 我有一个带有这样的单圈持续时间 分钟 秒 毫秒 的时间数组 我将其用作数据集 const times 1 32 599 1
  • Target Boost:: 已导入位置 + 链接错误

    我正在使用 Homebrew 在 MacOS Mojave 上安装 LLVM Boost 和 CMake 将我的 LLVM 升级到版本 9 0 0 并将 Boost 升级到 1 71 0 后 CMake v3 15 3 开始抱怨各种库已经具
  • C++ 整数->std::字符串转换。功能简单?

    问题 我有一个整数 该整数需要转换为 stl string 类型 过去我用过stringstream进行转换 这有点麻烦 我知道 C 方法是做一个sprintf 但我更愿意做一个类型安全 呃 的 C 方法 有一个更好的方法吗 这是我过去使用
  • 使用并行集合就地转换数组

    当拥有一组对象时 通常需要 例如出于性能原因 更新 替换 某些对象 例如 如果您有一个整数数组 您可能希望将负整数替换为正整数 Faster for primitives var i 0 while i lt a length if a i