python学习笔记:测试python和rust的时间

前一段时间看了一篇关于rust加速python的文章,讲述到利用rust的特性去加速python的执行效率。在一些网上,这类的资料比较少。加上rust在生态上还没形成良好的环境,不过它的性能足够强悍可以让人感觉到它的强大之处。实际上,python在很多案例中,包括一些著名的库也会使用C 或C++去优化执行效率。例如numpy就借用C语言去发挥性能极高的计算。

在一些日常比较中,常见的包括网上很多就是进行叠加计算,测试python和rust的效率。实际上这种比较意义不大。下面,我们也重复一次实验过程。

第一次执行10万次的计算


def testTime():
    t1 = time.time()
    sum = 0
    for i in range(100000):
        sum += 1
    print(f"执行时间为:{time.time() - t1}")

testTime()
#执行时间为:0.0060007572174072266

在10万次下会产生一些消耗。
执行的时间耗时:0.0060007572174072266

第二次执行100万次计算

def testTime():
    t1 = time.time()
    sum = 0
    for i in range(1000000):
        sum += 1
    print(f"执行时间为:{time.time() - t1}")



testTime()
#执行时间为:0.05700254440307617

在100万次下会产生一些消耗。
执行的时间耗时:0.05700254440307617

第三次执行1000万次计算

def testTime():
    t1 = time.time()
    sum = 0
    for i in range(10000000):
        sum += 1
    print(f"执行时间为:{time.time() - t1}")



testTime()
#执行时间为:0.7147984504699707

在1000万次下会产生一些消耗。
执行的时间耗时:0.7147984504699707

第四次执行1亿次计算

def testTime():
    t1 = time.time()
    sum = 0
    for i in range(100000000):
        sum += 1
    print(f"执行时间为:{time.time() - t1}")

testTime()
#执行时间为:6.718158960342407

在1亿次下会产生一些消耗。
执行的时间耗时:6.718158960342407

从实验计算来讲。在1亿次计算量会比较明显产生的消耗会大很多。在10w次的计算,消耗量并不是很明显。

采取Rust去实验

采用rust去算出一个数据出来,这次从1000w开始


use std::time::{Instant};

fn main() {
  let start = Instant::now();
  let mut sum = 0;
  for _ in 0..100000000{
      sum +=1;
  }

 let duration = start.elapsed();
 println!("{}",sum);
 println!("执行时间为: {:?}", duration);

执行时间为: 343.7971ms(微秒)
转换为秒为:0.0003438
同等对比python在这个档位 :0.7147984504699707
在这里插入图片描述

再次执行一亿次计算
rust的时间为:
执行时间为: 3.7116033s

执行的差异化现象

在大计算的时候,rust优势会明显一点。
如果采取不是编译出的exe执行的话,rust的效率会更高。经过python去调取的rust方法的时候,效率会让人快到怀疑人生。但这也是其中一种优势加速。只是在众多测试过程,上了百万和千万到亿级别的计算。rust的优势会凸显出来,在日常使用过程,这种差别会变得很小。在密集型计算和io优化会带来一点灵感,提供一种优化的思路。在日常使用过程,python已经足够可以对付这样的计算。
在这里插入图片描述

rust 提供了一个提升的速度的方式,但并不是绝对化,毕竟再维护rust的过程,大多数库的依旧是c和c++天下,rust要在这块积累,还有一段漫长积累过程。不过,我依旧看好rust在今后的发展趋势。

安全和性能,这2点足够强悍。只是在书写和概念入门的门槛实在太大,可以劝退一大部分人。rust在python的使用优化,仅仅是一种手段。更多应用潜力在一些项目中使用到。这方面可以在招聘中反应到最佳的使用需求。

在IO的测试过程,同等文件读取和解析,rust在性能方面依旧会比python出色一点。但在书写代码方面,我个人依旧会喜欢python这种短平快的处理方式。rust在资料在使用上,还比较少,需要阅读大量的使用案例才能很好理解,所以在刚接触过程写起来会比较慢,新手流程并不是很好。

在这里插入图片描述

综述:

这种比较意义并不大,但是可以提供一种思路去优化在神经网络计算和一些密集计算的时候,采取一些包装去加速一些运算执行效率。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值