From 29d1a6f84e39a8d2dcc58a22b7655913242d03a6 Mon Sep 17 00:00:00 2001 From: thiery Date: Fri, 4 Aug 2006 09:30:29 +0000 Subject: [PATCH] Remove useless reallocs git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2691 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/simdag/private.h | 2 ++ src/simdag/sd_global.c | 13 ++++++++++++- src/simdag/sd_task.c | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/simdag/private.h b/src/simdag/private.h index 8d76354346..734f10fb01 100644 --- a/src/simdag/private.h +++ b/src/simdag/private.h @@ -37,6 +37,8 @@ typedef struct SD_global { xbt_swag_t done_task_set; xbt_swag_t failed_task_set; + int task_number; + } s_SD_global_t, *SD_global_t; extern SD_global_t sd_global; diff --git a/src/simdag/sd_global.c b/src/simdag/sd_global.c index aea07a142d..146a3ebd82 100644 --- a/src/simdag/sd_global.c +++ b/src/simdag/sd_global.c @@ -42,6 +42,7 @@ void SD_init(int *argc, char **argv) { sd_global->running_task_set = xbt_swag_new(xbt_swag_offset(task, state_hookup)); sd_global->done_task_set = xbt_swag_new(xbt_swag_offset(task, state_hookup)); sd_global->failed_task_set = xbt_swag_new(xbt_swag_offset(task, state_hookup)); + sd_global->task_number = 0; surf_init(argc, argv); } @@ -89,6 +90,8 @@ void SD_create_environment(const char *platform_file) { xbt_dict_foreach(network_link_set, cursor, name, surf_link) { __SD_link_create(surf_link, NULL); } + + DEBUG2("Workstation number: %d, link number: %d", SD_workstation_get_number(), SD_link_get_number()); } /** @@ -112,7 +115,7 @@ SD_task_t* SD_simulate(double how_long) surf_action_t action; SD_task_t *changed_tasks = NULL; int changed_task_number = 0; - int changed_task_capacity = 16; /* will be increased if necessary */ + int changed_task_capacity = sd_global->task_number + 1; int i; static int first_time = 1; @@ -136,10 +139,12 @@ SD_task_t* SD_simulate(double how_long) INFO1("Executing task '%s'", SD_task_get_name(task)); if ((task->state_changed = __SD_task_try_to_run(task))) { changed_tasks[changed_task_number++] = task; /* replace NULL by the task */ + /* if (changed_task_number == changed_task_capacity) { changed_task_capacity *= 2; changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity); } + */ changed_tasks[changed_task_number] = NULL; } } @@ -169,10 +174,12 @@ SD_task_t* SD_simulate(double how_long) if (!task->state_changed) { task->state_changed = 1; changed_tasks[changed_task_number++] = task; + /* if (changed_task_number == changed_task_capacity) { changed_task_capacity *= 2; changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity); } + */ changed_tasks[changed_task_number] = NULL; } @@ -187,10 +194,12 @@ SD_task_t* SD_simulate(double how_long) INFO1("Executing task '%s'", SD_task_get_name(dst)); if (__SD_task_try_to_run(dst)) { changed_tasks[changed_task_number++] = dst; + /* if (changed_task_number == changed_task_capacity) { changed_task_capacity *= 2; changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity); } + */ changed_tasks[changed_task_number] = NULL; } } @@ -208,10 +217,12 @@ SD_task_t* SD_simulate(double how_long) if (!task->state_changed) { task->state_changed = 1; changed_tasks[changed_task_number++] = task; + /* if (changed_task_number == changed_task_capacity) { changed_task_capacity *= 2; changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity); } + */ changed_tasks[changed_task_number] = NULL; } } diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index cfc066de76..b4081c7a9e 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -52,6 +52,8 @@ SD_task_t SD_task_create(const char *name, void *data, double amount) { task->communication_amount = NULL; task->rate = 0; + sd_global->task_number++; + return task; } @@ -871,5 +873,7 @@ void SD_task_destroy(SD_task_t task) { xbt_dynar_free(&task->tasks_after); xbt_free(task); + sd_global->task_number--; + DEBUG0("Task destroyed."); } -- 2.20.1