use plain os_malloc in RHC for performance reasons
simply switching from dds_alloc to os_malloc in alloc_sample removes a redundant memset, which gives 5% improvement in a throughput test (on my laptop); other analogous changes for consistency Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
c61c880fd2
commit
d51a67f74b
1 changed files with 9 additions and 9 deletions
|
@ -392,7 +392,8 @@ static void remove_inst_from_nonempty_list (struct rhc *rhc, struct rhc_instance
|
||||||
|
|
||||||
struct rhc * dds_rhc_new (dds_reader * reader, const struct ddsi_sertopic * topic)
|
struct rhc * dds_rhc_new (dds_reader * reader, const struct ddsi_sertopic * topic)
|
||||||
{
|
{
|
||||||
struct rhc * rhc = dds_alloc (sizeof (*rhc));
|
struct rhc * rhc = os_malloc (sizeof (*rhc));
|
||||||
|
memset (rhc, 0, sizeof (*rhc));
|
||||||
|
|
||||||
lwregs_init (&rhc->registrations);
|
lwregs_init (&rhc->registrations);
|
||||||
os_mutexInit (&rhc->lock);
|
os_mutexInit (&rhc->lock);
|
||||||
|
@ -432,7 +433,7 @@ static struct rhc_sample * alloc_sample (struct rhc_instance *inst)
|
||||||
{
|
{
|
||||||
/* This instead of sizeof(rhc_sample) gets us type checking */
|
/* This instead of sizeof(rhc_sample) gets us type checking */
|
||||||
struct rhc_sample *s;
|
struct rhc_sample *s;
|
||||||
s = dds_alloc (sizeof (*s));
|
s = os_malloc (sizeof (*s));
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,7 +451,7 @@ static void free_sample (struct rhc_instance *inst, struct rhc_sample *s)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dds_free (s);
|
os_free (s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,7 +507,7 @@ static void free_instance (void *vnode, void *varg)
|
||||||
remove_inst_from_nonempty_list (rhc, inst);
|
remove_inst_from_nonempty_list (rhc, inst);
|
||||||
}
|
}
|
||||||
ddsi_tkmap_instance_unref (inst->tk);
|
ddsi_tkmap_instance_unref (inst->tk);
|
||||||
dds_free (inst);
|
os_free (inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t dds_rhc_lock_samples (struct rhc *rhc)
|
uint32_t dds_rhc_lock_samples (struct rhc *rhc)
|
||||||
|
@ -530,7 +531,7 @@ void dds_rhc_free (struct rhc *rhc)
|
||||||
lwregs_fini (&rhc->registrations);
|
lwregs_fini (&rhc->registrations);
|
||||||
os_mutexDestroy (&rhc->lock);
|
os_mutexDestroy (&rhc->lock);
|
||||||
os_mutexDestroy (&rhc->conds_lock);
|
os_mutexDestroy (&rhc->conds_lock);
|
||||||
dds_free (rhc);
|
os_free (rhc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dds_rhc_fini (struct rhc * rhc)
|
void dds_rhc_fini (struct rhc * rhc)
|
||||||
|
@ -1029,14 +1030,13 @@ static struct rhc_instance * alloc_new_instance
|
||||||
struct rhc_instance *inst;
|
struct rhc_instance *inst;
|
||||||
|
|
||||||
ddsi_tkmap_instance_ref (tk);
|
ddsi_tkmap_instance_ref (tk);
|
||||||
inst = dds_alloc (sizeof (*inst));
|
inst = os_malloc (sizeof (*inst));
|
||||||
|
memset (inst, 0, sizeof (*inst));
|
||||||
inst->iid = tk->m_iid;
|
inst->iid = tk->m_iid;
|
||||||
inst->tk = tk;
|
inst->tk = tk;
|
||||||
inst->wrcount = (serdata->statusinfo & NN_STATUSINFO_UNREGISTER) ? 0 : 1;
|
inst->wrcount = (serdata->statusinfo & NN_STATUSINFO_UNREGISTER) ? 0 : 1;
|
||||||
inst->isdisposed = (serdata->statusinfo & NN_STATUSINFO_DISPOSE);
|
inst->isdisposed = (serdata->statusinfo & NN_STATUSINFO_DISPOSE) != 0;
|
||||||
inst->isnew = 1;
|
inst->isnew = 1;
|
||||||
inst->inv_exists = 0;
|
|
||||||
inst->inv_isread = 0; /* don't care */
|
|
||||||
inst->a_sample_free = 1;
|
inst->a_sample_free = 1;
|
||||||
inst->wr_iid = pwr_info->iid;
|
inst->wr_iid = pwr_info->iid;
|
||||||
inst->wr_iid_islive = (inst->wrcount != 0);
|
inst->wr_iid_islive = (inst->wrcount != 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue