1 /*
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
97 }
98
99 double TimeStamp::seconds() const {
100 assert(is_updated(), "must not be clear");
101 jlong new_count = os::elapsed_counter();
102 return TimeHelper::counter_to_seconds(new_count - _counter);
103 }
104
105 jlong TimeStamp::milliseconds() const {
106 assert(is_updated(), "must not be clear");
107 jlong new_count = os::elapsed_counter();
108 return (jlong)TimeHelper::counter_to_millis(new_count - _counter);
109 }
110
111 jlong TimeStamp::ticks_since_update() const {
112 assert(is_updated(), "must not be clear");
113 return os::elapsed_counter() - _counter;
114 }
115
116 TraceTime::TraceTime(const char* title,
117 bool doit) {
118 _active = doit;
119 _verbose = true;
120
121 if (_active) {
122 _accum = NULL;
123 tty->print("[%s", title);
124 tty->flush();
125 _t.start();
126 }
127 }
128
129 TraceTime::TraceTime(const char* title,
130 elapsedTimer* accumulator,
131 bool doit,
132 bool verbose) {
133 _active = doit;
134 _verbose = verbose;
135 if (_active) {
136 if (_verbose) {
137 tty->print("[%s", title);
138 tty->flush();
139 }
140 _accum = accumulator;
141 _t.start();
142 }
143 }
144
145 TraceTime::~TraceTime() {
146 if (_active) {
147 _t.stop();
148 if (_accum!=NULL) _accum->add(_t);
149 if (_verbose) {
150 tty->print_cr(", %3.7f secs]", _t.seconds());
151 tty->flush();
152 }
153 }
154 }
155
156 TraceCPUTime::TraceCPUTime(bool doit,
157 bool print_cr,
158 outputStream *logfile) :
159 _active(doit),
160 _print_cr(print_cr),
161 _starting_user_time(0.0),
162 _starting_system_time(0.0),
163 _starting_real_time(0.0),
164 _logfile(logfile),
165 _error(false) {
166 if (_active) {
167 if (logfile != NULL) {
168 _logfile = logfile;
169 } else {
170 _logfile = tty;
171 }
|
1 /*
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
97 }
98
99 double TimeStamp::seconds() const {
100 assert(is_updated(), "must not be clear");
101 jlong new_count = os::elapsed_counter();
102 return TimeHelper::counter_to_seconds(new_count - _counter);
103 }
104
105 jlong TimeStamp::milliseconds() const {
106 assert(is_updated(), "must not be clear");
107 jlong new_count = os::elapsed_counter();
108 return (jlong)TimeHelper::counter_to_millis(new_count - _counter);
109 }
110
111 jlong TimeStamp::ticks_since_update() const {
112 assert(is_updated(), "must not be clear");
113 return os::elapsed_counter() - _counter;
114 }
115
116 TraceTime::TraceTime(const char* title,
117 bool doit,
118 LogTagType tag) {
119 _active = doit;
120 _verbose = true;
121 _tag = tag;
122 _title = title;
123
124 if (_active) {
125 _accum = NULL;
126 _t.start();
127 }
128 }
129
130 TraceTime::TraceTime(const char* title,
131 elapsedTimer* accumulator,
132 bool doit,
133 bool verbose,
134 LogTagType tag) {
135 _active = doit;
136 _verbose = verbose;
137 _tag = tag;
138 _title = title;
139
140 if (_active) {
141 _accum = accumulator;
142 _t.start();
143 }
144 }
145
146 TraceTime::~TraceTime() {
147 if (_active) {
148 _t.stop();
149 if (_accum!=NULL) _accum->add(_t);
150 if (_verbose) {
151 switch (_tag) {
152 case LogTag::_startuptime :
153 log_info(startuptime)("%s, %3.7f secs", _title, _t.seconds());
154 break;
155 case LogTag::__NO_TAG :
156 default :
157 tty->print_cr("[%s, %3.7f secs]", _title, _t.seconds());
158 tty->flush();
159 }
160 }
161 }
162 }
163
164 TraceCPUTime::TraceCPUTime(bool doit,
165 bool print_cr,
166 outputStream *logfile) :
167 _active(doit),
168 _print_cr(print_cr),
169 _starting_user_time(0.0),
170 _starting_system_time(0.0),
171 _starting_real_time(0.0),
172 _logfile(logfile),
173 _error(false) {
174 if (_active) {
175 if (logfile != NULL) {
176 _logfile = logfile;
177 } else {
178 _logfile = tty;
179 }
|