Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simplify loops on sets
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Sun, 19 Nov 2017 19:40:27 +0000 (20:40 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Sun, 19 Nov 2017 19:40:27 +0000 (20:40 +0100)
according to
https://stackoverflow.com/questions/15433381/performance-of-piter-cont-end-in-for-loop
not precomputing the value of end() can even lead to better performance.

if agreed by the c++ gurus of SimGrid, this change could be applied to
many other places in the code.

src/surf/network_interface.cpp
src/surf/surf_interface.cpp

index 2bbbd86..fdb7f86 100644 (file)
@@ -82,7 +82,7 @@ namespace simgrid {
     {
       double minRes = Model::nextOccuringEventFull(now);
 
-      for(auto it(getRunningActionSet()->begin()), itend(getRunningActionSet()->end()); it != itend ; it++) {
+      for (auto it(getRunningActionSet()->begin()); it != getRunningActionSet()->end(); it++) {
         NetworkAction *action = static_cast<NetworkAction*>(&*it);
         if (action->latency_ > 0)
           minRes = (minRes < 0) ? action->latency_ : std::min(minRes, action->latency_);
index 42b8448..df9b6b1 100644 (file)
@@ -463,7 +463,8 @@ double Model::nextOccuringEventFull(double /*now*/) {
   maxminSystem_->solve_fun(maxminSystem_);
 
   double min = -1;
-  for (auto it(getRunningActionSet()->begin()), itend(getRunningActionSet()->end()); it != itend ; ++it) {
+
+  for (auto it(getRunningActionSet()->begin()); it != getRunningActionSet()->end(); ++it) {
     Action *action = &*it;
     double value = lmm_variable_getvalue(action->getVariable());
     if (value > 0) {