美文网首页
递归时间差(数字计算竟然比字符操作更耗时?)

递归时间差(数字计算竟然比字符操作更耗时?)

作者: 张伟松 | 来源:发表于2018-11-20 18:37 被阅读39次

首先是用获取团队下子集的方法:

static function getChild($user_id) {
    return Db::name('users')->where(['invite_user_id1' => $user_id])->column('user_id');
}

第一种方法:计数器

static function getTeamCount1($user_id) {
    $teamCount = 0;
    #如果人数为零 则停止搜索
    #查找子代 
    $child = self::getChild($user_id);
    if (count($child) != 0) {
        foreach ($child AS $v) {
            $teamCount ++;
            $teamCount += self::getTeamCount1($v); #$v的下级 
        }
    }
    return $teamCount;
}

第二种方法:数组形式


static function getTeamCount2($user_id) { 
    return count(self::getTeam($user_id));
}

static function getTeam($user_id) {
    $team = [];
    #如果人数为零 则停止搜索
    #查找子代 
    $child = self::getChild($user_id);
    if (count($child) != 0) {
        foreach ($child AS $v) {
            array_push($team, $v); #把当前用户放进下级列表
            $team = array_merge($team, self::getteam($v)); #$v的下级 
        }
    }
    return $team;
}

然后微秒计时:

        $user_id = 1;
        $s1 = microtime(true);
        $teamcount1 = UsersLogic::getTeamCount1($user_id);
        $e1 = microtime(true); 
        $t1 = $e1-$s1;
        $s2 = microtime(true);
        $teamcount2 = UsersLogic::getTeamCount2($user_id);[图片上传失败...(image-be226b-1542710054266)]

        $e2 = microtime(true); 
        $t2 = $e2-$s2;
        dd('t1:'.$t1."\nt2:".$t2);

输出结果如下:

t1:0.052999973297119
t2:0.031000137329102

试了好几次,都是t1t2大,为什么?

相关文章

  • 递归时间差(数字计算竟然比字符操作更耗时?)

    首先是用获取团队下子集的方法: 第一种方法:计数器 第二种方法:数组形式 然后微秒计时: 输出结果如下:

  • NSDate

    时间操作 计算时间间隔 时间比较 字符串与时间之间的相互转换 时区 消除时间差

  • 使用ASM统计一个方法执行耗时

    这个例子是:计算一个方法的耗时,进入方法时记录时间,退出方法时计算时间差

  • NSDate、NSTimeInterval 计算时间差

    #计算接口数据返回耗时: 注:NSTimeInterval本身是以秒为单位的值。 #计算任意两个时间点的时间差:

  • 计算时间差

    /** * 计算时间差 * @param publishTimeStamp 时间戳(格式:13位数字) * @pa...

  • 2019-05-20 ANR

    什么是ANR? Application Not Responding 在主线程做耗时操作造成ANR,做耗时的计算 ...

  • 递归是什么(Recursive)

    概述 递归是一种算法,递归是通过调用自己本身达到最终操作的。它与迭代不同,递归是反复调用自己的定义来完成计算操作。...

  • for循环优化

    我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处...

  • kotlin学习之递归

    demo地址 kotlin字符串与数字数字与字符串转换 kotlin递归之阶乘 当传入参数5时的结果2020-08...

  • 基础-1

    递归 在递归中可以使用指针进行数字迭代操作,要注意*num++ (误) -----> (*num)++(对)层次...

网友评论

      本文标题:递归时间差(数字计算竟然比字符操作更耗时?)

      本文链接:https://www.haomeiwen.com/subject/tjgxqqtx.html