1d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// found in the LICENSE file. 4d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 5d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/test/perf_log.h" 6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/files/file_util.h" 8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/logging.h" 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace base { 11d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)static FILE* perf_log_file = NULL; 13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 14d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)bool InitPerfLog(const FilePath& log_file) { 15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (perf_log_file) { 16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // trying to initialize twice 17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) NOTREACHED(); 18d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return false; 19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) perf_log_file = OpenFile(log_file, "w"); 22d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return perf_log_file != NULL; 23d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 24d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 25d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void FinalizePerfLog() { 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!perf_log_file) { 27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // trying to cleanup without initializing 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) NOTREACHED(); 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return; 30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::CloseFile(perf_log_file); 32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void LogPerfResult(const char* test_name, double value, const char* units) { 35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!perf_log_file) { 36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) NOTREACHED(); 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return; 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) fprintf(perf_log_file, "%s\t%g\t%s\n", test_name, value, units); 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) printf("%s\t%g\t%s\n", test_name, value, units); 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) fflush(stdout); 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} // namespace base 46