内容来源:key,小邬
Python中for循环和while循环效率比较
在总结这个问题之前,有两个前提希望大家先明白:
1.在实际编程中,像GitHub的学习资料中所写的对于
知道具体循环次数的循环推荐使用for
,
不知道具体循环次数的循环推荐使用while
。为什么?
首先,程序是给人看的,可读性第一,效率其次。同样的程序使用python编写的效率本身就比大多数语言低,但是为什么python如今这么火,汇编却还有很多人不知道?
2.这里的性能测试仅仅针对Python语言,以及非常小样本的测试结果得出,
不同语言不同机器对于结果的影响可能会大于这两种循环的性能本身,
所以请读者不要太过纠结两种循环的效率问题。
@Python天下第一
同学提出了比较for循环和whlie循环效率的问题,出于好奇
@Key
同学进行了简单的测试。发现Python的for循环的执行效率确实会比while循环稍微低一点(两种循环同时执行自增操作1千万次,for的执行时间比while慢0.1秒左右)
@Python天下第一 、@甜瓜蜀黍
、
@雨山
的运行结果也是while循环的执行效率较高。但是同一段程序
@矢量七
的测试结果却是for效率更高。这更印证了前面说的大家不要过分纠结两种循环的性能问题,因为可能机器环境的影响比两种循环本身的性能影响更大。
@Python天下第一
同学又使用已有列表作为迭代对象进行了测试,发现此时是for更快一些。所以
上面for消耗的时间主要是在range中。
再次强调,这里的结果
仅仅针对Python
而言。因为
@Key
同学又测试了scala语言两种循环的效率,结果正好相反。而且scala输出的结果单位是毫秒,且scala循环的迭代次数为10亿次。所以很明显scala的效率要比Python高很多。
拓展这些还是想告诉大家要牢记Python中两种循环具体要使用哪个。首先考虑的要素是知不知道循环的具体次数,而不是效率。希望大家可以在这个问题中培养这种关注程序效率的意识,能够有所收获,有所成长~
java 批量反射效率
一 基础概念 Java中,一般我们创建一个对象可能会选择new一下个实例。但是随着我们技术的不断提升,我们也学习到了,可以通过反射技术实现对象的创建。 可是,你有没有想一下,什么时候我们改用new创建对象,什么时候我们改用反射创建对象呢? 两者创建对象的效率又是如何呢?//new 方式创建对象
ReflectDemo reflectDemo = new ReflectDemo();
//反射创建对