绝对流血边缘最快方法剔除4字节的十六进制

1视图(30天)
我在寻找绝对顶级的狗以下速度
如果我有一个8字节字符为例
测试={一千一百一十一万一千一百一十一}
我需要把它分成两部分
x位y位
m位到n位
到目前为止我做过这样的速度测试在一个古老的过程
回答= dec2bin (hex2dec (strcat (word_1 word_2)));
答案=答案(一22);
回答= bin2dec(回答);
然后我跑速度测试在一个新函数
hex2binaryvector
然后使用bi2de函数,我相信是新的
我看到10 x减缓新功能
谁能确认?
1评论
为副总经理
为副总经理 2021年8月1日
假设这些特征向量,你可以得到一块速度只需使用
[word_1, word_2]
而不是strcat ()。
鉴于dec2bin()和hex2dec()似乎在m做数学,我想象你可以滚一个行人hex2bin()函数,它的速度比这两个在一起,但也许不了多少。

登录置评。

接受的答案

为副总经理
为副总经理 2021年8月1日
编辑:为副总经理 2021年8月2日
有这个。
word_1 =“死”;
word_2 =“牛肉”;
回答= hex2bin ([word_1 word_2]);
回答= bin2dec(答案(一22));
使用简化的串联和结合hex2bin转换减少执行时间的70%,给我。有可能更快的方法,但是呃。我把它给别人…可能。
附件是修改后的版本的这个FEX提交:
我认为这将是足够快抓住它,但最后我改变输出特征向量,是不区分大小写的。它不是任何更快。
如果你使用的附加版本bin2dec(),你可以挤出一点。最快的我已经是一个时间减少80%。编辑:更新修复一个愚蠢的错误!我想我有点过于简单化的太多,没赶上它。
1评论
罗伯特·斯科特
罗伯特·斯科特 2021年8月2日
谢谢!
所以你告诉我你的版本的hex2bin更快然后matlab ?
我要给自己速度测试

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年8月1日
绝对顶级的狗在速度(x + n - m + 2)不同8维查找表,每个(102 x 102 x 102 x 102 x 102 x 102 x 102 x 102)条目,每一个都返回一个比特。如果你能承诺大写而不是小写维度可以是70年而不是102年。
可以大大减少内存需求非常简单的计算,但这不会给你绝对顶级的狗表现。
这种方法需要更多的内存比任何公开已知x64的实现可以使用(公众x64设计只定义了48个地址线),但那又怎样?这是速度比的选择。
当你要求绝对顶级的狗,你要求所有的安全措施,包括安全防范要求比你能承受更多的硬件。
1评论
罗伯特·斯科特
罗伯特·斯科特 2021年8月1日
真的已经结果沃尔特
我仅仅是去掉所有hextobinaryvector电话就回到的代码实际上是5线长和10倍加速
显然,hextobinaryvector多少开销
回答= dec2bin (hex2dec (strcat (word_1 word_2)));
答案=答案(一22);
回答= bin2dec(回答);
这个工作快得多

登录置评。

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!