{listener,proxy,server}_get_stats() methods are know to be expensive,
expecially if used under an iteration. Indeed, while automatic yield
is performed every X lua instructions (defaults to 10k), computing an
object's stats 10K times in a single cpu loop is not desirable and
could create contention.
In this patch we leverage hlua_yield_asap() at the end of *_get_stats()
methods in order to force the automatic yield to occur ASAP after the
method returns. Hopefully this should help in similar scenarios as the
one described in GH #2903
hlua_fcn_pushfield(L, &stats[i]);
lua_settable(L, -3);
}
+ hlua_yield_asap(L);
return 1;
}
hlua_fcn_pushfield(L, &stats[i]);
lua_settable(L, -3);
}
+ hlua_yield_asap(L);
return 1;
}
hlua_fcn_pushfield(L, &stats[i]);
lua_settable(L, -3);
}
+ hlua_yield_asap(L);
return 1;
}