为什么说静态代码能提升代码性能?能减少测试?求指点一二 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vjnjc
V2EX    程序员

为什么说静态代码能提升代码性能?能减少测试?求指点一二

  •  
  •   vjnjc 2014-07-29 23:51:52 +08:00 3540 次点击
    这是一个创建于 4148 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,刚刚我在看Stack Overflow的架构解析(http://www.csdn.net/article/2014-07-22/2820774-stackoverflow-update-560m-pageviews-a-month-25-servers)。

    文中提及so的代码里大量应用了静态代码,这使得性能提高了,测试减少了。身为一个大量spring everywhere的javaee程序员,我写的代码都是spring注入的,大量运用了对象,单元测试里也都是spring注入的。我难以想像大量的静态方法怎么运作。比如javaee的model是大量的传输用的实体,我不能想像怎么用静态的方式实现这些业务数据。

    有没有有经验的程序员来指点一二,大部分都是静态逻辑的程序都是怎么设计的?


    节选:

    编码

    大量使用静态类和方法,为了更简单及更好的性能


    测试

    快速迭代和遗弃
    许多测试都是发布队伍完成的。开发拥有一个同样的SQL服务器,并且运行在相同的Web层,因此性能测试并不会糟糕。
    非常少的测试。Stack Overflow并没有进行太多的单元测试,因为他们使用了大量的静态代码,还有一个非常活跃的社区。
    4 条回复    2014-07-30 08:32:56 +08:00
    incompatible
        1
    incompatible  
       2014-07-30 00:51:24 +08:00   1
    spring managed bean多数是singleton的吧
    使用一个singleton对象的方法跟跟使用静态方法没有本质区别

    至于说这样能提高性能,我也想不明白是为什么
    Ricepig
        2
    Ricepig  
       2014-07-30 01:01:24 +08:00   1
    我觉得说的就是传统的C语言那种代码+数据结构的方式,用状态机的方式编程。

    这样可以去掉函数调用时多态(虚表)造成的调用损失,甚至可以方便地inline去掉函数调用的损失。

    “比如javaee的model是大量的传输用的实体,我不能想像怎么用静态的方式实现这些业务数据。”

    这其实很简单,把以前的member function转换为static function以后,添加一个对实体对象的引用参数就好。

    typedef struct PointA
    {
    int a;
    int b;
    } Point;

    static double distance(Point* pt1, Point* pt2);

    static void offset(Point* pt, double xOffset, double yOffset);
    cxe2v
        3
    cxe2v  
       2014-07-30 08:22:34 +08:00   1
    静态代码貌似是在编译时就确定了的?不用在运行时确定状态的话,那确实省了点性能
    timonwong
        4
    timonwong  
       2014-07-30 08:32:56 +08:00   1
    使用静态代码,测试减少指的是 static typing language 吧,靠类型系统来减少测试(当然也可以大幅度提升性能)。


    静态类和静态方法就是降低虚函数开销。
    关于     帮助文档     自助推广系统     < href="https://blog.v2ex.com/" class="dark" target="_blank">博客     API     FAQ     Solana     2628 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 11:56 PVG 19:56 LAX 03:56 JFK 06:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86