- 注册时间
- 2009-6-21
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 622
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
由于工作需要,写了个大数乘法算法(作为RSA的一部分)
跟 HugeCalc V8.0.0.0对比了下,发现我的程序速度要快上许多。
下面是统计数据:
1、只累计乘法算法时间
我的HugeLib:
for( int times = 0; times < 1000000; ++times )
{
HugeMul();
}
HugeCalc:
for( int times = 0; times < 1000000; ++times )
{
c = ( a * b );
}
结果:
128位*128位(按8位 = 1字节,即16字节) 耗时(单位为秒):
HugeLib:0.0863
HugeCalc:1.841
256位*256位
HugeLib:0.219
HugeCalc:2.310
512位*256位
HugeLib:0.385
HugeCalc:2.714
512位*512位
HugeLib:0.698
HugeCalc:4.151
2、累计输入数据初始化、乘法计算和结果转字符串
HugeLib:
for( int times = 0; times < 1000; ++times )
{
DWORD dwRet= Init( "0xA48B637BDD34BFAB24567F79751903A49AE4C92E1113745C78DAB49413DC71A6C89A0A21F3C794D4DC46ED0C6CB8DBECE4ACEA39E7A591F96E8D071A8423065A", "0x748B637BDD34BFAB24567F79751903A49AE4C92E1113745C78DAB49413DC71A6C89A0A21F3C794D4DC46ED0C6CB8DBECE4ACEA39E7A591F96E8D071A84230655" );
HugeMul();
const char* p = GetRetStr();
}
HugeCalc:
for( int times = 0; times < 1000; ++times )
{
CHugeIntX a( "0xA48B637BDD34BFAB24567F79751903A49AE4C92E1113745C78DAB49413DC71A6C89A0A21F3C794D4DC46ED0C6CB8DBECE4ACEA39E7A591F96E8D071A8423065A" );
CHugeIntX b( "0x748B637BDD34BFAB24567F79751903A49AE4C92E1113745C78DAB49413DC71A6C89A0A21F3C794D4DC46ED0C6CB8DBECE4ACEA39E7A591F96E8D071A84230655" );
CHugeIntX c = ( a * b );
c.GetStr();
}
结果:
512位*512位耗时:
HugeLib:0.002968
HugeCalc:0.167497
两者都是通过调用动态库方式进行比较的。
附件里含测试工程,包括调用HugeCalc的头文件.h,Lib和Dll,以及我的HugeLib的头文件.h,Lib和Dll文件。
由于HugeCalc v8试用版的缘故,还需要放在 "CopyrightByGuoXianqiang" 目录下进行……
#include "hugeLib.h"
#pragma comment( lib, "hugeLib.lib" )
#include "Include/HugeCalc.h" // 公共接口
#include "Include/HugeInt.h" // 10进制系统
#include "Include/HugeIntX.h" // 16进制系统
#pragma comment( lib, "HugeCalc.lib" ) |
|