hotiice
版主
精华贴数 10
个人空间 0
技术积分 16699 (62)
社区积分 1796 (648)
注册日期 2004-9-9
论坛徽章:21
|
|
|
jython-python性能简单比较
一个法人单位代码校验函数
从c代码 PHP code:
bool VerifyCode(char code[])
{
if(strlen(code)!=9)
{
return false;
}
//strcpy(code,"HBA90021X"<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;
int v=0;
for(int i=0;i<8;i++)
{
char c=toupper(code[i]);
if(isdigit(c))
c-='0';
else if (isalpha(c))
c=c-'A'+10;
else
return false;
int t=c*((1<<(8-i)) % 11);
v=v+t;
}
v=(11-(v%11))%11; //11->0
if(v<10)
v=v+'0';
else
v='X';
if(v==toupper(code[8])) //'x'=='X'
return true;
else
return false;
}
改写
# vc.py
import string
def VerifyCode(code):
if(len(code)!=9):
return 0
v=0
for i in range(8):
c=string.upper(code[i])
if(c in string.digits):
c1=ord(c)-ord('0')
elif (c in string.letters):
c1=ord(c)-ord('A')+10
else:
return 0
t=c1*((1<<(8-i)) % 11)
v=v+t
v=(11-(v%11))%11
if(v<10):
v=v+ord('0')
else:
v=ord('X')
if(v==ord(string.upper(code[8]))):
return 1
else:
return 0
然后用
# tt.py
import vc
import time
print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
for i in range(100000):
str(900000000+i)
print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
for i in range(100000):
vc.VerifyCode(str(900000000+i))
print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
测试100000次循环
-------
结果如下
C:\jython22>jython tt.py
星期一, 07 八月 2006 02:30:00 +0000
星期一, 07 八月 2006 02:30:01 +0000
星期一, 07 八月 2006 02:30:09 +0000
C:\jython22>cd \py*
C:\Python25>python tt.py
Mon, 07 Aug 2006 02:30:28 +0000
Mon, 07 Aug 2006 02:30:29 +0000
Mon, 07 Aug 2006 02:30:31 +0000
|
__________________
|
只看该作者
|
|