精华内容
下载资源
问答
  • python效率
    千次阅读
    2021-01-12 22:17:10

    这是一个引战的话题,不过我还是想说几句。

    任何一个讨论语言效率问题的人,请先问下有没有搞清楚什么是效率?

    软件工程发展至今,大型系统基本不可能通过一种语言去架构,c语言到是效率高来着?能去写一个web应用吗?如果硬要写当然可以,但是当你用c语言写完之后,估计这个项目都已经凉了。

    python从来就不是为了所谓的运行效率而生的,运行效率在整个软件工程里并不占有多么大的比重,更多的还是在于处理业务逻辑上面。

    从python的历史来讲,当初因为当初很多非计算机专业的科学家需要一门语法简洁,数据结构清晰的语言用于科学计算,数据分析等等,于是选择了python,并为此建立了大量的生态体系,由此火了一把。

    再后来很多搞爬虫的因为语法简洁也选择了python,爬虫本身并不需要利用CPU运算,主要是IO相关的。

    至于说用python在web应用或者说后端开发上,我觉得90%的功能都可以架构在这上面,有涉及到计算密集型的服重新用c写一遍,然后用python调用就完了。

    很多人说小批量用户可以用python,用户量大了就不行了。

    我想问问,用户量大,并发的瓶颈真的是语言本身吗?前端负载做好优化了吗?内部服务是不是都是异步的?数据库怎么优化的?

    事实上用c语言或者go乃至rust之类的,都能写出所谓“性能”不错的代码,但是绝对不是在那些嘴上说着python效率低的程序员手上,因为他们的视觉还在某种语言本身,而不是在架构层面去考虑问题。

    更多相关内容
  • 这篇文章主要介绍了提升Python效率之使用循环机制代替递归函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 斐波那契数列 当年,典型的递归题目,斐波那契数列还记得吗? ...
  • 1、运行效率:C++ >> Python Python代码和C++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Python最终转换出来的CPU指令会比C++ 多很多。 首先,Python东西比C++多,经过了更多层,Python中...
  • C语言与Python程序运行效率对比分类:计算机等级|更新时间:2016-07-08|来源:转载简介 Python是个非常流行的解释型脚本语言。C是一个非常流行的编译语言。由于其编译的性质,导致C一般比Python要快,但是它是更...

    C语言与Python程序运行效率对比

    分类:计算机等级

    |

    更新时间:2016-07-08|

    来源:转载

    简介  Python是个非常流行的解释型脚本语言。C是一个非常流行的编译语言。由于其编译的性质,导致C一般比Python要快,但是它是更底层的。相对的,Python编程更加快速和简单。译者注:在目前最权威的TIOBE编程语言排行榜上,Python和C语言分处榜上第6和第2的高位,在脚本语言和编译语言中分别坐着第二把交椅(第一把交椅分别是PHP和Java)。

    问题在于,Python程序(在没有输入的情况下)运行时所额外花费的时间相对C而言是否更加划算,以及运行时所用的时间是否比编程时间更加重要。

    系统程序  我决定建立一个简单的程序,该程序可以处理以下公式的计算:

    { x + y = 14

    { x^2 + y^2 = 100

    我很快用Python写了一遍,找到了答案。然后,我将其翻译成C语言。我知道,在C语言中的同一程序会花费比Python更多一些的代码,但是这并非是我所注意的问题。在继续之前,让我们看看代码:

    Python:

    x = 1

    while x <= 14:

    y = 14 - x

    print str(x) + "|" + str(y)

    if x**2 + y**2 == 100:

    print "match"

    x = x + 1

    C:

    #include (<)stdio.h(>)

    int main()

    {

    int x, y, t;

    for (x = 1; x <= 14; x++) {

    y = 14 - x;

    printf("%d|%d ", x, y);

    if ((x*x) + (y*y) == 100)

    printf("match ");

    }

    return 0;

    }

    我总是听说C语言永远是最快的语言之一。在命令端口运行这两个程序,我并没看出这两个的运行速度有任何差别。所以我打开Ubuntu的命令端口,并输入如下代码:

    time ./a.out

    (time指令,紧跟着可以脱离time指令而单独运行的普通指令,运行指令并计时——很明显,这里的测试对象是C程序。)我得到0.001秒real time(真实用时),而user time(用户用时)和system time(系统用时)都是0。

    接下来是Python:

    time python system.py

    结果有些吓人:0.017秒real time,0.012秒user time,0.004秒system time。

    当然了,real time的差别毕竟只有16毫秒,不过在长时间运行大量运算的大系统下这个差别就很明显了。来源:-计算机二级考试

    百万程序  我决定将这个设想付诸现实。我写了另一个程序,这个程序将0到1000000之间的所有整数,包括0,依次print输出。当然这和我之前提到的大量运算的情况还是不同的,不过还是给了计算机比较多一些需要print的内容。

    Python:

    i = 0

    while i (<) 1000000 print i

    i = i + 1

    C:

    #include (<)stdio.h(>)

    int main ()

    {

    int i;

    for (i = 0; i <>

    printf ("%d ", i);

    return 0;

    }

    然后是测试结果:

    C:

    real 0m24.625s

    user 0m0.652s

    sys 0m2.240s

    Python:

    real 0m29.805s

    user 0m1.984s

    sys 0m1.812s

    结论

    我承认,每个语言都有其优势和弱点。但从以上结果看来,我只会在像上面这些小程序这样快捷的编程中,或为C程序建立原型的时候才会用Python,而在运行花费时间更重要的任务中,我无疑会选择C语言。

    译者:其实这篇文章中用于测试的程序编写的不是很严谨。在原博客上,这篇文章有不少评论都表示说,虽然他们承认C是比较快,但是这样的测试方法并没有充分利用两种语言的效率最优化机制。不过,具体测试是否准确并非是我所关注的。重点是,一个Java程序员,或者一个C程序员,或者别的什么语言的开发人员,在怎样的情况下,怎样的职业需求,会促使他们学习并使用新的语言呢?

    展开全文
  • 当我们提到一门编程语言的效率时:通常有两层意思,第一是开发...不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率,life is short,we use python。虽然使用python的编程人员都应该接受其运行效率低的...

    5d82d8790b620749.jpg

    当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间;另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间。编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的。不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率,life is short,we use python。

    虽然使用python的编程人员都应该接受其运行效率低的事实,但python在越多越来的领域都有广泛应用,比如科学计算 、web服务器等。程序员当然也希望python能够运算得更快,希望python可以更强大。相比之下,C语言的效率是高于python的。

    首先,python相比其他语言具体有多慢,这个不同场景和测试用例,结果肯定是不一样的。这个网址给出了不同语言在各种case下的性能对比,这一页是python3和C++的对比,下面是两个case:

    1568856083161047.jpg

    从上图可以看出,不同的case,python比C++慢了几倍到几十倍。

    python运算效率低,具体是什么原因呢,下列罗列一些:

    第一:python是动态语言

    一个变量所指向对象的类型在运行时才确定,编译器做不了任何预测,也就无从优化。举一个简单的例子: r = a + b。 a和b相加,但a和b的类型在运行时才知道,对于加法操作,不同的类型有不同的处理,所以每次运行的时候都会去判断a和b的类型,然后执行对应的操作。而在静态语言如C++中,编译的时候就确定了运行时的代码。

    另外一个例子是属性查找,关于具体的查找顺序在《python属性查找》中有详细介绍。简而言之,访问对象的某个属性是一个非常复杂的过程,而且通过同一个变量访问到的python对象还都可能不一样(参见Lazy property的例子)。而在C语言中,访问属性用对象的地址加上属性的偏移就可以了。(更多学习内容,请点击python学习网)

    第二:python是解释执行,但是不支持JIT(just in time compiler)。虽然大名鼎鼎的google曾经尝试Unladen Swallow 这个项目,但最终也折了。

    第三:python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。

    第四:python GIL,GIL是Python最为诟病的一点,因为GIL,python中的多线程并不能真正的并发。如果是在IO bound的业务场景,这个问题并不大,但是在CPU BOUND的场景,这就很致命了。所以笔者在工作中使用python多线程的情况并不多,一般都是使用多进程(pre fork),或者在加上协程。即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode(默认,可以通过sys.setcheckinterval()设置)就会尝试线程的切换,具体的源代码在ceval.c::PyEval_EvalFrameEx。

    第五:垃圾回收,这个可能是所有具有垃圾回收的编程语言的通病。python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。

    展开全文
  • 北风网项目实战培训 第六讲Python效率分析 讲师朱彤北风网版权所有) Python金融应用 如果某个应用对于效率非常敏感那么一般来说应当检查两个方面1使用了正确的实现框架2使用了正确的效率库在Python中可以使用很多种...
  • 完整图文版Python高级教程 Python在金融大数据领域的应用 06 第六讲 Python效率分析与提升(共18页).rar
  • 本专栏招募作者及编辑,感兴趣分享学习R/Python数据分析/机器学习知识的可以私信联系PS:有人提到一个问题很好,如果每次循环都采用比较复杂的操作似乎用向量化很难实现,我的建议是尽可能拆分成向量化操作,如果...

    本专栏招募作者及编辑,感兴趣分享学习R/Python数据分析/机器学习知识的可以私信联系

    PS:有人提到一个问题很好,如果每次循环都采用比较复杂的操作似乎用向量化很难实现,我的建议是尽可能拆分成向量化操作,如果不行建议用numpy硬写然后用numba包加速。

    正文:

    如果你使用过Python及Pandas,那么你很有可能已经使用了for循环去进行某些数据分析操作。不幸的是,绝大部分Python新手使用的下标循环语句实际上是非常之慢的,即便在小数据集上也会消耗大量的运行时间。本专栏之前的一些文章已经涉及了这方面的讨论,在这篇文章中文兄进一步特意对五种不同的For Loop方法进行横向对比,使大家更加明晰自己平时写的各种For循环到底效率几何。

    注意:之后代码里出现的df是一个只有一个column叫做test的dataframe。另外各方法下面的代码均只是用法举例,并不和测试速度用的代码完全一致。测试代码原文如下:https://towardsdatascience.com/how-to-make-your-pandas-loop-71-803-times-faster-805030df4f06​towardsdatascience.com

    方法1:下标循环(速度等级: )

    df1 = df

    for i in range(len(df)):

    if df.iloc[i]['test'] != 1:

    df1.iloc[i]['test'] = 0

    下标循环是通过循环一个下标数列,通过iloc去不断get数据,这个方法是新手最常用的但也是最慢的,在测试例子中大概需要21.9s。

    方法2:Iterrows循环 (速度等级: )

    i = 0

    for ind, row in df.iterrows():

    if row['test'] != 1:

    df1.iloc[i]['test'] = 0

    i += 1

    该循环方式是通过iterrows进行循环,ind和row分别代表了每一行的index和内容。测试例子大概需要0.07s,比起下标循环速度提升了321倍。

    方法3:Apply循环(速度等级: )

    df1['test'] = df['test'].apply(lambda x: x if x == 1 else 0)

    Apply是pandas的一个常用函数,通常的用法是内接一个lambda匿名函数,从而对dataframe的每一行都进行循环处理。在测试例子中,apply的速度为0.027s,比下标循环快了811倍。

    方法4:Pandas内置向量化函数(速度等级: )

    res = df.sum()

    Pandas为我们提供了大量的内置向量化函数,比如sum,mean就可以快速计算某一列的求和和平均。在测试例子中速度为0.00236s,比下标循环快了9280倍。

    方法5:Numpy向量化函数(速度等级: )

    df_values = df.values

    res = np.sum(df_values)

    最后一种方法是将Pandas的数据转化为Numpy的Array,然后使用Numpy的内置函数进行向量化操作。在测试例子中速度为0.000305s,比下标循环快了71800倍。

    下面是详细的速度对比图,来自之前链接:

    Sources:

    展开全文
  • 在大家的记忆中python是一门非常不错的语言,具有很多的优势,但python同样具有缺点,那就是运行效率低,那么为什么python运行效率低呢?原因在这里。1. python是动态语言动态语言是一类在运行时可以改变其结构的语言...
  • Python是一个很酷的语言,因为你可以在很短的时间内利用很少的代码做很多事情,再加上正则表达式就更能体现其效果,下面这篇文章主要给大家介绍了关于python中通过预先编译正则表达式提高效率的相关资料,需要的朋友...
  • 内包含SBM经济效率等各类经济效率计算原理和直接运行的操作代码以及数据及学习课件资料,请结合博文使用
  • 对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢? 思路很简单: 就是循环33210000条记录,将每辆车的数据搬运到它该去的文件中。 但是对于3000多万条数据...
  • 不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率,life is short,we use python。 虽然使用python的编程人员都应该接受其运行效率低的事实,但python在越多越来的领域都有广泛应用,比如科学计算 、...
  • python提供的高级函数map将一个函数作用于可迭代对象的每一个元素,底层自动实现并行,运行速度比for循环要快,对于无前后联系的for循环,可以使用map进行优化,以下例子对比了两者的运行速度,map的速度优于for循环...
  • Cpy和Python效率对比

    2020-09-22 08:36:34
    主要介绍了Cpy和Python效率对比,本文用一个循环 100000000 遍的代码对比了Cpy和Python运行效率测试,需要的朋友可以参考下
  • 于是,有人用python处理大文件还是会存在效率上的问题。因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~ 所以,为什么用python处理大文件总有效率问题? 如果工作需要,立刻处理一个大文件,...
  • 主要介绍了Python 中list ,set,dict的大规模查找效率对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java Python 执行效率对比

    万次阅读 2019-09-16 14:55:09
    Python代码开发效率非常高,同样的函数功能,Java需要十几行,Python只要几行,代码数量要远小于Java,这样开发的时间和效率比Java高很多。 2 . 代码运行速度 Java是静态语言静态编译的,直接执行,速度上要比Python...
  • 本文实例讲述了Python读取文件内容的三种常用方式。分享给大家供大家参考,具体如下: 本次实验的文件是一个60M的文件,共计392660行内容。 程序一: def one(): start = time.clock() fo = open(file,'r') fc ...
  • 主要介绍了python基于opencv检测程序运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • pip install Faker from faker import Faker fake = Faker() fake.name() fake.address() fake.text()
  • 简介:Life is short,you need Python。...运行效率缓慢的原因:Python是动态语言,造成运行时的不确定性影响运行效率Python是解释执行,不支持JIT(just in time compiler)Python中一切皆对象,每个对象
  • 主要介绍了Python常见内置高效率函数用法,结合实例形式分析了Python中filter()、map()、reduce()、lambda匿名函数等功能与简单使用技巧,需要的朋友可以参考下
  • Python运行效率低的原因

    千次阅读 2018-08-20 18:08:21
    Python是一款优雅的编程语言,在人工智能、云计算、大数据飞速发展的今天,Python受到了社会各界的关注,从国内的阿里、搜狐、知乎、腾讯、网易、土豆、新浪到国外的谷歌、Dropbox、Facebook、Redhat、Uber等都在大...
  • python与C++的效率区别

    千次阅读 2019-03-16 17:21:24
    在运行效率上,C++要远好于python
  • 国外有测试指出在相同复杂度算法中,C++约比Python快50倍左右。因此Python适合上层应用;C++则适合底层控制。本文介绍如何让C++和Python形成优势互补
  • Python效率测试计时器()

    千次阅读 2017-08-28 19:22:05
    Python效率测试计时器 一,CPU时间 time.clock() 测量CPU时间,比较精准,通过比较程序运行前后的CPU时间差,得出程序运行的CPU时间。 EG: time1 = time.clock() time2 = time.clock() diff_time =...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 397,822
精华内容 159,128
关键字:

python效率