CCS中时间统计方法(profile)
2017-01-04 14:52
246 查看
我们以实例来介绍在CCS里如何统计程序的运行时间,内容修改自CCS的教程,程序见后面:
我们将使用CCS的profiling功能来统计标准puts()函数的执行情况。
1. 选择File→Reload Program。
2. 选择Profiler→Enable Clock。标记“√”出现在Profile菜单Enable Clock项的旁边,该选项使能就可计算指令周期。
3. 在Project View中双击文件hello.c.
4. 选择View→Mixed Source/ASM,灰色的汇编指令紧随在C源代码行后面。
5. 将光标放在下述行上:
puts(“hello world!/n”);
6. 点击工具栏按钮 (Toggle Profile_point),该C源代码行和第一条汇编指令被用绿色加亮。
7. 向下移动滚动条,将光标停在以下行上:
for (i = 0; i<BUFSIZE;i++);{
8.
点击工具栏按钮或者在该代码行上点击右键并从弹出菜单中选择Toggle Profile Pt。
有关测试点的统计数据报告显示自前一个测试点或程序开始运行以来到本测试点所需的指令周期数。在这里,第二个测试点的统计数据报告显示自puts()开始执行到该测试点所需的指令周期数。
9. 选择Profile→View Statistics,窗口底部出现一个显示测试点统计数据的区域。
10. 通过拖拽该区域的边缘可调整其大小。
11. 点击(RUN)工具栏按钮 或按F5键运行该程序并在提示窗口中键入一串字符。
12. 注意对第二个测试点所显示的指令周期数,它应该大约为2800个周期(显示的实际数目可能会变化),这是执行puts()函数所需的指令周期数。由于这些指令只执行了一次,所以平均值、总数、最大值和最小值都是相同的。
注:目标系统在测试点处于暂停状态
只要程序运行到一个测试点,它就会自动暂停。所以,当使用测试点时,目标系统应用程序可能不能满足实时期限的要求。(用RTDX则可能实现实时监控,这可参见1.5节。)
13. 执行以下步骤释放测试期间所占用的资源:
o 进入profiler菜单并撤消 Enable Clock使能。
o 点击鼠标右键从弹出菜单中选择Hide从而关闭Profile Statistcs窗口。
o 进入profiler→profile_points, 选择Dlete All并点击OK。
o 进入View菜单,并撤消 Mixed Source/ASM使能。
程序如下:
/* ======== hello.c ======== */
#include <stdio.h>
#include "hello.h"
#define BUFSIZE 30
struct PARMS str =
{
2934,
9432,
213,
9432,
&str
};
/** ======== main ========**/
void main()
{
#ifdef FILEIO
int i;
char scanStr[BUFSIZE];
char fileStr[BUFSIZE];
size_t readSize;
FILE *fptr;
#endif
/* write a string to stdout */
puts("hello world!/n");
#ifdef FILEIO
/* clear char arrays */
for (i = 0; i < BUFSIZE; i++) {
scanStr = 0 /* deliberate syntax error */
fileStr = 0;
}
/* read a string from stdin */
scanf("%s", scanStr);
/* open a file on the host and write char array */
fptr = fopen("file.txt", "w");
fprintf(fptr, "%s", scanStr);
fclose(fptr);
/* open a file on the host and read char array */
fptr = fopen("file.txt", "r");
fseek(fptr, 0L, SEEK_SET);
readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);
printf("Read a %d byte char array: %s /n", readSize, fileStr);
fclose(fptr);
#endif
}
我们将使用CCS的profiling功能来统计标准puts()函数的执行情况。
1. 选择File→Reload Program。
2. 选择Profiler→Enable Clock。标记“√”出现在Profile菜单Enable Clock项的旁边,该选项使能就可计算指令周期。
3. 在Project View中双击文件hello.c.
4. 选择View→Mixed Source/ASM,灰色的汇编指令紧随在C源代码行后面。
5. 将光标放在下述行上:
puts(“hello world!/n”);
6. 点击工具栏按钮 (Toggle Profile_point),该C源代码行和第一条汇编指令被用绿色加亮。
7. 向下移动滚动条,将光标停在以下行上:
for (i = 0; i<BUFSIZE;i++);{
8.
点击工具栏按钮或者在该代码行上点击右键并从弹出菜单中选择Toggle Profile Pt。
有关测试点的统计数据报告显示自前一个测试点或程序开始运行以来到本测试点所需的指令周期数。在这里,第二个测试点的统计数据报告显示自puts()开始执行到该测试点所需的指令周期数。
9. 选择Profile→View Statistics,窗口底部出现一个显示测试点统计数据的区域。
10. 通过拖拽该区域的边缘可调整其大小。
11. 点击(RUN)工具栏按钮 或按F5键运行该程序并在提示窗口中键入一串字符。
12. 注意对第二个测试点所显示的指令周期数,它应该大约为2800个周期(显示的实际数目可能会变化),这是执行puts()函数所需的指令周期数。由于这些指令只执行了一次,所以平均值、总数、最大值和最小值都是相同的。
注:目标系统在测试点处于暂停状态
只要程序运行到一个测试点,它就会自动暂停。所以,当使用测试点时,目标系统应用程序可能不能满足实时期限的要求。(用RTDX则可能实现实时监控,这可参见1.5节。)
13. 执行以下步骤释放测试期间所占用的资源:
o 进入profiler菜单并撤消 Enable Clock使能。
o 点击鼠标右键从弹出菜单中选择Hide从而关闭Profile Statistcs窗口。
o 进入profiler→profile_points, 选择Dlete All并点击OK。
o 进入View菜单,并撤消 Mixed Source/ASM使能。
程序如下:
/* ======== hello.c ======== */
#include <stdio.h>
#include "hello.h"
#define BUFSIZE 30
struct PARMS str =
{
2934,
9432,
213,
9432,
&str
};
/** ======== main ========**/
void main()
{
#ifdef FILEIO
int i;
char scanStr[BUFSIZE];
char fileStr[BUFSIZE];
size_t readSize;
FILE *fptr;
#endif
/* write a string to stdout */
puts("hello world!/n");
#ifdef FILEIO
/* clear char arrays */
for (i = 0; i < BUFSIZE; i++) {
scanStr = 0 /* deliberate syntax error */
fileStr = 0;
}
/* read a string from stdin */
scanf("%s", scanStr);
/* open a file on the host and write char array */
fptr = fopen("file.txt", "w");
fprintf(fptr, "%s", scanStr);
fclose(fptr);
/* open a file on the host and read char array */
fptr = fopen("file.txt", "r");
fseek(fptr, 0L, SEEK_SET);
readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);
printf("Read a %d byte char array: %s /n", readSize, fileStr);
fclose(fptr);
#endif
}
相关文章推荐
- jquery+ajax实现省市区三级联动效果简单示例
- Linux用户管理
- mysql主从同步原理
- 设计模式的六大原则
- RobotArt(SP4)新版本界面增加的新功能,你造多少?急!
- 浅谈Android事件总线框架EventBus
- spring注入方式
- 观《长城》
- 2017.01.03:数组和字符串
- Path Sum
- 每天一个linux命令(5):rm 命令
- 安卓——监听事件
- 我的 2016
- Android emoji显示
- 0104 wrrkmigua ListPopupWindow的使用
- 使用tips-使用maven快速生成webapp、启动
- InstallShield 2015 Premier的Basic MSI Project如何在卸载时删除残留的文件
- 5.JDK环境配置
- linux shell获取show slave status方法
- Matplotlib常用画图代码2