Base64编码及编码性能测试 [改进]

原创 2013年12月05日 11:00:30

原创文章,欢迎转载,转载请注明出处:http://blog.csdn.net/jmppok/article/details/17137839


参考:Base64编码及编码性能测试


主要是针对文章中 Base64.cpp中的_getBase64Char(char c)和_getCharOfBase64(char c)两个函数进行了改进.

原来代码为:

char _getBase64Char(char c)  
{  
    if(c>=0 && c<26)  
    {  
        return 'A'+c;  
    }  
    else if(c>=26 && c<52)  
    {  
        return 'a'+c-26;  
    }  
    else if(c>=52 && c<62)  
    {  
        return '0'+c-52;  
    }  
    else if(c==62)  
    {  
        return '+';  
    }  
    else if(c==63)  
    {  
        return '/';  
    }  
          
}  
  
char _getCharOfBase64(char c)  
{  
    if(c>='A' && c<='Z')  
    {  
        return c-'A';  
    }  
    else if(c>='a' && c<='z')  
    {  
        return c-'a'+26;  
    }  
    else if(c>='0' && c<='9')  
    {  
        return c-'0'+52;  
    }  
    else if(c=='+')  
    {  
        return 62;  
    }  
    else if(c=='/')  
    {  
        return 63;  
    }  
}  

改进后的代码

const char * base64_charset="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
							"abcdefghijklmnopqrstuvwxyz"
							"0123456789"
							"+/"; 
char _getBase64Char(char c)
{
	return base64_charset[c];		
}

char _getCharOfBase64(char c)
{
	switch(c)
	{
		case 'A':
		case 'B':
		case 'C':
		case 'D':
		case 'E':
		case 'F':
		case 'G':
		case 'H':
		case 'I':
		case 'J':
		case 'K':
		case 'L':
		case 'M':
		case 'N':
		case 'O':
		case 'P':
		case 'Q':
		case 'R':
		case 'S':
		case 'T':
		case 'U':
		case 'V':
		case 'W':
		case 'X':
		case 'Y':
		case 'Z':
			return c-'A';
		case 'a':
		case 'b':
		case 'c':
		case 'd':
		case 'e':
		case 'f':
		case 'g':
		case 'h':
		case 'i':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'n':
		case 'o':
		case 'p':
		case 'q':
		case 'r':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'w':
		case 'x':
		case 'y':
		case 'z':
			return c-'a'+26;
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
			return c-'0'+52;
		case '+':
			return 62;
		case '/':
			return 63;
		
	}	
}
其他代码不变。

经过测试,改进后的Base64编码效率可提高8倍左右。

200K               encode 1000次      327ms                       

500K               encode 1000次     671ms                  

1M                   encode 1000次      1388ms                  
 

Base64编码及编码性能测试

原创文章,欢迎转载。转载请注明出处: 1.什么是Base64编码 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6位为一个单元,对应某个可打印...
  • jmppok
  • jmppok
  • 2013年12月03日 16:36
  • 2944

java:7种Base64编码和解码功能详解和性能比较

Java 8新特性探究(十一)Base64详解 BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容...

代码优化-之-Base64编码函数的极限优化挑战

代码优化-之-Base64编码函数的极限优化挑战                   HouSisong@GMail.com   2007.07.27 tag:速度优化,Base64,CPU缓存优...

java程序在windows后台启动

Java应用注册为后台服务 2010-12-16 00:14   来源:比特网   [导读]项目中有一个java应用程序,交付后用户要求要把这个程序做成后台服务程序,即:系统启...

使用SQLite3开发java应用程序

载SQLite数据库的JDBC  这里给出一个中文站点的URL: http://www.sqlite.com.cn/Upfiles/source/sqlitejdbc-v033-nested.tg...

Base64 编码和性能,第 2 部分

原文链接: https://csswizardry.com/2017/02/base64-encoding-and-performance-part-2/ 这是这篇文章的第 2 部分。阅读第 1 部分...
  • YITA90
  • YITA90
  • 2017年05月03日 20:37
  • 474

网页图片转base64编码的性能分析

拿了解的两种让网页图片得到加载的方式来说,一种是雪碧图,另外一种是转成base64编码,base64编码是今天看到url-loader特意去查看的,进而弄懂了其本质,本篇文章主要介绍base641 B...

7种Base64编码和解码功能详解和性能比较

来源:http://blog.csdn.net/u013476542/article/details/53213783 BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64...

Base64 编码和性能,第 1 部分

原文链接:https://csswizardry.com/2017/02/base64-encoding-and-performance/ 作者:Harry Roberts 来源:CSS Wizar...
  • YITA90
  • YITA90
  • 2017年03月10日 15:42
  • 140

Base64编码认识(Java 测试)

简述: Base64的一个转码的实现 原理: Base64编码方法要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两...
  • anialy
  • anialy
  • 2013年03月04日 21:06
  • 2617
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Base64编码及编码性能测试 [改进]
举报原因:
原因补充:

(最多只允许输入30个字)