Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(730)

Side by Side Diff: base/test/trace_event_analyzer.h

Issue 8678035: Add TraceAnalyzer support for calculating common event rate statistics (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | base/test/trace_event_analyzer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Use trace_analyzer::Query and trace_analyzer::TraceAnalyzer to search for 5 // Use trace_analyzer::Query and trace_analyzer::TraceAnalyzer to search for
6 // specific trace events that were generated by the trace_event.h API. 6 // specific trace events that were generated by the trace_event.h API.
7 // 7 //
8 // Basic procedure: 8 // Basic procedure:
9 // - Get trace events JSON string from base::debug::TraceLog. 9 // - Get trace events JSON string from base::debug::TraceLog.
10 // - Create TraceAnalyzer with JSON string. 10 // - Create TraceAnalyzer with JSON string.
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 ~QueryNode(); 404 ~QueryNode();
405 405
406 Query query_; 406 Query query_;
407 }; 407 };
408 408
409 // TraceAnalyzer helps tests search for trace events. 409 // TraceAnalyzer helps tests search for trace events.
410 class TraceAnalyzer { 410 class TraceAnalyzer {
411 public: 411 public:
412 typedef std::vector<const TraceEvent*> TraceEventVector; 412 typedef std::vector<const TraceEvent*> TraceEventVector;
413 413
414 struct Stats {
415 double min_us;
416 double max_us;
417 double mean_us;
418 double standard_deviation_us;
419 };
420
414 ~TraceAnalyzer(); 421 ~TraceAnalyzer();
415 422
416 // Use trace events from JSON string generated by tracing API. 423 // Use trace events from JSON string generated by tracing API.
417 // Returns non-NULL if the JSON is successfully parsed. 424 // Returns non-NULL if the JSON is successfully parsed.
418 static TraceAnalyzer* Create(const std::string& json_events) 425 static TraceAnalyzer* Create(const std::string& json_events)
419 WARN_UNUSED_RESULT; 426 WARN_UNUSED_RESULT;
420 427
421 // Associate BEGIN and END events with each other. This allows Query(OTHER_*) 428 // Associate BEGIN and END events with each other. This allows Query(OTHER_*)
422 // to access the associated event and enables Query(EVENT_DURATION). 429 // to access the associated event and enables Query(EVENT_DURATION).
423 // An end event will match the most recent begin event with the same name, 430 // An end event will match the most recent begin event with the same name,
(...skipping 30 matching lines...) Expand all
454 const Query& match); 461 const Query& match);
455 462
456 // Find all events that match query and replace output vector. 463 // Find all events that match query and replace output vector.
457 size_t FindEvents(const Query& query, TraceEventVector* output); 464 size_t FindEvents(const Query& query, TraceEventVector* output);
458 465
459 // Helper method: find first event that matches query 466 // Helper method: find first event that matches query
460 const TraceEvent* FindOneEvent(const Query& query); 467 const TraceEvent* FindOneEvent(const Query& query);
461 468
462 const std::string& GetThreadName(const TraceEvent::ProcessThreadID& thread); 469 const std::string& GetThreadName(const TraceEvent::ProcessThreadID& thread);
463 470
471 // Calculate min/max/mean and standard deviation from the times between
472 // adjacent events.
473 static bool GetRateStats(const TraceEventVector& events, Stats* stats);
474
464 private: 475 private:
465 TraceAnalyzer(); 476 TraceAnalyzer();
466 477
467 bool SetEvents(const std::string& json_events) WARN_UNUSED_RESULT; 478 bool SetEvents(const std::string& json_events) WARN_UNUSED_RESULT;
468 479
469 // Read metadata (thread names, etc) from events. 480 // Read metadata (thread names, etc) from events.
470 void ParseMetadata(); 481 void ParseMetadata();
471 482
472 std::map<TraceEvent::ProcessThreadID, std::string> thread_names_; 483 std::map<TraceEvent::ProcessThreadID, std::string> thread_names_;
473 std::vector<TraceEvent> raw_events_; 484 std::vector<TraceEvent> raw_events_;
474 bool allow_assocation_changes_; 485 bool allow_assocation_changes_;
475 486
476 DISALLOW_COPY_AND_ASSIGN(TraceAnalyzer); 487 DISALLOW_COPY_AND_ASSIGN(TraceAnalyzer);
477 }; 488 };
478 489
479 } // namespace trace_analyzer 490 } // namespace trace_analyzer
480 491
481 #endif // BASE_TEST_TRACE_EVENT_ANALYZER_H_ 492 #endif // BASE_TEST_TRACE_EVENT_ANALYZER_H_
OLDNEW
« no previous file with comments | « no previous file | base/test/trace_event_analyzer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698