| // Copyright 2019 The Fuchsia 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 SRC_DEVELOPER_DEBUG_ZXDB_COMMON_PERF_TEST_H_ | |
| #define SRC_DEVELOPER_DEBUG_ZXDB_COMMON_PERF_TEST_H_ | |
| #include <lib/zx/time.h> | |
| #include <string> | |
| #include "src/lib/fxl/macros.h" | |
| namespace zxdb { | |
| // Initializes and finalizes the perf log. These functions should be called at | |
| // the beginning and end (respectively) of running all the performance tests. | |
| // The init function returns true on success. | |
| bool InitPerfLog(const std::string& log_path); | |
| void FinalizePerfLog(); | |
| // Writes to the perf result log the given 'value' resulting from the named | |
| // 'test'. The units are to aid in reading the log by people. | |
| void LogPerfResult(const char* test_suite_name, const char* test_name, double value, | |
| const char* units); | |
| // 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: | |
| PerfTimeLogger(const char* test_suite_name, const char* test_name); | |
| ~PerfTimeLogger(); | |
| void Done(); | |
| private: | |
| bool logged_ = false; | |
| std::string test_suite_name_; | |
| std::string test_name_; | |
| zx::time start_; | |
| FXL_DISALLOW_COPY_AND_ASSIGN(PerfTimeLogger); | |
| }; | |
| } // namespace zxdb | |
| #endif // SRC_DEVELOPER_DEBUG_ZXDB_COMMON_PERF_TEST_H_ |