无聊的速度比较
本质上Python是written in C。
翻译需要时间,但是不仅仅是翻译浪费了时间
差异的原因很多,尤其需要注意的是,Python的内存使用与C的本来就有许多的不同之处
C语言直接的使用内存,而且相当随意。玩C语言的时间长一点的,基本上都知道点内存中那些乱七八糟的分配情况。
接着,就有人拿出一段经典的代码开始测试C语言有多快:
哈哈,按照常规的想法,如果用Python来写话,那就是这样:
首先,我们需要考虑的是内存使用情况,C语言使用的是一个4bytes的内存,而Python则使用了10000个Python自己的Int对象,每一个对象占用的内存大小都至少大于4bytes,需要不断的malloc⋯⋯
这样看来,程序速度的比较本身就对Python不公平,因为他们根本没有做同样的事。表示一个数字100,可以用阿拉伯数字100,也可以直接找100个实物,所花的时间当然是不一样的。
事实上,我们可以这样来稍稍修正比较的结果:
翻译需要时间,但是不仅仅是翻译浪费了时间
差异的原因很多,尤其需要注意的是,Python的内存使用与C的本来就有许多的不同之处
C语言直接的使用内存,而且相当随意。玩C语言的时间长一点的,基本上都知道点内存中那些乱七八糟的分配情况。
接着,就有人拿出一段经典的代码开始测试C语言有多快:
for(int i = 0 ; i<=10000 ; i++){}
妄图用计算执行时间这样的方法,来告诉其他的朋友们C语言是多么的快
哈哈,按照常规的想法,如果用Python来写话,那就是这样:
for i in range(10000):pass事实上,这两段代码做的事情完全不一样,这样的比较完全没有意义。
首先,我们需要考虑的是内存使用情况,C语言使用的是一个4bytes的内存,而Python则使用了10000个Python自己的Int对象,每一个对象占用的内存大小都至少大于4bytes,需要不断的malloc⋯⋯
这样看来,程序速度的比较本身就对Python不公平,因为他们根本没有做同样的事。表示一个数字100,可以用阿拉伯数字100,也可以直接找100个实物,所花的时间当然是不一样的。
事实上,我们可以这样来稍稍修正比较的结果:
for(int i = 0 ; i<=10000 ; i++)free(malloc(sizeof(int)));这样似乎对Python稍微公平一些!不过我猜,还是C语言快啦,否则的话,为什么我们还需要C语言呢?所以说,根本就是无聊的比较,太无聊了
feed