c++ - 1Gbit 以太网快速扰码器

标签 c++ c driver ethernet

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

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

如何更快地打乱 skb->data? 更新: 如何在一次迭代中打乱多个字节?

最佳答案

您可以删除指针取消引用,使用就地内存操作,并使用 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];                   

关于c++ - 1Gbit 以太网快速扰码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943074/

相关文章:

java - 在 Windows 和 Android 上使用 FTD2xx 驱动程序

c - 为 Pro Micro 编写 Windows 驱动程序

c++ - 从 const 引用 move 构造

c++ - 如何使用 re2 获取部分匹配项的数量

c - 为什么 sizeof(void) == 1?

c - 如何允许使用 scanf 输入空格?

c - 函数 ‘getline’ 的隐式声明在一个代码中引发警告,但在另一代码中未引发

c++ - boost 获取锁失败

c++ - 我应该使用哪个 TLS 库,可移植性是个问题

java - 驱动程序类中的 Arraylist 未解析为变量