算法运算时间测量

介绍两种最常用的针对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\n\t", ((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\n",WH_cost[0]);
复制代码

 


__EOF__

本文作者刘皇叔
本文链接https://www.cnblogs.com/xiaojianliu/p/8776373.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   刘-皇叔  阅读(1303)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示