From: Martin Quinson Date: Wed, 1 Feb 2017 21:39:56 +0000 (+0100) Subject: try to speed up some some traversals X-Git-Tag: v3_15~490 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0feb1e5eca7b9473754b98405e36346804825f70 try to speed up some some traversals --- diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index b157771d18..55a308bff8 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -143,9 +143,7 @@ XBT_PUBLIC_CLASS Actor { typedef decltype(f(std::move(args)...)) R; auto task = std::make_shared>( simgrid::xbt::makeTask(std::move(f), std::move(args)...)); - return [=] { - (*task)(); - }; + return [task] { (*task)(); }; } explicit Actor(smx_actor_t pimpl) : pimpl_(pimpl) {} diff --git a/src/mc/mc_checkpoint.cpp b/src/mc/mc_checkpoint.cpp index 37169199f7..75a0531c7b 100644 --- a/src/mc/mc_checkpoint.cpp +++ b/src/mc/mc_checkpoint.cpp @@ -77,7 +77,7 @@ static void restore(mc_mem_region_t region) break; case simgrid::mc::StorageType::Privatized: - for (auto& p : region->privatized_data()) + for (const auto& p : region->privatized_data()) restore(&p); break; } @@ -149,7 +149,7 @@ static void get_memory_regions(simgrid::mc::Process* process, simgrid::mc::Snaps const size_t n = process->object_infos.size(); snapshot->snapshot_regions.resize(n + 1); int i = 0; - for (auto const& object_info : process->object_infos) + for (const auto const& object_info : process->object_infos) add_region(i++, snapshot, simgrid::mc::RegionType::Data, object_info.get(), object_info->start_rw, object_info->start_rw, diff --git a/src/mc/mc_state.cpp b/src/mc/mc_state.cpp index c0b68264fb..a0f5fe9b1f 100644 --- a/src/mc/mc_state.cpp +++ b/src/mc/mc_state.cpp @@ -225,7 +225,7 @@ static inline smx_simcall_t MC_state_get_request_for_process( smx_simcall_t MC_state_get_request(simgrid::mc::State* state) { - for (auto& actor : mc_model_checker->process().actors()) { + for (const auto& actor : mc_model_checker->process().actors()) { smx_simcall_t res = MC_state_get_request_for_process(state, actor.copy.getBuffer()); if (res) return res; diff --git a/src/simdag/sd_global.cpp b/src/simdag/sd_global.cpp index f21a265be5..b0f93dbfe1 100644 --- a/src/simdag/sd_global.cpp +++ b/src/simdag/sd_global.cpp @@ -56,7 +56,7 @@ std::set* simulate(double how_long){ total_time += elapsed_time; /* let's see which tasks are done */ - for (auto model : *all_existing_models) { + for (const auto& model : *all_existing_models) { surf_action_t action = surf_model_extract_done_action_set(model); while (action != nullptr) { SD_task_t task = static_cast(action->getData()); @@ -68,7 +68,7 @@ std::set* simulate(double how_long){ sd_global->return_set->insert(task); /* remove the dependencies after this task */ - for (auto succ : *task->successors) { + for (const auto& succ : *task->successors) { succ->predecessors->erase(task); succ->inputs->erase(task); XBT_DEBUG("Release dependency on %s: %zu remain(s). Becomes schedulable if %zu=0", SD_task_get_name(succ), @@ -85,7 +85,7 @@ std::set* simulate(double how_long){ } task->successors->clear(); - for (auto output : *task->outputs) { + for (const auto& output : *task->outputs) { output->start_time = task->finish_time; output->predecessors->erase(task); if (SD_task_get_state(output) == SD_SCHEDULED) @@ -120,7 +120,7 @@ std::set* simulate(double how_long){ if (!sd_global->watch_point_reached && how_long < 0 && !sd_global->initial_tasks->empty()) { XBT_WARN("Simulation is finished but %zu tasks are still not done", sd_global->initial_tasks->size()); - for (auto t : *sd_global->initial_tasks) + for (const auto& t : *sd_global->initial_tasks) XBT_WARN("%s is in %s state", SD_task_get_name(t), __get_state_name(SD_task_get_state(t))); } @@ -228,7 +228,7 @@ void SD_create_environment(const char *platform_file) xbt_dynar_t SD_simulate(double how_long) { std::set *changed_tasks = simgrid::sd::simulate(how_long); xbt_dynar_t changed_tasks_dynar = xbt_dynar_new(sizeof(SD_task_t), nullptr); - for (auto task: *changed_tasks) + for (const auto& task : *changed_tasks) xbt_dynar_push(changed_tasks_dynar, &task); return changed_tasks_dynar; } diff --git a/src/simdag/sd_workstation.cpp b/src/simdag/sd_workstation.cpp index e4eac88da3..5601beea36 100644 --- a/src/simdag/sd_workstation.cpp +++ b/src/simdag/sd_workstation.cpp @@ -26,7 +26,7 @@ SD_link_t *SD_route_get_list(sg_host_t src, sg_host_t dst) int cpt=0; SD_link_t* list = xbt_new(SD_link_t, route.size()); - for (auto link : route) { + for (const auto& link : route) { list[cpt] = link; cpt++; } @@ -82,7 +82,7 @@ double SD_route_get_bandwidth(sg_host_t src, sg_host_t dst) std::vector route; src->routeTo(dst, &route, nullptr); - for (auto link : route) { + for (const auto& link : route) { double bandwidth = sg_link_bandwidth(link); if (bandwidth < min_bandwidth || min_bandwidth < 0.0) min_bandwidth = bandwidth;