Skip to content
Permalink
Browse files

Improve getFree*ActiveObjectId to reduce common case cpu usage drasti…

…caly
  • Loading branch information
sapier authored and kwolekr committed Apr 25, 2013
1 parent 625a4c2 commit e9a4e98cb9608e26e7dafc575856aad9da5c27da
Showing with 14 additions and 12 deletions.
  1. +14 −12 src/environment.cpp
@@ -1295,16 +1295,17 @@ bool isFreeServerActiveObjectId(u16 id,
u16 getFreeServerActiveObjectId(
std::map<u16, ServerActiveObject*> &objects)
{
u16 new_id = 1;
//try to reuse id's as late as possible
static u16 last_used_id = 0;
u16 startid = last_used_id;
for(;;)
{
if(isFreeServerActiveObjectId(new_id, objects))
return new_id;
last_used_id ++;
if(isFreeServerActiveObjectId(last_used_id, objects))
return last_used_id;

if(new_id == 65535)
if(last_used_id == startid)
return 0;

new_id++;
}
}

@@ -2296,16 +2297,17 @@ bool isFreeClientActiveObjectId(u16 id,
u16 getFreeClientActiveObjectId(
std::map<u16, ClientActiveObject*> &objects)
{
u16 new_id = 1;
//try to reuse id's as late as possible
static u16 last_used_id = 0;
u16 startid = last_used_id;
for(;;)
{
if(isFreeClientActiveObjectId(new_id, objects))
return new_id;
last_used_id ++;
if(isFreeClientActiveObjectId(last_used_id, objects))
return last_used_id;

if(new_id == 65535)
if(last_used_id == startid)
return 0;

new_id++;
}
}

0 comments on commit e9a4e98

Please sign in to comment.