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

-Base62x 提供了一种无符号输出的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 中( -R/J2SI ):

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 方案胜出,未来可能会有鱼(无符号输出)和熊掌(速度)兼得的新编码方案出现。

-R/p2SQ

Base62x比Base64的编码速度更快吗?相关推荐

  1. php base64解码,PHP Base64 中英文编码 JavaScript 解码

    最新PHP Base64 中英文编码 JavaScript 解码 以下是三零网为大家整理的最新PHP Base64 中英文编码 JavaScript 解码的文章,希望大家能够喜欢! function ...

  2. Base64的编码规则和C#实现

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一: Base64的编码规则     Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.     它将需要编码 ...

  3. Java中使用Base64进行编码解码的工具类-将验证码图片使用Base64编码并返回给前端

    场景 前端使用Vue,验证码图片的src属性来自于后台SpringBoot接口. 后台验证码接口生成验证码图片并将其使用Base64进行编码. 前端就可以直接使用 data:image/png;bas ...

  4. php代码在线base64解码,Base64在线编码解码实现代码 演示与下载

    在线演示地址: gb2312版本 http://tools.jb51.net/tools/base64_decode-gb2312.php utf8版本 http://tools.jb51.net/t ...

  5. javascript中的Base64.UTF8编码与解码详解

    javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...

  6. java int转bitmap_Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码...

    首先是网上大神给的类 package com.duanlian.daimengmusic.utils; public final class Base64Util { private static f ...

  7. Base64的编码实现原理攻略

    Base64的编码原理 本文将实现: 简述 ASCII码字符编码的Base64 编码实现原理 简述 非ASCII码字符编码的Base64 编码实现原理 加密分析系列文章: Base64 编码实现原理( ...

  8. Base64的编码(Encode)与解码(Decode)

    Base64的编码(Encode)与解码(Decode) 推荐第一种 效率更高. 第一种:java8 新版本 @Testpublic void test1(){//现在Base64编码 import ...

  9. Java如何进行Base64的编码(Encode)与解码(Decode)?

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

最新文章

  1. C#.NET如何判断是否有缺少的using
  2. 成人怎么学计算机英语单词,成人怎么从零开始学英语单词
  3. html商城选择尺寸,Html 中各种宽高尺寸汇总
  4. Tomcat配置JNDI数据源
  5. 前端学习(1382):多人管理项目2案例初始化
  6. spring elasticsearch 按条件删除_实战:项目数据源转为Elasticsearch
  7. 《团队激励与沟通》第 3 讲——沟通概述与沟通过程 重点部分总结
  8. STM32之SysTick例程
  9. 纯python好找工作吗_Python现在好找工作么?
  10. Linux命令之umask
  11. 运营商iptv服务器,IPTV 服务器
  12. 哪些好的绘图软件和绘图工具?
  13. python自由落体_Javascript摸拟自由落体与上抛运动原理与实现方法详解
  14. wangEditor富文本实现导入word功能
  15. 我来对比一下阿里云服务器和腾讯云服务器的优劣和区别
  16. java fuoco车架_为速度而生 JAVA Fuoco铝合金气动公路
  17. 我告诉你一个 AtomicInteger 的惊天大秘密
  18. 统计数字问题_统计问题
  19. 陌上人如玉,公子世无双
  20. 中国IT从业者的职业——计算机程序设计员

热门文章

  1. 知乎高赞:我的编程能力从什么时候开始突飞猛进的?
  2. 腾讯竟然是这样招人的,哈哈哈哈哈
  3. 马斯克,带动大盘的男人:财报一出市值飙升 840 亿!
  4. Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本
  5. LAMP一体环境快速安装
  6. MFC窗体控件随窗体变化
  7. Flutter 仿掘金之动态Tabbar
  8. 新年到了,该规划一下来年了
  9. 8 基于管道的持久化存储 scrapy
  10. BCH链上交易量剧增,超越莱特币