千分求最快的Base64编码函数
我有上万的可用分,可以开新贴给分
Base64编码是很常用的一种把二进制数据转换为字符串的算法;
(它把3个8bit数据分成4组6bit数据,然后拿6bit数映射到64个可显示字符集合中的一个)
我开贴征集最快的Base64编码函数,要求如下:
1.使用200MB随机数据来测试编码函数 (数据量最少的话也要20MB上)
2.测试单位时间(秒)编码出的字符数据量 (假设200MB数据用了2秒钟编码时间,那速度就是:200MB/3*4/2s=133.3MB/s)
3.必须说明测试使用的CPU型号(运行频率)、最好说明内存型号(运行频率) 、语言和编译器类型
4.可以测试已有的Base64编码函数(比如各种库中的、开源的等等),注明来源(可以不提供源代码),也可以是自己写的(最好能给出源代码)
5.可以补充测试一下Base64解码函数的速度
(如果是自己写的 看函数速度 给分时酌情加分)
==========================================================================
//testBase64.cpp
//一个简单的base64_encode编码函数例子,和测试框架
#include <time.h>
#include <iostream>
#include <vector>
#include <string>
// 3x8bit to 4x6bit
// |----------------------|----------------------|----------------------|
// | a[0..7] | b[0..7] | c[0..7] |
// |----------------------|----------------------|----------------------|
//
// |----------------------|----------------------|----------------------|----------------------|
// | a[2..7] | b[4..7] + a[0..1] < <4 | c[6..7] + b[0..3] < <2 | c[0..5] |
// |----------------------|----------------------|----------------------|----------------------|
const unsigned char BASE64_PADDING= '= '; //输入数据不足3的倍数时 输出字符后面填充 '= '号
inline unsigned char to_base64char(const unsigned char code6bit)
{
if (code6bit <26) //[ 0..25] => [ 'A '.. 'Z ']
return code6bit+ 'A ';
else if (code6bit <52) //[26..51] => [ 'a '.. 'z ']
return code6bit+( 'a '-26);
else if (code6bit <62) //[52..61] => [ '0 '.. '9 ']
return code6bit+( '0 '-52);
else if (code6bit==62) //62 => '+ '
return '+ ';