【问题标题】:Raku .hyper() and .race() example not workingRaku .hyper() 和 .race() 示例不起作用
【发布时间】:2020-05-25 07:32:18
【问题描述】:

以下示例代码应加速 Raku 程序的执行:

for (1..4).race()  {
    say "Doing $_";
    sleep 1;
 }
 say now - INIT now;

我记得,它在前一段时间有效,但现在我总是以 4 秒的运行时间结束。同样使用 .race() 或添加参数也不会改变任何东西。我需要做什么才能同时运行 2 个进程?

【问题讨论】:

  • 这可能是一种回归。您是否尝试过使用 commitable 在不同的版本中运行它?
  • 默认批处理大小为 64。因此,如果您这样运行程序,它将永远不会有足够的条目来填充单个批处理。话虽如此,看起来它与.race(batch => 1) 表现出相同的行为。正在调查。

标签: raku


【解决方案1】:

您应该将race 与命名参数batch 和语句前缀race 一起使用。

say race for (1..4).race(batch=>1)  {
    say "Doing $_";
    sleep 1.rand;$_
}
say now - INIT now;

【讨论】:

  • 我还在测试中使用了命名参数(batch => 1, degree => 2),但这还不够。区别来自前缀“race”(在“for”前面)。谢谢!!
猜你喜欢
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2012-07-05
  • 2013-12-04
  • 2016-08-31
  • 2016-02-25
  • 2015-01-23
  • 2017-09-11
相关资源
最近更新 更多