13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/* 23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project 33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * 43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License. 63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at 73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * 83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * 103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and 143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License. 153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox; 183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 19f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringertimport android.os.SystemClock; 203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/** 22f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * Tracks latency in wall-clock time. Since {@link #getLatency} returns an {@code int}, 23f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * latencies over 2^31 ms (~ 25 days) cannot be measured. 24f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * This class uses {@link SystemClock#uptimeMillis} which does not advance during deep sleep. 253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpublic class LatencyTracker { 273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert /** 29f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * Start time, in milliseconds as returned by {@link SystemClock#uptimeMillis}. 303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 31f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert private long mStartTime; 323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert /** 34f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * Creates a new latency tracker and sets the start time. 353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 36f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert public LatencyTracker() { 37f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert mStartTime = SystemClock.uptimeMillis(); 383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 403e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert /** 41f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * Resets the start time. 423e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 43f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert public void reset() { 44f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert mStartTime = SystemClock.uptimeMillis(); 453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert /** 48f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert * Gets the number of milliseconds since the object was created, or {@link #reset} was called. 493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 50f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert public int getLatency() { 51f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert long now = SystemClock.uptimeMillis(); 52f95ce100dcbc77794b79b0187c566bb58b5978d3Bjorn Bringert return (int) (now - mStartTime); 533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert} 56