发布于2019-11-19 10:11 阅读(1250) 评论(0) 点赞(25) 收藏(5)
使用简单的文件加密/解密进行一些练习,当前仅读取一堆字节,然后一次对每个字节执行适当的位操作,然后将它们写入输出文件。
这种方法似乎很慢。例如,如果我想对每个字节乘以0xFF进行异或,我会遍历每个字节并对0xFF进行异或,而不是做一些魔术,每个字节都会快速进行异或。
有更好的方法来执行位操作而不是一次执行字节操作吗?
无论如何,似乎每个字节都必须是
您可以一次对多个字节进行操作,例如通过对4个甚至8个字节的整数执行XOR操作,从而节省一点时间(没有双关语),从而将与循环管理相关的开销除以大约是4或8倍,但是对于整个算法而言,这种改进可能不会带来可观的收益。
通过读取表中的预先计算的值来替换CPU /语言的“本机”位操作(XOR,Shifts,Rotations等),可以找到更多的改进。但是请注意,这些本机操作通常是经过优化的,并且您必须在设计外部等效操作以及精确测量这些操作的相对性能方面非常勤奋。
编辑:糟糕,我刚刚记下了[Python]
标签,并且在另一个响应中也引用了numpy。
当心... Numpy按位数组建议是合理的,但这全都取决于手头问题的实际参数。例如,在对齐numpy的按位函数所隐含的基础数组时,可能会浪费大量时间。看到这个看起来很相关的堆栈溢出问题。在着眼于XOR操作时,该问题为改进循环等以及进行概要分析提供了许多可行的提示。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/160264/044355f42cfef50cd98a/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!