Skip to content
This repository was archived by the owner on Aug 18, 2025. It is now read-only.

Commit 55b9a4b

Browse files
committed
demo
1 parent 77ac238 commit 55b9a4b

File tree

2 files changed

+145
-0
lines changed

2 files changed

+145
-0
lines changed

jit_arithmetic_test.cn

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
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+
};

jit_test.cn

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// 🚀 JIT编译器测试程序
2+
using lib <io>;
3+
using ns std;
4+
5+
fn main() : int {
6+
std::println("🚀 JIT编译器测试开始");
7+
8+
// 测试简单的算术运算
9+
a : int = 10;
10+
b : int = 20;
11+
c : int = a + b;
12+
13+
std::println("a = " + a);
14+
std::println("b = " + b);
15+
std::println("c = a + b = " + c);
16+
17+
// 测试循环
18+
i : int = 0;
19+
sum : int = 0;
20+
while (i < 5) {
21+
sum = sum + i;
22+
std::println("i = " + i + ", sum = " + sum);
23+
i = i + 1;
24+
};
25+
26+
std::println("最终sum = " + sum);
27+
std::println("🎉 JIT编译器测试完成!");
28+
29+
return 0;
30+
};

0 commit comments

Comments
 (0)