1b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson/* 2b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Copyright (C) 2011 The Android Open Source Project 3b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 4b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Licensed under the Apache License, Version 2.0 (the "License"); 5b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * you may not use this file except in compliance with the License. 6b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * You may obtain a copy of the License at 7b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 8b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * http://www.apache.org/licenses/LICENSE-2.0 9b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 10b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Unless required by applicable law or agreed to in writing, software 11b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * distributed under the License is distributed on an "AS IS" BASIS, 12b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * See the License for the specific language governing permissions and 14b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * limitations under the License. 15b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson */ 16b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 17b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#ifndef FRAMEWORKS_EX_VARIABLESPEED_JNI_PROFILE_TIMER_H_ 18b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#define FRAMEWORKS_EX_VARIABLESPEED_JNI_PROFILE_TIMER_H_ 19b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 20b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#include <hlogging.h> 21b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#include <time.h> 22b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 23b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#include <string> 24b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 25b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson// Simple profiler for debugging method call duration. 26b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonclass Timer { 27b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson public: 28b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson Timer() : startTime_(clock()) { 29b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 30b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 31b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson virtual ~Timer() { 32b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson PrintElapsed("destructor"); 33b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 34b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 35b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson void PrintElapsed(const char* message) { 36b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson clock_t endTime(clock()); 37b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson LOGD("Timer(%s): %d ms", message, 38b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson static_cast<int>((endTime - startTime_) * 1000 / CLOCKS_PER_SEC)); 39b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 40b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 41b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson size_t GetElapsed() { 42b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson clock_t endTime(clock()); 43b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson return (endTime - startTime_) * 1000 / CLOCKS_PER_SEC; 44b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 45b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 46b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson private: 47b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson clock_t startTime_; 48b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 49b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson DISALLOW_COPY_AND_ASSIGN(Timer); 50b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson}; 51b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 52b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson#endif // FRAMEWORKS_EX_VARIABLESPEED_JNI_PROFILE_TIMER_H_ 53