zoukankan      html  css  js  c++  java
  • 算法运算时间测量

    介绍两种最常用的针对TI CCS平台DSP开发过程中,算法运行时间测量的方法。一种是在带SYS/BIOS系统的项目中使用比较方便,一种是不带系统裸机程序中使用。两个测量时间的方式精度都是一个cycle,如果CPU频率为1GHz,则一个cycle为10纳秒。只不过处理成毫秒ms,再低意义不大。当然CCS中还自带profile性能分析器来查看运行时钟/周期数,还可以用C标准库提供的time.h。都是可以,看个人方便。

    带SYS/BIOS系统,测量算法运算时间程序

    在cfg配置文件中开始Timestamp模块:var Timestamp = xdc.useModule('xdc.runtime.Timestamp'); 

    #include <xdc/runtime/Types.h>
    #include <xdc/runtime/Timestamp.h>   
    Types_FreqHz freq;
    Uint32 start;
    Timestamp_getFreq(&freq);
    start = Timestamp_get32();
     //////////////////////////////////
     //算法开始
    //算法结束
     //////////////////////////////////
    printf("Timestamp1 is %f ms
    	", ((double)(Timestamp_get32() - start)/(double)freq.lo)*1000);

    不带系统裸机程序,测量算法运算时间程序

    在C66x core上有两个计数寄存器TSCH/TSCL,与CPU同频,共同表示一个64bit数,CPU运行一个cycle,该寄存器加1,因此可以用来准确的测量CPU在个执行段中消耗的cycles。

    #include <c6x.h>
    <pre name="code" class="cpp">    unsigned long long WH_time[10];
        double WH_cost[10];
        TSCH = 0;
        TSCL = 0;
        WH_time[0]= _itoll(TSCH, TSCL);
        //////////////////////////////////
        //算法开始
        //算法结束
        //////////////////////////////////        
        WH_time[1] = _itoll(TSCH, TSCL);
        WH_cost[0] = (double)(WH_time[1] - WH_time[0])/1000000.0;
        printf("times = %f ms
    ",WH_cost[0]);
  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/xiaojianliu/p/8776373.html
Copyright © 2011-2022 走看看