I personally recommend none, as per:
http://purplepwny.com/blog/binding_lua_to_c_think_twice_before_eating_that_glue.html and the fact that Lua C API is SUPER documented, complete, straightforward (even if a little tedious to type), more spread, explained and tested compared to most binding libraries.
If you really need a binding, then at least learn what Lua and its' C API are about, on most basic level, and
then use one, so you are not confused when reading/debuging the code generated or used by your binding library or by the quirks of the language when they explode in your face and none of the tutorials and advice explaining that quirk work for you because they show examples in Lua and C API instead of in your binding of choice.
Case in point: If you ask about Lua (including jit, that I know a bit less but AM interested in) here* or on gamedev.net then you have a fairly hight chance that if I notice it I will respond if I can, just to test myself and help fellow Lua programmer. But if you ask about binding specific problem or post code that requires one then that chance goes very very low (since they don't interest me at all).
As for your original problem, yes - luaL_newstate is (a bit, compared to most other functions) costly but you should only call it once so it's OK.
If you call it once, don't use the L itself at all and it also breaks the framerate then something is wrong with your code or set up, Lua is so efficient there are entire medium sized 2D games written in it (and not even in luajit) that run at OK speed.
And why are you deleting world in your main loop? And what does the engine code do? This example is not debugable at all because it's not minimal.
Also, shameless plug, in case you need a pretty Lua terminal in-game:
http://en.sfml-dev.org/forums/index.php?topic=15962.msg114040#msg114040*you shouldn't ask pure Lua questions here, BTW, since this is (mostly) SFML forum.