local luau = require("@lune/luau") local TEST_SCRIPT = [[ local start = os.clock() local x for i = 1, 1e6 do x = math.sqrt(i) end local finish = os.clock() return finish - start ]] local TEST_BYTECODE = luau.compile(TEST_SCRIPT, { optimizationLevel = 2, coverageLevel = 0, debugLevel = 0, }) -- Load the bytecode with different configurations local safeCodegenFunction = luau.load(TEST_BYTECODE, { debugName = "safeCodegenFunction", codegenEnabled = true, }) local unsafeCodegenFunction = luau.load(TEST_BYTECODE, { debugName = "unsafeCodegenFunction", environment = {}, injectGlobals = true, codegenEnabled = true, }) local safeFunction = luau.load(TEST_BYTECODE, { debugName = "safeFunction", codegenEnabled = false, }) local unsafeFunction = luau.load(TEST_BYTECODE, { debugName = "unsafeFunction", environment = {}, injectGlobals = true, codegenEnabled = false, }) -- Run the functions to get the timings local safeCodegenTime = safeCodegenFunction() local unsafeCodegenTime = unsafeCodegenFunction() local safeTime = safeFunction() local unsafeTime = unsafeFunction() -- Assert that safeCodegenTime is always twice as fast as both unsafe functions local safeCodegenUpperBound = safeCodegenTime * 2 assert( unsafeCodegenTime > safeCodegenUpperBound and unsafeTime > safeCodegenUpperBound, "expected luau.load with codegenEnabled = true and no custom environment to use codegen" ) -- Assert that safeTime is always atleast twice as fast as both unsafe functions local safeUpperBound = safeTime * 2 assert( unsafeCodegenTime > safeUpperBound and unsafeTime > safeUpperBound, "expected luau.load with codegenEnabled = false and no custom environment to have safeenv enabled" ) -- Normally we'd also want to check whether codegen is actually being enabled by -- comparing timings of safe_codegen_fn and safe_fn but since we don't have a way of -- checking whether the current device even supports codegen, we can't safely test this.