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:
parent
61a496f4e4
commit
e06343431a
@ -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.
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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_;
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user