1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.bcel;
19
20 public class NanoTimer {
21
22 private long timeNanos;
23
24 public void reset() {
25 timeNanos = 0;
26 }
27
28 public NanoTimer start() {
29 timeNanos -= System.nanoTime();
30 return this;
31 }
32
33 public void stop() {
34 timeNanos += System.nanoTime();
35 }
36
37 public void subtract(final NanoTimer o) {
38 timeNanos -= o.timeNanos;
39 }
40
41 /**
42 * May ony be called after stop has been called as many times as start.
43 */
44 @Override
45 public String toString() {
46 return (double) timeNanos / 1000000000 + " s";
47 }
48
49 }