前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tool之ProfileScope

Tool之ProfileScope

作者头像
Taishan3721
发布2021-11-12 18:32:57
5470
发布2021-11-12 18:32:57
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

欢迎关注VxWorks567

如转发 请标明出处!

ScopeTools里还有个成员叫做ProfileScope,从Vx67开始,改名为Performance Profiler

使用这个工具能看到

  • CPU在哪里做了什么
  • 正在调用哪些函数
  • 每个函数又依次调用了哪些函数
  • 整个调用栈中,每一级占用CPU的百分比 它提供了三个视图
  • System view,使用树形结构展示完整的调用栈
  • Function view,每个线程的函数调用列表
  • Process view,进程视图

还是跑个例子,就知道它怎么用了,例如这个代码,加到VxWorks 6里

代码语言:javascript
复制
/*
 * 公众号  VxWorks567
 */
#include <stdlib.h>
#include <taskLib.h>

int profileDelay = 1;
static int result;

static int duplicate(int number)
{
    int counter,useless=0;
    for(counter=0; counter<=(number * 40000); counter++)
        {
        useless++;
        }
    return (2 * number);
    }

static int halve(int number) 
{
    int counter,useless=0;
    for(counter=0; counter<=(number * 10000); counter++)
        {
        useless++;
        }
    return (number/2);
    }

static int calculation(int number)
{
    int toBeReturned;
    if(number%2)
        toBeReturned = duplicate(number);
    else 
        toBeReturned = halve(number);
    return(toBeReturned);
    }

void testProfile() 
{
    for(;;) 
        {
        result = calculation(rand());
        taskDelay(profileDelay);
        }
    return;
    }

代码很简单,为了避免被编译器优化掉,建议在工程属性中将优化选项关闭

然后启动VxWorks 6,在WorkBench里连接Target Connection,并右击选择Attach Performance Profiler

在WorkBench中央位置就会打开它的窗口。这时启动应用程序,几秒钟之后,就可以看到程序里CPU的使用情况了

可以看到例子testProfile()中duplicate()占用的CPU明显多于halve(),右击选择View Source还可以跳转到相应的源码语句

非常强大的工具,VxWorks卖的贵,是有原因滴

我是泰山 专注VX好多年!

一起学习 共同进步!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档