博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Base62x比Base64的编码速度更快吗?
阅读量:6670 次
发布时间:2019-06-25

本文共 2025 字,大约阅读时间需要 6 分钟。

现在几乎所有企事业单位、政府机构、军工系统等的IT生产系统都会用到Base64编码,从RSA安全密钥到管理信息系统登录入口回跳,目前越来越多的IT系统研发者开始使用 Base62x 替换 Base64.

提供了一种无符号输出的Base64的编码方案,在许多应用场合其纯字母和数字的输出形式,可以有效的规避因为符号带来的各种负面影响,并能够有效削减或兼容各种Base64的变种形式。

借着 Base62x 在 -GitHub 上获得几个赞之后,我们探讨另外一个问题,Base62x 的编码在输出文本形式上略胜一筹,是值得推荐的替代方案,但其编码速度和效率如何?

为此我们设计一个评测任务,分别使用Base62x 和 Base64进行20万次编码操作,其中Base62x 使用 PHP的ext module方式实现的 base62x_encode , Base64 也是 PHP内置的 base64_encode , 两种均是使用C语言实现,并通过扩展方式集成在 PHP中,相对而言,可比性较好. 运行主机是在 Windows下虚拟主机运行 OpenSuSE 42,Nginx 1.12, PHP 7.0.

通过脚本Command Line调用方式进行20万次编码任务,对比测试数据:

base62x 200000 timestart:1513077337.6748 timecost:0.30399990081787
base64 200000 timestart:1513077337.9788 timecost:0.16817998886108

base62x 200000 timestart:1513077401.2177 timecost:0.29567098617554

base64 200000 timestart:1513077401.5134 timecost:0.17081189155579

base62x 200000 timestart:1513077424.234 timecost:0.30112099647522

base64 200000 timestart:1513077424.5351 timecost:0.1718909740448

base62x 200000 timestart:1513077447.9861 timecost:0.29450607299805

base64 200000 timestart:1513077448.2806 timecost:0.16546702384949

base62x 200000 timestart:1513077470.7367 timecost:0.45493698120117

base64 200000 timestart:1513077471.1917 timecost:0.24029588699341

运行5次之后,Base62x 和 Base64 其均值分别为,0.330047 和 0.183329 . 由此可见,Base62x 比 Base64 在编码速度上稍慢,20万次操作耗时比值为 1:0.555 , 尽管每次操作其耗时差(7.33589E-07)可以忽略不计,但考察比值,Base62x 慢了大约 44.5%,大致是 Base64 完成两个编码操作, 目前版本的 Base62x 完成一个多一点的编码操作。

如果加上在应用层的各种判断,使用 Base62x 替代 Base64 可能是有优势的,比如判断是否包括+,进而转化为空格,是否包括等号等,因为任何一步额外的判断或替换操作,其耗时将可能远超过 Base62x 与 Base64 操作耗时的差值。

比如其中一个 URLEncode 的应用场景,在 -github/wadelau/gMIS/comm/ido.js 中( ):

var actx = unescape(tObj.action);actx = actx.replace(‘+‘, ‘ ‘);

取代的改进使用Base62x的方案是:

var actx = Base62x.decode(tObj.action); /* no more action needed */

从代码层分析耗时差值原因,尽管两者都使用了位操作进行计算,但 Base62x 在单位编码长度上多了数值判断,由此导致其速度下降。Base62x 还是新事物,其代码应该还有可以再改进优化的空间。

如果进一步改进优化,Base62x 有可能与 Base64 相同的编码速度吗?

有没有可能存在另外一种不需要数值判断,也能够满足与 Base62x 一样无符号输出的64进制编码方案?

小结,单就编码速度而言, Base64 方案快,如果加上其他判断与替换操作, Base62x 方案胜出,未来可能会有鱼(无符号输出)和熊掌(速度)兼得的新编码方案出现。

转载地址:http://aplxo.baihongyu.com/

你可能感兴趣的文章
win10 nodejs指定ionic版本安装(npm方式)
查看>>
JumpServer跳板机
查看>>
mongodb 与 c++ 的配合使用
查看>>
ios 对齐属性
查看>>
[CDQ分治][Treap][树状数组]JZOJ 4419 Hole
查看>>
javascript -- 将数组转换为字符串:join()
查看>>
HDU - 1078 DP + 记忆化搜索
查看>>
Linux基础命令详解
查看>>
forms组件
查看>>
第十周进度条
查看>>
源码安装node8.11.1
查看>>
JAVA HTTP通信
查看>>
bootanimation 动画替换调试
查看>>
改变表单元素的外观
查看>>
【批处理学习笔记】第十七课:截取字符串
查看>>
c#Winform窗体加载时弹出另外一个窗体
查看>>
C进阶指南(3):显式内联、矢量扩展、C的逸闻轶事(转)
查看>>
【Iphone 游戏开发之一】创建视图并绘制简单图形
查看>>
phpmyadmin数据库建表及插入
查看>>
js 在一个DIV前、中、后、插入新DIV
查看>>