【问题标题】:fast scrambler for 1Gbit Ethernet用于 1Gbit 以太网的快速加扰器
【发布时间】:2019-05-25 08:48:05
【问题描述】:

我必须为 skb->data(套接字缓冲区)添加扰频器。当我尝试对 skb->data 中的每个字节进行加扰时,速度会降低 10 倍。

for (i = 0; i < skb->len; i++){
    skb->data[i] = skb->data[i]^lfsr[i];                   
}

我怎样才能更快地打乱 skb->数据? 更新: 如何在一次迭代中打乱多个字节?

【问题讨论】:

  • 例如,在一次迭代中加扰 4 或 8 个字节。
  • 也使用就地:skb-&gt;data[i] ^= lfsr[i]; 并使用-O2 编译以展开循环/优化。请提供minimal reproducible example,以便可以编译/测试代码

标签: c++ c driver ethernet


【解决方案1】:

您可以移除指针取消引用,使用就地内存操作,并使用 OpenMP 并行化循环,如下所示:

//Compile with -fopenmp flag
const int len  = skb->len;
auto &data = skb->data;
#pragma omp parallel for simd
for(int i=0;i<len;i++)
    data[i] ^= lfsr[i];                   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2010-10-09
    • 2012-03-03
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多