python比c慢多少倍_Python代码优化(比C慢20倍)

我写了一个非常糟糕的优化C代码,它做了一个简单的数学计算:#include

#include

#include

#define MIN(a, b) (((a) < (b)) ? (a) : (b))

#define MAX(a, b) (((a) > (b)) ? (a) : (b))

unsigned long long int p(int);

float fullCheck(int);

int main(int argc, char **argv){

int i, g, maxNumber;

unsigned long long int diff = 1000;

if(argc < 2){

fprintf(stderr, "Usage: %s maxNumber\n", argv[0]);

return 0;

}

maxNumber = atoi(argv[1]);

for(i = 1; i < maxNumber; i++){

for(g = 1; g < maxNumber; g++){

if(i == g)

continue;

if(p(MAX(i,g)) - p(MIN(i,g)) < diff && fullCheck(p(MAX(i,g)) - p(MIN(i,g))) && fullCheck(p(i) + p(g))){

diff = p(MAX(i,g)) - p(MIN(i,g));

printf("We have a couple %llu %llu with diff %llu\n", p(i), p(g), diff);

}

}

}

return 0;

}

float fullCheck(int number){

float check = (-1 + sqrt(1 + 24 * number))/-6;

float check2 = (-1 - sqrt(1 + 24 * number))/-6;

if(check/1.00 == (int)check)

return check;

if(check2/1.00 == (int)check2)

return check2;

return 0;

}

unsigned long long int p(int n){

return n * (3 * n - 1 ) / 2;

}

然后我尝试(只是为了好玩)把它移植到Python下,看看它会有什么反应。我的第一个版本几乎是1:1的转换,运行速度非常慢(Python为120秒以上,C为1秒)。

我做了一些优化,这是我得到的:

^{pr2}$

它的运行时间大约为16秒,比C语言好,但也几乎慢了20倍。

现在,我知道在这类计算中,C比Python好,但是我想知道的是,我是否遗漏了一些东西(Python方面,比如一个非常慢的函数之类)可以使这个函数更快。

请注意,我使用的是python3.1.1,如果这有区别的话

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值