From e06343431ab5cd6d0b63a942259e6115560cfa95 Mon Sep 17 00:00:00 2001 From: "yurys@chromium.org" Date: Tue, 6 Aug 2013 08:00:58 +0000 Subject: [PATCH] Return start/end profiling time in microseconds instead of milliseconds The start and end time are now measured in microseconds and the type is int64_t. This way it seems more natural as we are going to support submilisecond sampling rate soon. Also it fixes cctest/test-cpu-profiler/ProfileStartEndTime test failure caused by comparison between long double and double. TEST=cctest/test-cpu-profiler/ProfileStartEndTime BUG=v8:2824 R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/22155003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- include/v8-profiler.h | 8 ++++---- src/api.cc | 8 ++++---- src/profile-generator.cc | 12 ++++++------ src/profile-generator.h | 8 ++++---- test/cctest/test-cpu-profiler.cc | 4 ++-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/v8-profiler.h b/include/v8-profiler.h index 7a71bf1..7898fef 100644 --- a/include/v8-profiler.h +++ b/include/v8-profiler.h @@ -149,16 +149,16 @@ class V8EXPORT CpuProfile { const CpuProfileNode* GetSample(int index) const; /** - * Returns time when the profile recording started (in milliseconds + * Returns time when the profile recording started (in microseconds * since the Epoch). */ - double GetStartTime() const; + int64_t GetStartTime() const; /** - * Returns time when the profile recording was stopped (in milliseconds + * Returns time when the profile recording was stopped (in microseconds * since the Epoch). */ - double GetEndTime() const; + int64_t GetEndTime() const; /** * Deletes the profile and removes it from CpuProfiler's list. diff --git a/src/api.cc b/src/api.cc index 100ddc2..c0f7a97 100644 --- a/src/api.cc +++ b/src/api.cc @@ -7591,15 +7591,15 @@ const CpuProfileNode* CpuProfile::GetSample(int index) const { } -double CpuProfile::GetStartTime() const { +int64_t CpuProfile::GetStartTime() const { const i::CpuProfile* profile = reinterpret_cast(this); - return profile->start_time_ms(); + return profile->start_time_us(); } -double CpuProfile::GetEndTime() const { +int64_t CpuProfile::GetEndTime() const { const i::CpuProfile* profile = reinterpret_cast(this); - return profile->end_time_ms(); + return profile->end_time_us(); } diff --git a/src/profile-generator.cc b/src/profile-generator.cc index 4e2e389..e772a54 100644 --- a/src/profile-generator.cc +++ b/src/profile-generator.cc @@ -376,8 +376,8 @@ CpuProfile::CpuProfile(const char* title, unsigned uid, bool record_samples) : title_(title), uid_(uid), record_samples_(record_samples), - start_time_ms_(OS::TimeCurrentMillis()), - end_time_ms_(0) { + start_time_us_(OS::Ticks()), + end_time_us_(0) { } @@ -388,13 +388,13 @@ void CpuProfile::AddPath(const Vector& path) { void CpuProfile::CalculateTotalTicksAndSamplingRate() { - end_time_ms_ = OS::TimeCurrentMillis(); + end_time_us_ = OS::Ticks(); top_down_.CalculateTotalTicks(); - double duration = end_time_ms_ - start_time_ms_; - if (duration < 1) duration = 1; + double duration_ms = (end_time_us_ - start_time_us_) / 1000.; + if (duration_ms < 1) duration_ms = 1; unsigned ticks = top_down_.root()->total_ticks(); - double rate = ticks / duration; + double rate = ticks / duration_ms; top_down_.SetTickRatePerMs(rate); } diff --git a/src/profile-generator.h b/src/profile-generator.h index ce2dd30..0cc397e 100644 --- a/src/profile-generator.h +++ b/src/profile-generator.h @@ -216,8 +216,8 @@ class CpuProfile { int samples_count() const { return samples_.length(); } ProfileNode* sample(int index) const { return samples_.at(index); } - double start_time_ms() const { return start_time_ms_; } - double end_time_ms() const { return end_time_ms_; } + int64_t start_time_us() const { return start_time_us_; } + int64_t end_time_us() const { return end_time_us_; } void UpdateTicksScale(); @@ -228,8 +228,8 @@ class CpuProfile { const char* title_; unsigned uid_; bool record_samples_; - double start_time_ms_; - double end_time_ms_; + int64_t start_time_us_; + int64_t end_time_us_; List samples_; ProfileTree top_down_; diff --git a/test/cctest/test-cpu-profiler.cc b/test/cctest/test-cpu-profiler.cc index 3f0fb80..daf8db6 100644 --- a/test/cctest/test-cpu-profiler.cc +++ b/test/cctest/test-cpu-profiler.cc @@ -415,13 +415,13 @@ TEST(ProfileStartEndTime) { v8::HandleScope scope(env->GetIsolate()); v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler(); - double time_before_profiling = i::OS::TimeCurrentMillis(); + int64_t time_before_profiling = i::OS::Ticks(); v8::Local profile_name = v8::String::New("test"); cpu_profiler->StartCpuProfiling(profile_name); const v8::CpuProfile* profile = cpu_profiler->StopCpuProfiling(profile_name); CHECK(time_before_profiling <= profile->GetStartTime()); CHECK(profile->GetStartTime() <= profile->GetEndTime()); - CHECK(profile->GetEndTime() <= i::OS::TimeCurrentMillis()); + CHECK(profile->GetEndTime() <= i::OS::Ticks()); } -- 2.7.4