测试递归与循环的执行效率与系统开销

测试递归与循环(这里用for)的执行效率与系统开销,首先贴出实例问题:实现Fibonacci数列F(n)=F(n-1)+ F(n-2)

  测试环境 Eclipse

  1、首先我们用递归来实现

package com.youfeng.test;
public class Fab {//递归
public static void main(String [] args){
System.out.println(F(40));
}
public static Long F(int index){
if(index==1||index==2){
return 1L;
}
else{
return F(index-1)+F(index-2);
}
}
}
  2、用for循环实现

package com.youfeng.test;
public class Fab2 {//循环
public static void main(String [] args){
System.out.println(F(40));
}
public static Long F(int index){
if(index==1||index==2){
return 1L;
}
else{
Long f1=1L;
Long f2=1L;
Long f=0L;
for(int i=0;i<index;i++){
f1=f2;
f2=f;
f=f1+f2;
}
return f;
}
}
}
  当index的值很小的时候,我们分别执行没什么区别,执行速度我们感觉不到什么差别,但是当你把index调到足够大时100 、200、300、1000…… for循环轻松搞定执行速度挺快。

  当使用递归时,你会发现明显的卡机 卡机 ,有木有?调用系统资源管理器看看你的系统开销吧(很可能你你打不开资源管理器,因为你卡机了)。

  总结:能不使用递归,尽量不要使用,尽量使用循环,效率蛮高的;

  一家之言,欢迎拍砖,实验简陋,很多因素没有考虑进来,请高手指点。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-30 23:24:46

测试递归与循环的执行效率与系统开销的相关文章

swift中c风格的for循环执行效率_Swift

今天用swift写了1至99 9999的和,测试其执行效率,但是发现不同代码执行效率大大不同 1. 2. 从结果可以看到,执行速度相差5倍多,若数据再大点,就会很 明显了.这说明不同代码风格执行效率不同,明显使用c风格的for循环执行速度会更快些. 而对于即将出现的正式版swift 3.0废除c风格for循环一事,你怎么看待?

android-andorid40 执行以下多次循环后,效率急速下降,求解。

问题描述 andorid40 执行以下多次循环后,效率急速下降,求解. 以下玩法 String _sss = "一个有300个以上字符的字符串..."; Paint _paint = new Paint(); Rect _rect = new Rect(); long ti = System.currentTimeMillis(); for(int i =1;i<249;i++){ _paint.getTextBounds(_sss, 0, i, _rect); } System

C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法

C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的 循环放在最外层,以减少CPU跨切循环层的次数. 使用以下代码对嵌套For循环的效率进行测试验证: // For嵌套性能.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream>

浅谈代码的执行效率(2):编译器的威力

在上一篇文章中,我主要表达了这样一个观点:影响程序效率的关键之一是算法,而算法的选择与优化,和是否多一个赋值少一个判断的关系不大.关于算法的选择,我谈到其理论上的复杂度,并不直接反映出效率.因为在实际运用时,数据的规模,特征等等都会涉及到算法的实际效果.一个时间复杂度低的算法并不代表任何情况下的效率都高.这是"实际"和"理论"的区别之一.现在我打算来谈一下另一个比较"实际"的东西:编译器对于程序效率的影响. 那么我们先来看这样一段代码,假设有一个

使用优化器来提升Python程序的执行效率的教程_python

如果不首先想想这句Knuth的名言,就开始进行优化工作是不明智的.可是,你很快写出来加入一些特性的代码,可能会很丑陋,你需要注意了.这篇文章就是为这时候准备的. 那么接下来就是一些很有用的工具和模式来快速优化Python.它的主要目的很简单:尽快发现瓶颈,修复它们并且确认你修复了它们.写一个测试 在你开始优化前,写一个高级测试来证明原来代码很慢.你可能需要采用一些最小值数据集来复现它足够慢.通常一两个显示运行时秒的程序就足够处理一些改进的地方了. 有一些基础测试来保证你的优化没有改变原有代码的行

JavaScript执行效率与性能提升方案_javascript技巧

如何提升JavaScript执行效率与性能在前端开发中位于一个很重要的地方,这节来研究下如何在平时做项目过程中,提升JavaScript性能与运行效率. 循环 循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用.for(;;)和while循环的性能应该说基本(平时使用时)等价. 而事实上,如何使用这两个循环,则

JavaScript的递归之递归与循环示例介绍_javascript技巧

递归与循环 对于不同类型的需要重复计算的问题,循环和递归两种方法各有所长,能给出更直观简单的方案.另一方面,循环和递归的方法可以互相转换.任何一个循环的代码都可以用递归改写,实现相同的功能:反之亦然.在不失去其普遍性的前提下,可以把循环和递归分别用下列伪代码概括. 伪代码格式说明:循环采用while形式:变量不加定义:赋值用:=:条件表达式和执行的语句都写成函数的形式,圆括号内写上相关的值.其他语法方面,尽量接近Javascript的规范. 复制代码 代码如下: //pseudo code of

Javascript执行效率全面总结_基础知识

Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容易规避的问题 Javascript自身执行效率Javascript中的作用域链.闭包.原型继承.eval等特性,在提供各种神奇功能的同时也带来了各种效率问题,用之不慎就会导致执行效率低下. 1.全局导入我们在编码过程中多多少少会使用到一些全局变量(window,document,自定义全局变量等等)

对《30个提高Web程序执行效率的好经验》的理解

阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解和分析,有些有关JS性能的准则,我也测试了它们的差异,大家可以下载DEMO页面,如有理解不正确的地方,请大家指正.也非常欢迎大家补充. 测试环境: OS:Vista; Processor:3.40GHz; Memory: 2.00GB; System type: 32-bit Operating System