Revision: 16067
Author:   [email protected]
Date:     Tue Aug  6 01:00:58 2013
Log: 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
[email protected]

Review URL: https://codereview.chromium.org/22155003
http://code.google.com/p/v8/source/detail?r=16067

Modified:
 /branches/bleeding_edge/include/v8-profiler.h
 /branches/bleeding_edge/src/api.cc
 /branches/bleeding_edge/src/profile-generator.cc
 /branches/bleeding_edge/src/profile-generator.h
 /branches/bleeding_edge/test/cctest/test-cpu-profiler.cc

=======================================
--- /branches/bleeding_edge/include/v8-profiler.h       Mon Aug  5 05:27:12 2013
+++ /branches/bleeding_edge/include/v8-profiler.h       Tue Aug  6 01:00:58 2013
@@ -149,16 +149,16 @@
   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.
=======================================
--- /branches/bleeding_edge/src/api.cc  Mon Aug  5 05:27:12 2013
+++ /branches/bleeding_edge/src/api.cc  Tue Aug  6 01:00:58 2013
@@ -7591,15 +7591,15 @@
 }


-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();
 }


=======================================
--- /branches/bleeding_edge/src/profile-generator.cc Mon Aug 5 05:27:12 2013 +++ /branches/bleeding_edge/src/profile-generator.cc Tue Aug 6 01:00:58 2013
@@ -376,8 +376,8 @@
     : 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::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);
 }

=======================================
--- /branches/bleeding_edge/src/profile-generator.h     Mon Aug  5 05:27:12 2013
+++ /branches/bleeding_edge/src/profile-generator.h     Tue Aug  6 01:00:58 2013
@@ -216,8 +216,8 @@
   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 @@
   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_;

=======================================
--- /branches/bleeding_edge/test/cctest/test-cpu-profiler.cc Mon Aug 5 05:27:12 2013 +++ /branches/bleeding_edge/test/cctest/test-cpu-profiler.cc Tue Aug 6 01:00:58 2013
@@ -415,13 +415,13 @@
   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());
 }


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to