by DanexCodr | 2025-12-28 10:10:15+00:00
it only compute what was needed on the right time. See this output for example:

Enter file path or press Enter for default [/storage/emulated/0/JavaNIDE/Programming-Language/Coderive/executables/LazyLoop.cod]:
>
Using default file: /storage/emulated/0/JavaNIDE/Programming-Language/Coderive/executables/LazyLoop.cod
Testing timer() function:
Timer resolution: 0.023616 ms

Testing condition evaluation:
2 % 2 = 0
2 % 2 == 0 = true
3 % 2 = 1
3 % 2 == 0 = false
24000 % 2 = 0.0
24000 % 2 == 0 = true

Conditional formula creation time: 2.657539 ms

Results:
arr[2] = even
arr[3] = odd
arr[24000] = even
arr[24001] = odd

=== Testing 2-statement pattern optimization ===
Pattern optimization time: 0.137 ms
arr2[3] = 14 (should be 33 + 5 = 14)
arr2[5] = 30 (should be 55 + 5 = 30)
arr2[10] = 105 (should be 1010 + 5 = 105)

Variable substitution time: 0.064384 ms
arr3[4] = 1 (should be 42 - 7 = 1)
arr3[8] = 9 (should be 82 - 7 = 9)

=== Testing conditional + 2-statement ===
Mixed optimization time: 3.253846 ms
arr4[30] = 30 (should be 30)
arr4[60] = 121 (should be 602 + 1 = 121)

=== All tests completed ===

---

From:

unit test

share LazyLoop {
share main() {
// Test timer() first - simplified
outln("Testing timer() function:")
t1 := timer()
t2 := timer()
outln("Timer resolution: " + (t2 - t1) + " ms")
outln()

arr := [0 to 1Qi]

// Test the condition directly
outln("Testing condition evaluation:")
outln("2 % 2 = " + (2 % 2))
outln("2 % 2 == 0 = " + (2 % 2 == 0))
outln("3 % 2 = " + (3 % 2))
outln("3 % 2 == 0 = " + (3 % 2 == 0))

// Also test with larger numbers
outln("24000 % 2 = " + (24K % 2))
outln("24000 % 2 == 0 = " + (24K % 2 == 0))

// Time the loop optimization
start := timer()
for i in [0 to 1Qi] {
if i % 2 == 0 {
arr[i] = "even"
} elif i % 2 == 1 {
arr[i] = "odd"
}
}
loop_time := timer() - start
outln("\nConditional formula creation time: " + loop_time + " ms")

outln("\nResults:")
outln("arr[2] = " + arr[2])
outln("arr[3] = " + arr[3])
outln("arr[24000] = " + arr[24K])
outln("arr[24001] = " + arr[24001])

// Test the 2-statement pattern optimization with timing
outln("\n=== Testing 2-statement pattern optimization ===")

arr2 := [0 to 1Qi]

start = timer()
for i in arr2 {
squared := i * i
arr2[i] = squared + 5
}
pattern_time := timer() - start
outln("Pattern optimization time: " + pattern_time + " ms")

outln("arr2[3] = " + arr2[3] + " (should be 3*3 + 5 = 14)")
outln("arr2[5] = " + arr2[5] + " (should be 5*5 + 5 = 30)")
outln("arr2[10] = " + arr2[10] + " (should be 10*10 + 5 = 105)")

// Test with different variable names
arr3 := [0 to 1Qi]

start = timer()
for i in arr3 {
temp := i * 2
arr3[i] = temp - 7
}
var_time := timer() - start
outln("\nVariable substitution time: " + var_time + " ms")

outln("arr3[4] = " + arr3[4] + " (should be 4*2 - 7 = 1)")
outln("arr3[8] = " + arr3[8] + " (should be 8*2 - 7 = 9)")

// Test that it still works with conditional
outln("\n=== Testing conditional + 2-statement ===")

arr4 := [0 to 100]

start = timer()
for i in arr4 {
if i > 50 {
doubled := i * 2
arr4[i] = doubled + 1
} else {
arr4[i] = i
}
}
mixed_time := timer() - start
outln("Mixed optimization time: " + mixed_time + " ms")

outln("arr4[30] = " + arr4[30] + " (should be 30)")
outln("arr4[60] = " + arr4[60] + " (should be 60*2 + 1 = 121)")

outln("\n=== All tests completed ===")
}
}