Relatively. If its called 2k times per frame it can surely make a difference of a few frames. Well, that is if its cpu bound.
Well that happens when you called it 2k times. ( is that 2000 times )

there's also another alternative solution
and that is
double tDistance = (VecX.Vec[0] - VecY.Vec[0]) * (VecX.Vec[0] - VecY.Vec[0]) +
(VecX.Vec[1] - VecY.Vec[1]) * (VecX.Vec[1] - VecY.Vec[1]) +
(VecX.Vec[2] - VecY.Vec[2]) * (VecX.Vec[2] - VecY.Vec[2]);
without the square root.
and there's also a "Manhattan" distance
Dist = abs( V1.X-V2.X) + abs( V1.Y-V2.Y) + abs( V1.Z, V2.Z)
I also don't use a function similar to AddBullet() as you have mentioned, since it only contains a single push_back call. I just directly call the push_back function rather than wrapping it inside a function.
Well I have made everything dumb down to simple.
maybe it is my who like to organize my codes to classic C style perfection.

int AddBullet( lua_State * State)
{
if( lua_gettop( State) > 0)
{
AddBullet( lua_tonumber( State, 1),
lua_tonumber( State, 2),
lua_tonumber( State, 3),
lua_tonumber( State, 4));
}
return 0;
}
you see,This is the same function.
for lua.
I have also plan to ported everything in the main game loop over the Lua.
So I can easilly change it contents to my liking.