在golang中旋转切片的有效方法

Ale*_*dru 1 reverse go micro-optimization

我需要一个函数来有效地反转golang中的切片.(我的具体需求是反转[]字节的前缀).

我查看了Effective Go中的示例,objdump -Sd并生成了大量的样板来检查数组索引.即使交换效率也太低.

cth*_*m06 6

首先,我必须说:首先是个人资料.这真的是你代码中的瓶颈吗?如果是,您有几个选择.

1)禁用边界检查.我认为有一个未记录的编译器标志,可以转换切片边界检查.我现在找不到它.(编辑:-B根据OP).

2)写出C(或汇编语言)的程序中,你可以写下[586] c和链接在你去包(你需要包括一些头$GOROOT/src/pkg/runtime),就像这样:

#include "runtime.h"
mypackage·swapslice(Slice s) {
    int i, j;
    //Not a real swap loop
    for (i = 0, j = s.len - 1; i < j; i++, j--)
        //swap s.arr[i] and s.arr[j];
}
Run Code Online (Sandbox Code Playgroud)