1

我注意到这在Chapel有效。我可以通过将整数数组转换为domain(int)

var x: [1..4] int = (4,5,6,6);
var d = x : domain(int);

writeln(x);
> {4,6,5}

这非常有帮助,但我想知道是否存在失败的实例,例如在分布式上下文中。

我正在使用的另一个功能是在转换到域时对集合进行重复数据删除。

var y = {11,13,15,15};
writeln(y);
> {15,11, 13}

有没有更有效的方法来做到这一点,或者这是一种首选方法?我无法计时,因为我无法使用足够大的集群 ATM

4

1 回答 1

2

我想知道是否有实例会失败,例如在分布式上下文中。

它不应该。像这样表现良好的 Chapel 程序在共享和分布式内存执行上下文中应该在功能上是等效的。当然,性能可能会有所不同(无论好坏,取决于您的数据和计算的分布方式)。

有没有更有效的方法来做到这一点,或者这是一种首选方法?

我怀疑 Chapel 定义了一种首选方法,但这应该是O(n)(元素数量呈线性),所以我认为它应该是合理的,渐近地说。我没有任何直接尝试在 Chapel 或其他语言中优化这个成语的经验,所以我不知道首选的方法。

于 2018-01-08T21:12:18.153 回答