日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

chromium之histogram.h

發(fā)布時(shí)間:2023/12/2 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 chromium之histogram.h 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

histogram不知道是干啥的

// Histogram is an object that aggregates statistics, and can summarize them in // various forms, including ASCII graphical, HTML, and numerically (as a // vector of numbers corresponding to each of the aggregating buckets).

google翻譯

//直方圖是匯總統(tǒng)計(jì)信息的對(duì)象,可以將它們匯總 //各種形式,包括ASCII圖形,HTML和數(shù)字(如 //每個(gè)聚合桶對(duì)應(yīng)的數(shù)字向量)。

?直方圖——不就是統(tǒng)計(jì)用的,PPT還有餅圖什么的


?

不管了,看看怎么實(shí)現(xiàn)的,就知道是干嘛用的了。

瞄一下,有沒有引用不認(rèn)識(shí)的頭文件

histogram.cc

#include "base/histogram.h"#include <math.h> #include <string>#include "base/logging.h" #include "base/pickle.h" #include "base/string_util.h"

有一個(gè)!

#include "base/pickle.h"

參見分析chromium之pickle,我們知道該類提供基本的二進(jìn)制打包、解包的功能。這樣代碼就能繼續(xù)看下去了

這個(gè)pickle在頭文件里有用到

bool Serialize(Pickle* pickle) const;bool Deserialize(void** iter, const Pickle& pickle);

序列化一般是進(jìn)程間通訊傳遞數(shù)據(jù)用的

序列化在什么時(shí)候用:

當(dāng)你想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫中時(shí)候;
當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;
當(dāng)你想通過RMI傳輸對(duì)象的時(shí)候;

?

一個(gè)類,有沒有掌握——給你頭文件,你會(huì)不會(huì)使用里面的函數(shù)——會(huì)了,這個(gè)類你就懂了。

class Pickle;class Histogram {public: //----------------------------------------------------------------------------// Statistic values, developed over the life of the histogram.class SampleSet {public:explicit SampleSet();// Adjust size of counts_ for use with given histogram.void Resize(const Histogram& histogram);void CheckSize(const Histogram& histogram) const;// Accessor for histogram to make routine additions.void Accumulate(Sample value, Count count, size_t index);// Accessor methods.Count counts(size_t i) const { return counts_[i]; }Count TotalCount() const;int64 sum() const { return sum_; }int64 square_sum() const { return square_sum_; }// Arithmetic manipulation of corresponding elements of the set.void Add(const SampleSet& other);void Subtract(const SampleSet& other);bool Serialize(Pickle* pickle) const;bool Deserialize(void** iter, const Pickle& pickle);protected:// Actual histogram data is stored in buckets, showing the count of values// that fit into each bucket. Counts counts_;// Save simple stats locally. Note that this MIGHT get done in base class// without shared memory at some point.int64 sum_; // sum of samples.int64 square_sum_; // sum of squares of samples. };//---------------------------------------------------------------------------- Histogram(const char* name, Sample minimum,Sample maximum, size_t bucket_count);Histogram(const char* name, base::TimeDelta minimum,base::TimeDelta maximum, size_t bucket_count);virtual ~Histogram();void Add(int value);// Accept a TimeDelta to increment.void AddTime(base::TimeDelta time) {Add(static_cast<int>(time.InMilliseconds()));}void AddSampleSet(const SampleSet& sample);// The following methods provide graphical histogram displays.void WriteHTMLGraph(std::string* output) const;void WriteAscii(bool graph_it, const std::string& newline,std::string* output) const;// Support generic flagging of Histograms.// 0x1 Currently used to mark this histogram to be recorded by UMA..// 0x8000 means print ranges in hex.void SetFlags(int flags) { flags_ |= flags; }void ClearFlags(int flags) { flags_ &= ~flags; }int flags() const { return flags_; }virtual BucketLayout histogram_type() const { return EXPONENTIAL; }// Convenience methods for serializing/deserializing the histograms.// Histograms from Renderer process are serialized and sent to the browser.// Browser process reconstructs the histogram from the pickled version// accumulates the browser-side shadow copy of histograms (that mirror// histograms created in the renderer).// Serialize the given snapshot of a Histogram into a String. Uses// Pickle class to flatten the object.static std::string SerializeHistogramInfo(const Histogram& histogram,const SampleSet& snapshot);// The following method accepts a list of pickled histograms and// builds a histogram and updates shadow copy of histogram data in the// browser process.static bool DeserializeHistogramInfo(const std::string& histogram_info);//----------------------------------------------------------------------------// Accessors for serialization and testing.//----------------------------------------------------------------------------const std::string histogram_name() const { return histogram_name_; }Sample declared_min() const { return declared_min_; }Sample declared_max() const { return declared_max_; }virtual Sample ranges(size_t i) const { return ranges_[i];}virtual size_t bucket_count() const { return bucket_count_; }// Snapshot the current complete set of sample data.// Override with atomic/locked snapshot if needed.virtual void SnapshotSample(SampleSet* sample) const;// ... }

?

看一下測試用例

// Check for basic syntax and use. TEST(HistogramTest, StartupShutdownTest) {// Try basic constructionHistogram histogram("TestHistogram", 1, 1000, 10);Histogram histogram1("Test1Histogram", 1, 1000, 10);LinearHistogram linear_histogram("TestLinearHistogram", 1, 1000, 10);LinearHistogram linear_histogram1("Test1LinearHistogram", 1, 1000, 10);// Use standard macros (but with fixed samples)HISTOGRAM_TIMES("Test2Histogram", TimeDelta::FromDays(1));HISTOGRAM_COUNTS("Test3Histogram", 30);DHISTOGRAM_TIMES("Test4Histogram", TimeDelta::FromDays(1));DHISTOGRAM_COUNTS("Test5Histogram", 30);ASSET_HISTOGRAM_COUNTS("Test6Histogram", 129);// Try to construct samples. Histogram::SampleSet sample1;Histogram::SampleSet sample2;// Use copy constructor of SampleSetsample1 = sample2;Histogram::SampleSet sample3(sample1);// Finally test a statistics recorder, without really using it. StatisticsRecorder recorder; }

?

看一下效果,瀏覽器地址欄輸入:chrome://histograms/

?

轉(zhuǎn)載于:https://www.cnblogs.com/ckelsel/p/9032599.html

總結(jié)

以上是生活随笔為你收集整理的chromium之histogram.h的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码久久久久成人app | 特黄三级 | 91麻豆精品91久久久久同性 | 91精品国产99久久久久久红楼 | 国产三级在线 | 美女被c出白浆 | 中文在线观看av | 久久久999成人 | 翔田千里x88aⅴ | 男人操女人动态图 | 91精品国产高清一区二区三区蜜臀 | 成人免费黄色网址 | juliaann第一次和老师 | 无码视频一区二区三区 | 欧美草草 | 久久天天| 精品人妻久久久久久888不卡 | 四虎一国产精品一区二区影院 | 久久99精品久久久水蜜桃 | 欧美成免费 | 男女搞鸡网站 | 亚洲精品国产精品国自产观看浪潮 | 红桃视频网站 | 久久久久久亚洲中文字幕无码 | 香蕉视频91 | 豆花视频在线 | 免费精品一区二区 | 中文字幕精品久久久久人妻红杏1 | 午夜伦理一区二区 | 四虎影视永久 | 久久久久久久国产 | av网址在线免费观看 | 爽妇综合网 | 天堂av手机在线 | 亚洲人精品午夜射精日韩 | 久久美女视频 | 久久午夜免费视频 | 涩涩成人网 | 国产亚洲久久 | h网站在线播放 | 中文字幕一二三区 | 美女少妇av | 国产精品麻豆一区二区 | 91福利社在线观看 | 国产亚洲精品成人a | 手机在线看片 | 日日摸日日干 | 日韩 欧美 亚洲 | 女人久久久久 | 天堂视频一区二区 | 国产一卡二卡在线播放 | 男女啪啪资源 | 拍真实国产伦偷精品 | 噼里啪啦国语高清 | 91色综合| 日韩欧美xxx| 国产乱大交| 抽插丰满内射高潮视频 | 伊人天堂在线 | 丁香花电影免费播放在线观看 | 精品国产aⅴ一区二区三区四川人 | 黄色1级毛片| 亚洲香蕉一区 | 国产视频四区 | 亚洲一区二区三区四区在线观看 | 国产成人在线看 | 澳门黄色网 | 日韩欧美一区二区三区久久婷婷 | 亚洲熟妇中文字幕五十中出 | 成人一区在线观看 | 少妇高潮惨叫久久久久久 | 久草影视在线观看 | 精品人妻人人做人人爽夜夜爽 | 91黄色片 | 亚洲精品一区中文字幕乱码 | 性高湖久久久久久久久免费 | 黄色成人在线播放 | 国产高清99 | 99夜色| 欧美一区二区国产 | 内射毛片内射国产夫妻 | 国产第一区第二区 | 伊人网在线视频 | 98国产视频| 国产成人精品无码免费看在线 | 91综合久久 | 漂亮人妻被中出中文字幕 | 每日av在线 | 久久艹av| 99成人在线观看 | 日韩av中字 | jizzjizz日本人 | 亚洲最大福利网 | 在线观看免费黄网站 | 天天干狠狠干 | 一本久道综合色婷婷五月 | 亚洲成人午夜电影 | 制服丝袜第一页在线观看 | 人妻av一区二区三区 |