加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中交换两个数组值的最有效方法

发布时间:2020-12-16 06:08:12 所属栏目:大数据 来源:网络整理
导读:我很好奇在Perl中交换数组中两个元素的最有效方法是什么. 假设我想分别用3和5的索引切换元素,那么最快的方法是什么? 我的想法是这样的: @array[3,5] = @array[5,3]; 这非常有效吗?我希望如果这两个数组值包含大量数据,那就不会有什么不同.我希望后端能够
我很好奇在Perl中交换数组中两个元素的最有效方法是什么.

假设我想分别用3和5的索引切换元素,那么最快的方法是什么?

我的想法是这样的:

@array[3,5] = @array[5,3];

这非常有效吗?我希望如果这两个数组值包含大量数据,那就不会有什么不同.我希望后端能够改变指针,而不进行任何实际的复制.那是对的吗?

解决方法

你是什??么意思“大量的数据”?如果您指的是对大型数据结构的引用,那么您的工作方式并不重要;它会很快疯狂. (每次交换不到一纳秒.)所以我假设你的意思是“大字符串”.

您发布的代码将复制字符串.您可以使用Data::Alias避免这种情况.

use Data::Alias;
alias @array[3,3];

或者如果你想避免Data :: Alias的语法魔法,你可以用一点XS做同样的事情:

void swap_array_elements(AV * av,IV ix1,IV ix2) {
   SV ** p_ele1 = av_fetch(av,ix1,1);
   SV ** p_ele2 = av_fetch(av,ix2,1);
   SV * sv = *p_ele1;
   *p_ele1 = *p_ele2;
   *p_ele2 = sv;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读