在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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |