Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[sonar] Remove custom destructors for CpuTiProfile.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 17 Apr 2019 20:45:12 +0000 (22:45 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 17 Apr 2019 20:45:12 +0000 (22:45 +0200)
src/surf/cpu_ti.cpp
src/surf/cpu_ti.hpp

index 02a56ed..1232dbe 100644 (file)
@@ -26,25 +26,17 @@ CpuTiProfile::CpuTiProfile(profile::Profile* profile)
 {
   double integral = 0;
   double time = 0;
-  int i = 0;
-  nb_points_      = profile->event_list.size() + 1;
-  time_points_    = new double[nb_points_];
-  integral_       = new double[nb_points_];
+  unsigned nb_points = profile->event_list.size() + 1;
+  time_points_.reserve(nb_points);
+  integral_.reserve(nb_points);
   for (auto const& val : profile->event_list) {
-    time_points_[i] = time;
-    integral_[i] = integral;
-    integral += val.date_ * val.value_;
+    time_points_.push_back(time);
+    integral_.push_back(integral);
     time += val.date_;
-    i++;
+    integral += val.date_ * val.value_;
   }
-  time_points_[i] = time;
-  integral_[i] = integral;
-}
-
-CpuTiProfile::~CpuTiProfile()
-{
-  delete[] time_points_;
-  delete [] integral_;
+  time_points_.push_back(time);
+  integral_.push_back(integral);
 }
 
 CpuTiTmgr::~CpuTiTmgr()
@@ -115,7 +107,7 @@ double CpuTiProfile::integrate_simple_point(double a)
 {
   double integral = 0;
   double a_aux = a;
-  int ind         = binary_search(time_points_, a, nb_points_);
+  int ind         = binary_search(time_points_, a);
   integral += integral_[ind];
 
   XBT_DEBUG("a %f ind %d integral %f ind + 1 %f ind %f time +1 %f time %f", a, ind, integral, integral_[ind + 1],
@@ -197,7 +189,7 @@ double CpuTiTmgr::solve(double a, double amount)
 double CpuTiProfile::solve_simple(double a, double amount)
 {
   double integral_a = integrate_simple_point(a);
-  int ind           = binary_search(integral_, integral_a + amount, nb_points_);
+  int ind           = binary_search(integral_, integral_a + amount);
   double time       = time_points_[ind];
   time += (integral_a + amount - integral_[ind]) /
           ((integral_[ind + 1] - integral_[ind]) / (time_points_[ind + 1] - time_points_[ind]));
@@ -215,7 +207,7 @@ double CpuTiProfile::solve_simple(double a, double amount)
 double CpuTiTmgr::get_power_scale(double a)
 {
   double reduced_a          = a - floor(a / last_time_) * last_time_;
-  int point                       = profile_->binary_search(profile_->time_points_, reduced_a, profile_->nb_points_);
+  int point                       = profile_->binary_search(profile_->time_points_, reduced_a);
   kernel::profile::DatedValue val = speed_profile_->event_list.at(point);
   return val.value_;
 }
@@ -265,16 +257,14 @@ CpuTiTmgr::CpuTiTmgr(kernel::profile::Profile* speed_profile, double value) : sp
  *  It returns the last point of the interval in which "a" is.
  * @param array    Array
  * @param a        Value to search
- * @param size     Size of the array
  * @return Index of point
  */
-int CpuTiProfile::binary_search(double* array, double a, int size)
+int CpuTiProfile::binary_search(const std::vector<double>& array, double a)
 {
-  xbt_assert(size > 0, "Wrong parameters: empty array");
   if (array[0] > a)
     return 0;
-  auto pos = std::upper_bound(array, array + size, a);
-  return std::distance(array, pos) - 1;
+  auto pos = std::upper_bound(begin(array), end(array), a);
+  return std::distance(begin(array), pos) - 1;
 }
 
 /*********
index 42c1045..61c94fa 100644 (file)
@@ -27,18 +27,14 @@ class XBT_PRIVATE CpuTi;
 class CpuTiProfile {
 public:
   explicit CpuTiProfile(profile::Profile* profile);
-  CpuTiProfile(const CpuTiProfile&) = delete;
-  CpuTiProfile& operator=(const CpuTiProfile&) = delete;
-  ~CpuTiProfile();
 
   double integrate_simple(double a, double b);
   double integrate_simple_point(double a);
   double solve_simple(double a, double amount);
 
-  double* time_points_;
-  double *integral_;
-  int nb_points_;
-  static int binary_search(double* array, double a, int size);
+  std::vector<double> time_points_;
+  std::vector<double> integral_;
+  static int binary_search(const std::vector<double>& array, double a);
 };
 
 class CpuTiTmgr {