如何实现高效的C运行时统计

如何实现高效的C运行时统计,第1张

概述我想知道是否有一个很好的方法来监控我的应用程序内部,理想情况下是以现有库的形式. 我的应用程序是大量多线程的,并且使用消息传递系统来在线程之间进行通信和外部世界.我的目标是监视哪些消息发送,哪个频率等 还可以采用更一般的方式来统计其他统计数据,例如每分钟产生多少个线程,调用多少新的/删除的数据,或者更多的具体方面的应用程序;你命名 什么是令人敬畏的是像Google Chrome的“内部页面”,如n 我想知道是否有一个很好的方法来监控我的应用程序内部,理想情况下是以现有库的形式.

我的应用程序是大量多线程的,并且使用消息传递系统来在线程之间进行通信和外部世界.我的目标是监视哪些消息发送,哪个频率等

还可以采用更一般的方式来统计其他统计数据,例如每分钟产生多少个线程,调用多少新的/删除的数据,或者更多的具体方面的应用程序;你命名

什么是令人敬畏的是像Google Chrome的“内部页面”,如net或Chrome://跟踪,但是以命令行方式.

如果有一个通用的图书馆可以适应我的应用程序的特殊性,那将是巨大的.
否则我准备实施一个能做这个工作的小班,但我不知道从哪里开始.我认为最重要的是代码不应该干扰太多,所以表现不会受到影响.

你们有这方面的一些指针吗?

编辑:我的应用程序在linux上运行,在嵌入式环境中,可悲的是不受Valgrind的支持:(

解决方法 我建议在您的代码中,维护增加的计数器.计数器可以是静态类成员或全局变量.如果你使用一个类定义你的计数器,你可以让构造函数用一个名字注册一个存储库.然后,您可以通过查询存储库来查询和重置计数器.
struct Counter {    unsigned long c_;    unsigned long operator++ () { return ++c_; }    operator unsigned long () const { return c_; }    voID reset () { unsigned long c = c_; ATOMIC_DECREMENT(c_,c); }    Counter (std::string name);};struct Counteratomic : public Counter {    unsigned long operator++ () { return ATOMIC_INCREMENT(c_,1); }    Counteratomic (std::string name) : Counter(name) {}};

ATOMIC_INCREMENT将是一个平台特定的机制来增加计数器的原子. GCC为此提供了一个内置的__sync_add_and_fetch. ATOMIC_DECREMENT类似,GCC内置__sync_sub_and_fetch.

struct CounterRepository {    typedef std::map<std::string,Counter *> MapType;    mutable Mutex lock_;    MapType map_;    voID add (std::string n,Counter &c) {        ScopedLock<Mutex> sl(lock_);        if (map_.find(n) != map_.end()) throw n;        map_[n] = &c;    }    Counter & get (std::string n) const {        ScopedLock<Mutex> sl(lock_);        MapType::const_iterator i = map_.find(n);        if (i == map_.end()) throw n;        return *(i->second);    }};CounterRepository counterRepository;Counter::Counter (std::string name) {    counterRepository.add(name,*this);}

如果你知道同一个计数器将被多个线程递增,然后使用Counteratomic.对于特定于线程的计数器,只需使用计数器.

总结

以上是内存溢出为你收集整理的如何实现高效的C运行时统计全部内容,希望文章能够帮你解决如何实现高效的C运行时统计所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1247303.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存