lab

//以下结果皆为运行1000次平均数
//变量类型测试
    净运行时长:1140 / 1000000 s
    int 100*100*1000 次:19900 / 1000000 s
    register int 100*100*1000 次:4869 / 100000 s
    long long 100*100*1000 次:26117 / 1000000 s
    register long long 100*100*1000 次:25999 / 1000000 s //变化不大,推测是没有存的下long long的寄存器
    short 100*100*1000 次:19953 / 1000000 s
    register short 100*100*1000 次:4467 / 1000000 s
    char 100*100*100*10 次:11695 / 1000000 s
    register char 100*100*100*10 次:5716 / 1000000 s
    float 100*100*1000 次:34497 / 1000000 s
    register float 100*100*1000 次:15214 / 1000000 s
    double 100*100*1000 次:34587 / 1000000 s
    register double 100*100*1000 次:15266 / 1000000 s
    long double 100*100*1000 次:44038 / 1000000 s
    register long double 100*100*1000 次:16606 / 1000000 s
//常数测试(以rand为支撑,均为int未开register情况,故净运行时间较长)
    //我们可以设或运算常数为1
    //四舍五入取整
        净运行时长:222565 / 1000000 s
        | 100*100*1000 次:231196-222565~~ 8631 / 1000000 s -> 1
        & 100*100*1000 次:230421-222565~~ 7856 / 1000000 s -> 1
        ^ 100*100*1000 次:230339-222565~~ 7774 / 1000000 s -> 1
        + 100*100*1000 次:230210-222565~~ 7645 / 1000000 s -> 1
        - 100*100*1000 次:229336-222565~~ 6771 / 1000000 s -> 1
        * 100*100*1000 次:228650-222565~~ 6085 / 1000000 s -> 1
        / 100*100*1000 次:251363-222565~~ 28798 / 1000000 s -> 3 to 4
        % 100*100*1000 次:252069-222565~~ 29544 / 1000000 s -> 3 to 5
//函数调用
    //int型函数
        //函数大小
        1 line(max):
        int 100*100*100 次:34646-23684 ~ ~ 10962 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:33032-23684 ~ ~ 9348 / 1000000 s
        3 line(a^=b,b^=a,a^b):
        int 100*100*100 次:26910-23868 ~ ~ 3042 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:25955-23868 ~ ~ 2087 / 1000000 s
        5 line:
        int work(int &a,int &b)
        {
            a+=b;
            b+=a;
            a+=b;
            a-=b;
            b-=a;
            return 0;
        }
        int 100*100*100 次:31038-23648 ~ ~ 7390 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:28577-23648 ~ ~ 4929 / 1000000 s
        
        //传参个数
        1 num:
        int work(int &k)
        {
            return k;
        }
        int 100*100*100 次:13750-12666 ~ ~ 1084 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:12986-12666 ~ ~ 320 / 1000000 s
        3 num:
        int work(int &a,int &b,int &c)
        {
            return a;
        }
        int 100*100*100 次:36482-34758 ~ ~ 1724 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:34989-34758 ~ ~ 231 / 1000000 s
        5 num:
        int work(int &a,int &b,int &c,int &d,int &f)
        {
            return a;
        }
        int 100*100*100 次:59107-56833 ~ ~ 2274 / 1000000 s
        __attribute__((always_inline)) 100*100*100 次:57352-56833 ~ ~ 519 / 1000000 s
//算法常数(经运行时长因测试算法而异,统一为被减数)
    -----
    swap() 100*100*1000 次:305561-222565~~ 83036 / 1000000 s -> 9 to 10
    a^=b,b^=a,a^=b 100*100*1000 次:243165-222565~~ 20600 / 1000000 s -> 2 to 3
    -----
    //数组大小为100,左右端点确定采用rand和^交换
    //均赋值为0
    memset() 100*100*100 次:46571-35350 ~ ~ 11221 / 1000000 s
    for      100*100*100 次:61073-35350 ~ ~ 25723 / 1000000 s
    -----

posted @ 2022-06-17 15:08  hzoiooo  阅读(16)  评论(0编辑  收藏  举报