1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 package org.apache.giraph.time;
20
21 import java.util.concurrent.TimeUnit;
22
23 /**
24 * Utility methods for Time classes.
25 */
26 public class Times {
27 /** Do not instantiate */
28 private Times() { }
29
30 /**
31 * Convenience method to measure time in a given TimeUnit.
32 *
33 * @param time Time instance to use
34 * @param timeUnit TimeUnit to measure in
35 * @return long measured time in TimeUnit dimension
36 */
37 public static long get(Time time, TimeUnit timeUnit) {
38 return timeUnit.convert(time.getNanoseconds(), TimeUnit.NANOSECONDS);
39 }
40
41 /**
42 * Convenience method to get time since the beginning of an event in a given
43 * TimeUnit.
44 *
45 * @param time Time object used for measuring.
46 * @param timeUnit TimeUnit to use for dimension.
47 * @param startTime beginning time to diff against
48 * @return time elapsed since startTime in TimeUnit dimension.
49 */
50 public static long getDiff(Time time, TimeUnit timeUnit, long startTime) {
51 return get(time, timeUnit) - startTime;
52 }
53
54 /**
55 * Convenience method to get milliseconds since a previous milliseconds
56 * point.
57 *
58 * @param time Time instance to use
59 * @param previousMilliseconds Previous milliseconds
60 * @return Milliseconds elapsed since the previous milliseconds
61 */
62 public static long getMillisecondsSince(Time time,
63 long previousMilliseconds) {
64 return time.getMilliseconds() - previousMilliseconds;
65 }
66
67 /**
68 * Convenience method to get milliseconds since a previous milliseconds
69 * point.
70 *
71 * @param time Time instance to use
72 * @param previousMs Previous milliseconds
73 * @return Milliseconds elapsed since the previous milliseconds
74 */
75 public static long getMsSince(Time time, long previousMs) {
76 return getMillisecondsSince(time, previousMs);
77 }
78
79 /**
80 * Convenience method to get microseconds since a previous microseconds point.
81 *
82 * @param time Time instance to use
83 * @param previousMicros Previous microseconds
84 * @return Microseconds elapsed since the previous microseconds
85 */
86 public static long getMicrosSince(Time time, long previousMicros) {
87 return time.getMicroseconds() - previousMicros;
88 }
89
90 /**
91 * Convenience method to get nanoseconds since a previous nanoseconds
92 * point.
93 *
94 * @param time Time instance to use
95 * @param previousNanoseconds Previous nanoseconds
96 * @return Nanoseconds elapsed since the previous nanoseconds
97 */
98 public static long getNanosecondsSince(Time time, long previousNanoseconds) {
99 return time.getNanoseconds() - previousNanoseconds;
100 }
101
102 /**
103 * Convenience method to get nanoseconds since a previous nanoseconds
104 * point.
105 *
106 * @param time Time instance to use
107 * @param previousNanos Previous nanoseconds
108 * @return Nanoseconds elapsed since the previous nanoseconds
109 */
110 public static long getNanosSince(Time time, long previousNanos) {
111 return getNanosecondsSince(time, previousNanos);
112 }
113
114 /**
115 * Convenience method to get seconds since a previous seconds
116 * point.
117 *
118 * @param time Time instance to use
119 * @param previousSeconds Previous seconds
120 * @return Seconds elapsed since the previous seconds
121 */
122 public static int getSecondsSince(Time time, int previousSeconds) {
123 return time.getSeconds() - previousSeconds;
124 }
125
126 /**
127 * Convenience method to get seconds since a previous seconds
128 * point.
129 *
130 * @param time Time instance to use
131 * @param previousSec Previous seconds
132 * @return Seconds elapsed since the previous seconds
133 */
134 public static int getSecSince(Time time, int previousSec) {
135 return getSecondsSince(time, previousSec);
136 }
137 }