0

Make perftimer and run_all_perftests compile on Posix. Stub out a few things into process_util_posix, and add a function to raise to a high priority.

BUG=1343318

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1438 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
deanm@google.com
2008-08-27 13:48:03 +00:00
parent 32065cfaaf
commit db71728e5b
7 changed files with 32 additions and 24 deletions

@ -74,8 +74,8 @@ input_files = [
'non_thread_safe.cc',
'path_service.cc',
'pickle.cc',
'revocable_store.cc',
'ref_counted.cc',
'revocable_store.cc',
'sha2.cc',
'stats_table.cc',
'string_escape.cc',
@ -333,8 +333,10 @@ else:
icudata = '../icudt38l.dat'
env.Alias('base', ['.', installed_base_unittests, icudata])
# TODO(sgk) should this be moved into base.lib like everything else? This will
# require updating a bunch of other SConscripts which link directly against
# this generated object file.
env_tests.StaticObject('perftimer.cc')
# These aren't ported to other platforms yet.
if env['PLATFORM'] == 'win32':
env_tests.StaticObject('perftimer.cc')
env_tests.StaticObject('run_all_perftests.cc')
# Since run_all_perftests supplies a main, we cannot have it in base.lib
env_tests.StaticObject('run_all_perftests.cc')

@ -3,13 +3,11 @@
// found in the LICENSE file.
#include <stdio.h>
#include <shlwapi.h>
#include <windows.h>
#include "base/perftimer.h"
#include "base/logging.h"
#include "base/basictypes.h"
#include "base/logging.h"
static FILE* perf_log_file = NULL;
@ -20,7 +18,12 @@ bool InitPerfLog(const char* log_file) {
return false;
}
#if defined(OS_WIN)
return fopen_s(&perf_log_file, log_file, "w") == 0;
#elif defined(OS_POSIX)
perf_log_file = fopen(log_file, "w");
return perf_log_file != NULL;
#endif
}
void FinalizePerfLog() {
@ -41,5 +44,3 @@ void LogPerfResult(const char* test_name, double value, const char* units) {
fprintf(perf_log_file, "%s\t%g\t%s\n", test_name, value, units);
printf("%s\t%g\t%s\n", test_name, value, units);
}

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_PERFTTIMER_H__
#define BASE_PERFTTIMER_H__
#ifndef BASE_PERFTTIMER_H_
#define BASE_PERFTTIMER_H_
#include <string>
#include "base/basictypes.h"
@ -77,5 +77,4 @@ class PerfTimeLogger {
PerfTimer timer_;
};
#endif // BASE_PERFTTIMER_H__
#endif // BASE_PERFTTIMER_H_

@ -16,6 +16,7 @@
#if defined(OS_WIN)
typedef HANDLE ProcessHandle;
#elif defined(OS_POSIX)
// On POSIX, our ProcessHandle will just be the PID.
typedef int ProcessHandle;
#endif

@ -5,8 +5,8 @@
// This file/namespace contains utility functions for enumerating, ending and
// computing statistics of processes.
#ifndef BASE_PROCESS_UTIL_H__
#define BASE_PROCESS_UTIL_H__
#ifndef BASE_PROCESS_UTIL_H_
#define BASE_PROCESS_UTIL_H_
#include "base/basictypes.h"
@ -257,8 +257,10 @@ class ProcessMetrics {
// Note: Returns true on Windows 2000 without doing anything.
bool EnableLowFragmentationHeap();
// If supported on the platform, and the user has sufficent rights, increase
// the current process's scheduling priority to a high priority.
void RaiseProcessToHighPriority();
} // namespace process_util
#endif // BASE_PROCESS_UTIL_H__
#endif // BASE_PROCESS_UTIL_H_

@ -594,5 +594,8 @@ bool EnableLowFragmentationHeap() {
return true;
}
} // namespace process_util
void RaiseProcessToHighPriority() {
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
}
} // namespace process_util

@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <windows.h>
#include "base/command_line.h"
#include "base/debug_util.h"
#include "base/perftimer.h"
#include "base/process_util.h"
#include "base/string_util.h"
#include "base/test_suite.h"
@ -24,8 +24,8 @@ class PerfTestSuite : public TestSuite {
// Raise to high priority to have more precise measurements. Since we don't
// aim at 1% precision, it is not necessary to run at realtime level.
if (!IsDebuggerPresent())
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
if (!DebugUtil::BeingDebugged())
process_util::RaiseProcessToHighPriority();
TestSuite::Initialize();
}