|
| 1 | +// 🚀 JIT算术表达式测试程序 |
| 2 | +using lib <io>; |
| 3 | +using ns std; |
| 4 | + |
| 5 | +fn main() : int { |
| 6 | + std::println("🚀 JIT算术表达式测试开始"); |
| 7 | + |
| 8 | + // 测试1: 简单的二元运算 |
| 9 | + std::println("\n=== 测试1: 简单二元运算 ==="); |
| 10 | + a : int = 10; |
| 11 | + b : int = 20; |
| 12 | + |
| 13 | + result1 : int = a + b; |
| 14 | + std::println("a + b = " + result1); |
| 15 | + |
| 16 | + result2 : int = a - b; |
| 17 | + std::println("a - b = " + result2); |
| 18 | + |
| 19 | + result3 : int = a * b; |
| 20 | + std::println("a * b = " + result3); |
| 21 | + |
| 22 | + result4 : int = b / a; |
| 23 | + std::println("b / a = " + result4); |
| 24 | + |
| 25 | + result5 : int = b % a; |
| 26 | + std::println("b % a = " + result5); |
| 27 | + |
| 28 | + // 测试2: 复杂表达式 |
| 29 | + std::println("\n=== 测试2: 复杂表达式 ==="); |
| 30 | + x : int = 5; |
| 31 | + y : int = 3; |
| 32 | + z : int = 2; |
| 33 | + |
| 34 | + complex1 : int = x + y * z; |
| 35 | + std::println("x + y * z = " + complex1); |
| 36 | + |
| 37 | + complex2 : int = (x + y) * z; |
| 38 | + std::println("(x + y) * z = " + complex2); |
| 39 | + |
| 40 | + complex3 : int = x * y + z * x; |
| 41 | + std::println("x * y + z * x = " + complex3); |
| 42 | + |
| 43 | + // 测试3: 热点检测 - 重复计算相同表达式 |
| 44 | + std::println("\n=== 测试3: 热点检测 (重复计算) ==="); |
| 45 | + i : int = 0; |
| 46 | + sum : int = 0; |
| 47 | + |
| 48 | + while (i < 150) { // 超过JIT阈值(100) |
| 49 | + temp : int = i * 2 + 1; // 这个表达式应该被JIT编译 |
| 50 | + sum = sum + temp; |
| 51 | + |
| 52 | + if (i % 30 == 0) { |
| 53 | + std::println("i = " + i + ", temp = " + temp + ", sum = " + sum); |
| 54 | + }; |
| 55 | + |
| 56 | + i = i + 1; |
| 57 | + }; |
| 58 | + |
| 59 | + std::println("最终sum = " + sum); |
| 60 | + |
| 61 | + // 测试4: 不同变量的相同模式 |
| 62 | + std::println("\n=== 测试4: 不同变量相同模式 ==="); |
| 63 | + p : int = 7; |
| 64 | + q : int = 11; |
| 65 | + r : int = 13; |
| 66 | + |
| 67 | + j : int = 0; |
| 68 | + while (j < 120) { // 再次超过JIT阈值 |
| 69 | + pattern1 : int = p * q + r; // 相同的运算模式 |
| 70 | + pattern2 : int = q * r + p; |
| 71 | + pattern3 : int = r * p + q; |
| 72 | + |
| 73 | + if (j % 40 == 0) { |
| 74 | + std::println("j = " + j + ", pattern1 = " + pattern1 + |
| 75 | + ", pattern2 = " + pattern2 + ", pattern3 = " + pattern3); |
| 76 | + }; |
| 77 | + |
| 78 | + j = j + 1; |
| 79 | + }; |
| 80 | + |
| 81 | + // 测试5: 长整数运算 |
| 82 | + std::println("\n=== 测试5: 长整数运算 ==="); |
| 83 | + big1 : long = 1000000; |
| 84 | + big2 : long = 2000000; |
| 85 | + |
| 86 | + big_result1 : long = big1 + big2; |
| 87 | + std::println("big1 + big2 = " + big_result1); |
| 88 | + |
| 89 | + big_result2 : long = big1 * big2; |
| 90 | + std::println("big1 * big2 = " + big_result2); |
| 91 | + |
| 92 | + // 测试6: 混合运算 |
| 93 | + std::println("\n=== 测试6: 混合运算 ==="); |
| 94 | + m : int = 15; |
| 95 | + n : int = 4; |
| 96 | + |
| 97 | + k : int = 0; |
| 98 | + while (k < 110) { // 再次触发JIT |
| 99 | + mixed1 : int = m + n - k; |
| 100 | + mixed2 : int = m * n / (k + 1); |
| 101 | + mixed3 : int = (m - n) * (k + 2); |
| 102 | + |
| 103 | + if (k % 25 == 0) { |
| 104 | + std::println("k = " + k + ", mixed1 = " + mixed1 + |
| 105 | + ", mixed2 = " + mixed2 + ", mixed3 = " + mixed3); |
| 106 | + }; |
| 107 | + |
| 108 | + k = k + 1; |
| 109 | + }; |
| 110 | + |
| 111 | + std::println("\n🎉 JIT算术表达式测试完成!"); |
| 112 | + std::println("注意观察JIT编译器的输出信息"); |
| 113 | + |
| 114 | + return 0; |
| 115 | +}; |
0 commit comments