• 如何测试Arm的频率


    看了半天终于看懂了Dicky的代码。想通了其实很简单。把原理和伪代码记录一下备忘:)

    最终的原理很简单:

    执行指定的几句汇编(比较好用了指令周期个数),然后计算执行这段代码的时间。


    然后。。。
    。。。
    。。。
    完了-_-b


    当然这其中有几个小的trick

    1 开始执行汇编之前先要把优先级提到最高,汇编也不要太长,尽量防止CPU被别的进程打断
    2 计算执行代码的时间的方法
        Windows下最精确好像也只有Gettickcount了。但是他也只是到ms级别,比起动辄上百Mhz的CPU来说,1ms可以执行上百条指令了,那还测个p啊。。。
         米关系,我可以测试1ms到底做多少次Gettickcount不就好了。。可惜看不到windows的Gettickcount用了多少个指令周期,否则直接就可以算出来了。所以只好用个折中的方案,代码如下
    void GetTimeCycle(int* p)
    {
        int n=1;
        int j;
        int i = GetTickCount();
        while ((j = GetTickCount())==i)
            ++n;
        p[0] = j;
        p[1] = n;
    }
    通过n的计数来得到1ms中执行Gettickcount的次数。这样,测试的精度就变成了Gettickcount所需要的时间了。


    原理和难点就是这些,源码就免了,毕竟是dicky的代码:P
    loop's blog
  • 相关阅读:
    ASP.NET 2.0
    PHP
    SQL 查询逻辑处理顺序
    LEETCODE
    网络学习课程资源
    概率论
    集合论
    图论
    《组合数学》
    离散数学
  • 原文地址:https://www.cnblogs.com/goodloop/p/1357020.html
Copyright © 2020-2023  润新知