|  | // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef BASE_TEST_PERF_TIME_LOGGER_H_ | 
|  | #define BASE_TEST_PERF_TIME_LOGGER_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/basictypes.h" | 
|  | #include "base/timer/elapsed_timer.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | // Automates calling LogPerfResult for the common case where you want | 
|  | // to measure the time that something took. Call Done() when the test | 
|  | // is complete if you do extra work after the test or there are stack | 
|  | // objects with potentially expensive constructors. Otherwise, this | 
|  | // class with automatically log on destruction. | 
|  | class PerfTimeLogger { | 
|  | public: | 
|  | explicit PerfTimeLogger(const char* test_name); | 
|  | ~PerfTimeLogger(); | 
|  |  | 
|  | void Done(); | 
|  |  | 
|  | private: | 
|  | bool logged_; | 
|  | std::string test_name_; | 
|  | ElapsedTimer timer_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(PerfTimeLogger); | 
|  | }; | 
|  |  | 
|  | }  // namespace base | 
|  |  | 
|  | #endif  // BASE_TEST_PERF_TIME_LOGGER_H_ |