matlab和c循环一样吗,matlab python c的循环比较

最近在matlab中进行一个回归实验中需要使用一个三层for循环,结果速度很慢,让我犹豫是否该切换到python上做此项工作,因此决定做一个循环运行时间的比较

matlab中的循环

function test_speed()

tic;

for i=1:10

for j=1:2000

for k=1:20000

a = i + j + k;

end

end

end

toc;

end

运行时间为1.523684 秒。

function test_speed()

tic;

for k=1:20000

for j=1:2000

for i=1:10

a = i + j + k;

end

end

end

toc;

end

将上述循环次序从新排列后(外层循环次数更多),运行时间为3.322692秒。说明从网上某些资料说明的在matlab中要将循环次数更多的代码放到内层循环是有道理的。

python中的循环

import time;

i=1

ticks_b = time.time();

while(i < 10):

j=1

while(j < 2000):

k=1

while(k < 20000):

a = i + j + k

#print (i,j,k,a),

k += 1

j += 1

i += 1

ticks_e = time.time();

print (ticks_e-ticks_b,i,j,k,a);

看到输出的时间约为94.51399993896484秒,可见比matlab要慢得太多。

在调整循环次序排列(外层循环次数更多),运行时间为104.70000004768372。也体现出了应将循环次数更多的代码放到内层循环。

c中的循环

int _tmain(int argc, _TCHAR* argv[])

{

int a = 0;

DWORD b = ::GetTickCount();

for (int i=1; i<=10; ++i)

{

for (int j=1; j <= 2000; ++j)

{

for (int k=1; k <= 20000; ++k)

{

a = i + j + k;

}

}

}

printf ("%d %d\r\n", ::GetTickCount() - b, a);

return 0;

}

在debug下运行输出为998,在release下运行输出为312.

所以目前的结论是:还是继续在matlab中做实验吧,暂时忘掉python!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值