c++ - 将最后 N 个字节移动到数组开头的最快方法?
问题描述
给定一个 8 字节数组(它总是 8 字节)
1 2 3 4 5 6 7 8
和pos
0 到 7 之间的参数
改变数组可能会导致:
[pos 0] 1 2 3 4 5 6 7 8
[pos 1] 2 3 4 5 6 7 8 1
[pos 2] 3 4 5 6 7 8 1 2
因为我们从元素 at 开始pos
,如果我们没有元素,我们会循环回到数组的开头以获取下一个元素
X86 上创建结果数组的最快方法是什么?
背景:
这是一个滚动密钥,它是网络协议的混淆算法的一部分(后来它是对数据等的一些 XOR 操作的一部分)。我
必须将协议实现为客户端,但我无法更改原始算法。
正在处理大量网络流量,算法在循环中逐字节处理它们,同时还修改密钥,这很慢。
目标是一次处理 8 个字节,从而减少开销。
拥有正确的 8 字节密钥,我稍后可以仅使用一条指令将 8 字节网络数据“异或”。
解决方案
推荐阅读
- python - 将日期列一分为二
- filter - 如何在 Grafana 中使用 Table Filter by Value 进行其他图表面板模板查询
- flutter - 选择一个文件(图片、pdf、doc)并上传到服务器flutter android
- node.js - 查看网页上的按钮单击 Microsoft Teams 中的英雄卡
- ansible - Ansible json_query,找不到有效的语法
- html - 为什么 Jquery 删除和淡出不起作用?
- ftp - 使用 Snowpipe 直接从 FTP 到 Snowflake 的连续文件加载
- kubernetes - Kubernetes 在容器之间共享数据
- visual-studio - 从 Visual Studio 扩展文件 (vsix) 创建安装包
- c# - 使用内存流和图像从数据库读取图片经常因内存不足而崩溃