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

来源:互联网 发布:电子相册软件哪个好 编辑:程序博客网 时间:2024/05/21 16:29

原创文章,欢迎转载,转载请注明出处: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                  
 

原创粉丝点击