我注意到这可以在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}
是否有更有效的方法来执行此操作或这是首选方法?我无法计时,因为我无法访问足够大的群集A.T.M。
答案 0 :(得分:2)
我想知道是否会出现失败的情况,例如在分布式环境中。
不应该。像这样的表现良好的Chapel程序在共享和分布式内存执行上下文中应该在功能上等效。当然,性能可能会有所不同(无论好坏,取决于您的数据和计算的分布方式)。
有更有效的方法吗?或者这是一种首选方法?
我怀疑Chapel定义了一个首选方法,但这应该是 O(n)(元素数量的线性),所以我认为它应该是合理的,渐近地说。我没有尝试在Chapel或其他语言中优化这个习惯用法的任何直接经验,因此我不知道首选方法。