zoukankan      html  css  js  c++  java
  • 【转】程序细节时间开销

    源自Shinecheng~

     今天有一题一直TLE,本来以为是取模运算超时,结果最后证明是求绝对值超时。
    简单记录今天的测试结果(循环10^8次。每个循环中有100个相同操作):

    #define abs(a) ((a)>0?(a):(-(a))
    操作:lala = abs(i);
    时间:7800ms

    操作: if(i > 0) lala = i; else lala = -i;
    时间:8000ms

    操作 lala = i + 1000000000;
    时间:3350ms

    #define MOD ((1<<20)-1)
    操作 lala = i % MOD;
    时间:44300ms

    操作 lala = i & MOD;
    时间: 3351ms


    #define MOD ((1<<20))
    操作 lala = i % MOD;
    时间:7975ms

    操作 lala = i & (MOD-1);
    时间: 3350ms

    当MOD是形如1<<20这样的数时,%运算会比其他情况快很多(编译器优化吧)。
    但是,如果采用技巧 &(MOD-1)的话,更快!(只对正数有效的样子。。。)

    当我们用abs的目的,只是为了让那个数非负,那用 加上一个很大的数 时间更快。。

  • 相关阅读:
    贝叶斯网路的采样
    马尔可夫蒙特卡洛采样法
    高斯分布的采样
    常见的采样方法
    正则化
    随机梯度下降
    机器学习中的优化问题
    【原】涉及数据库的单元测试-JTeser
    高度和宽度
    定位position
  • 原文地址:https://www.cnblogs.com/-sunshine/p/3402441.html
Copyright © 2011-2022 走看看