aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/bench_strings.zc
blob: 455cff94542388f4c97be9b31839892e53119088 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fn work() {
	let s = b"abcdefghijklmnopqrstuvwxyz0123456789";
	let i, acc, n, t, part, k, reps, ch;
	ch = get_c();
	reps = 0;
	while (ch >= '0' && ch <= '9') { reps = reps * 10 + ch - '0'; ch = get_c(); }
	while (reps > 0) {
		k = 0; acc = 0; n = len_s(s);
		while (k < 200) {
			i = 0;
			while (i < n) { acc = acc + at_s(s, i); i++; }
			k++;
		}
		t = s + b"!";
		part = t[1:8];
		acc = acc + len_s(t) + len_s(part) + at_s(part, 0);
		free(part);
		free(t);
		reps--;
	}
	return acc;
}
fn main() {
	put_n(work());
	put_c(10);
	return 0;
}