aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/bench_strings.zc
blob: c9fcdeeee2ca28393c0260d9342a6c74239427d2 (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
28
29
30
namespace;
include rt;

fn work() {
	let s = b"abcdefghijklmnopqrstuvwxyz0123456789";
	let i, acc, n, t, part, k, reps, ch;
	ch = rt.get_c();
	reps = 0; acc = 0;
	while (ch >= '0' && ch <= '9') { reps = reps * 10 + ch - '0'; ch = rt.get_c(); }
	while (reps > 0) {
		k = 0; acc = 0; n = rt.len_s(s);
		while (k < 200) {
			i = 0;
			while (i < n) { acc = acc + rt.at_s(s, i); i++; }
			k++;
		}
		t = s + b"!";
		part = t[1:8];
		acc = acc + rt.len_s(t) + rt.len_s(part) + rt.at_s(part, 0);
		rt.free(part);
		rt.free(t);
		reps--;
	}
	return acc;
}
fn main() {
	rt.put_n(work());
	rt.put_c(10);
	return 0;
}