Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // Trace events to track application performance. Events consist of a name | 5 // Trace events to track application performance. Events consist of a name |
| 6 // a type (BEGIN, END or INSTANT), a tracking id and extra string data. | 6 // a type (BEGIN, END or INSTANT), a tracking id and extra string data. |
| 7 // In addition, the current process id, thread id, a timestamp down to the | 7 // In addition, the current process id, thread id, a timestamp down to the |
| 8 // microsecond and a file and line number of the calling location. | 8 // microsecond and a file and line number of the calling location. |
| 9 // | 9 // |
| 10 // The current implementation logs these events into a log file of the form | 10 // The current implementation logs these events into a log file of the form |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 #endif | 22 #endif |
| 23 | 23 |
| 24 #include <string> | 24 #include <string> |
| 25 | 25 |
| 26 #include "base/lock.h" | 26 #include "base/lock.h" |
| 27 #include "base/scoped_ptr.h" | 27 #include "base/scoped_ptr.h" |
| 28 #include "base/singleton.h" | 28 #include "base/singleton.h" |
| 29 #include "base/time.h" | 29 #include "base/time.h" |
| 30 #include "base/timer.h" | 30 #include "base/timer.h" |
| 31 | 31 |
| 32 #if 1 // Set to 0 to compile with tracing. | |
|
Mark Mentovai
2009/08/20 01:44:34
Can we make this something like #ifndef ENABLE_TRA
| |
| 33 #define TRACE_EVENT_BEGIN(name, id, extra) ((void) 0) | |
| 34 #define TRACE_EVENT_END(name, id, extra) ((void) 0) | |
| 35 #define TRACE_EVENT_INSTANT(name, id, extra) ((void) 0) | |
| 36 | |
| 37 #else | |
| 32 // Use the following macros rather than using the TraceLog class directly as the | 38 // Use the following macros rather than using the TraceLog class directly as the |
| 33 // underlying implementation may change in the future. Here's a sample usage: | 39 // underlying implementation may change in the future. Here's a sample usage: |
| 34 // TRACE_EVENT_BEGIN("v8.run", documentId, scriptLocation); | 40 // TRACE_EVENT_BEGIN("v8.run", documentId, scriptLocation); |
| 35 // RunScript(script); | 41 // RunScript(script); |
| 36 // TRACE_EVENT_END("v8.run", documentId, scriptLocation); | 42 // TRACE_EVENT_END("v8.run", documentId, scriptLocation); |
| 37 | 43 |
| 38 // Record that an event (of name, id) has begun. All BEGIN events should have | 44 // Record that an event (of name, id) has begun. All BEGIN events should have |
| 39 // corresponding END events with a matching (name, id). | 45 // corresponding END events with a matching (name, id). |
| 40 #define TRACE_EVENT_BEGIN(name, id, extra) \ | 46 #define TRACE_EVENT_BEGIN(name, id, extra) \ |
| 41 Singleton<base::TraceLog>::get()->Trace(name, \ | 47 Singleton<base::TraceLog>::get()->Trace(name, \ |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 56 __LINE__) | 62 __LINE__) |
| 57 | 63 |
| 58 // Record that an event (of name, id) with no duration has happened. | 64 // Record that an event (of name, id) with no duration has happened. |
| 59 #define TRACE_EVENT_INSTANT(name, id, extra) \ | 65 #define TRACE_EVENT_INSTANT(name, id, extra) \ |
| 60 Singleton<base::TraceLog>::get()->Trace(name, \ | 66 Singleton<base::TraceLog>::get()->Trace(name, \ |
| 61 base::TraceLog::EVENT_INSTANT, \ | 67 base::TraceLog::EVENT_INSTANT, \ |
| 62 reinterpret_cast<const void*>(id), \ | 68 reinterpret_cast<const void*>(id), \ |
| 63 extra, \ | 69 extra, \ |
| 64 __FILE__, \ | 70 __FILE__, \ |
| 65 __LINE__) | 71 __LINE__) |
| 72 #endif | |
|
Mark Mentovai
2009/08/20 01:44:34
Put a comment saying what you're ending, whatever
| |
| 66 | 73 |
| 67 namespace base { | 74 namespace base { |
| 68 class ProcessMetrics; | 75 class ProcessMetrics; |
| 69 } | 76 } |
| 70 | 77 |
| 71 namespace base { | 78 namespace base { |
| 72 | 79 |
| 73 class TraceLog { | 80 class TraceLog { |
| 74 public: | 81 public: |
| 75 enum EventType { | 82 enum EventType { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 117 FILE* log_file_; | 124 FILE* log_file_; |
| 118 Lock file_lock_; | 125 Lock file_lock_; |
| 119 TimeTicks trace_start_time_; | 126 TimeTicks trace_start_time_; |
| 120 scoped_ptr<base::ProcessMetrics> process_metrics_; | 127 scoped_ptr<base::ProcessMetrics> process_metrics_; |
| 121 RepeatingTimer<TraceLog> timer_; | 128 RepeatingTimer<TraceLog> timer_; |
| 122 }; | 129 }; |
| 123 | 130 |
| 124 } // namespace base | 131 } // namespace base |
| 125 | 132 |
| 126 #endif // BASE_TRACE_EVENT_H_ | 133 #endif // BASE_TRACE_EVENT_H_ |
| OLD | NEW |