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
This commit is contained in:
yurys@chromium.org 2013-08-06 08:00:58 +00:00
parent 61a496f4e4
commit e06343431a
5 changed files with 20 additions and 20 deletions

View File

@ -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.

View File

@ -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<const i::CpuProfile*>(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<const i::CpuProfile*>(this);
return profile->end_time_ms();
return profile->end_time_us();
}

View File

@ -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<CodeEntry*>& 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);
}

View File

@ -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<ProfileNode*> samples_;
ProfileTree top_down_;

View File

@ -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<v8::String> 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());
}