Посмотрим на байт-код:
$ echo 'local function round(nul) return nul + (2 ^ 52 + 2 ^ 51) - (2 ^ 52 + 2 ^ 51) end' | luac5.3 -l -l -
main <stdin:0,0> (2 instructions at 0x55f08348ca20)
0+ params, 2 slots, 1 upvalue, 1 local, 0 constants, 1 function
1 [1] CLOSURE 0 0 ; 0x55f08348cc60
2 [1] RETURN 0 1
constants (0) for 0x55f08348ca20:
locals (1) for 0x55f08348ca20:
0 round 2 3
upvalues (1) for 0x55f08348ca20:
0 _ENV 1 0
function <stdin:1,1> (4 instructions at 0x55f08348cc60)
1 param, 2 slots, 0 upvalues, 1 local, 1 constant, 0 functions
1 [1] ADD 1 0 -1 ; - 6.7553994410557e+15
2 [1] SUB 1 1 -1 ; - 6.7553994410557e+15
3 [1] RETURN 1 2
4 [1] RETURN 0 1
constants (1) for 0x55f08348cc60:
1 6.7553994410557e+15
locals (1) for 0x55f08348cc60:
0 nul 1 5
upvalues (0) for 0x55f08348cc60:
Видно, что ADD и SUB тут работают с константой. Обращение к константе быстрое, доступное, лёгкое, воздушное. В предложенном варианте появляется upvalue, к которым доступ будет дольше. Так что эффективнее не станет.