| 
注册时间2007-12-27最后登录1970-1-1威望 星金币 枚贡献 分经验 点鲜花 朵魅力 点上传 次下载 次积分48887在线时间 小时 
 | 
 
 楼主|
发表于 2014-8-8 19:05:02
|
显示全部楼层 
| 很简单的乘法代码: 
 复制代码#include <ippcp.h>
#include <ippcore.h>
#include <stdlib.h>
#include <time.h>
#define COUNT 1000000000
int _tmain(int argc, _TCHAR* argv[])
{
    int bignumsize512=0;
    int bignumsize256=0;
    IppsBigNumState *pSum = NULL;
    IppsBigNumState *pMul = NULL;
    unsigned int data[256/32];
    srand((int)time(NULL));
    ippInit();
    IppStatus error_code = ippsBigNumGetSize(512/32, &bignumsize512);
    if(error_code != ippStsNoErr)
        return -1;
    error_code = ippsBigNumGetSize(256/32, &bignumsize256);
    if(error_code != ippStsNoErr)
        return -1;
    int i;
    for(i=0;i<256/32;i++)data[i]=rand()*65536+rand();
    pSum = (IppsBigNumState *)malloc(bignumsize512);
    pMul = (IppsBigNumState *)malloc(bignumsize256);
    error_code = ippsBigNumInit(512/32, pSum);
    ippsBigNumInit(256/32, pMul);
    ippsSet_BN(IppsBigNumPOS, 256/32, data, pMul);
    time_t start = time(NULL);
    for(i=0;i<COUNT;i++){
        ippsMul_BN(pMul, pMul, pSum);
    }
    printf("Total cost %d seconds\n", (int)(time(NULL)-start));
        return 0;
}
$10^9$次乘法,ipp8.0, 64位代码30秒,32位机器73秒
 如果换成ipp7.0, 64位代码63秒,32位95秒
 | 
 |