• 我的个人编程思想——什么时候才能有速度可比性?


    我缺乏团队经验,这次就有机会参与到团里。

    和同事讨论到一个话题,就是“for(int i=0; i<len; i++)”遍历方式,而我不喜这种用法,就用了“for(obj in list)”的方式。同事一看,说我的方式会比他的方式要慢,不赞同我的用法。

    当时我没有反驳,因为我没想过这个问题,慢么?

    现在想回来,它不慢,就好比C++与Java比,一定有绝大多数人会说,C++肯定比java快。

    我还是那样说,java不比C++慢。

    为什么会这么认定?理由是,假定用C++处理的东西需要1小时完成,而java处理同样东西时需要3小时。

    是的,这样介定起来,的确java比c++慢。不过!!!再假定一下,用C++处理的东西需要2小时完成,那么很明显,java就需要6小时。

    以此类推,c++处理时间每加1小时,java就需要加3小时。

    对我而言,不管c++加的量是多少,而java增加量的速度是不变的,这里要理解清楚什么叫增加的速度?

    例如这里有一个方程为a^2=b,从这里来看,每增加1,那么b增加多少,就得看每次增加1的a是多少,才能确定具体这次a增加1,b会增加少。

    有可能会达当a增加1时,b就会增加几亿,几十亿等天文数字。所谓增加的速度,在学术上名为时间复杂度,同样如果考虑在空间上面,就会有空间复杂度。

    那么回到c++与java的对比,他们之间的增长速度是对等的,都是同一个时间复杂度。

    这时候反而使用java要比c++更多时候会有更多方面的优越性了,例如跨平台,垃垃回收等。

    什么是速度,对我而言,它是属于那种级别的速度,例如有最简的有n,logn和n*logn。

    二分查找,就是对于预排后的查找,例如数据库的索引就是二分查找索引,快速找到资源。logn是一种随着n的增大,logn的增加速度就会不断接近于0,接近于0跟等于0有区别么?

    是的,可以说没区别,像这样的二分查找,就等于说不需要时间去做。

    换名话说,logn就等于1,而n*logn就等于n。

    回到“for(int i=0; i<len; i++)”与“for(obj in list)”方式,当有人再提起他们的速度谁快时,就可以直接问他,你会用c++还是用java,里面的道理同等。

  • 相关阅读:
    yii2自带的backend,frontend不够用,添加一个后台模块怎么做?
    用yii2给app写接口(上)
    .htaccees什么鬼?怎么用?
    Nginx的伪静态是什么
    论中国为什么造不出cpu和操作系统
    Linux上查看用户名和组并把特定用户放到特定的组之下
    CentOS7上LNMP安装包一步搭建LNMP环境
    杭州考驾照-2017.4
    深入理解Nginx
    CentOS7上安装并配置Nginx、PHP、MySql
  • 原文地址:https://www.cnblogs.com/hvicen/p/6996464.html
Copyright © 2020-2023  润新知