summaryrefslogtreecommitdiffhomepage
path: root/misc/benchmarks/various
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-08-30 17:16:03 +0200
committerTyge Løvset <[email protected]>2023-08-30 17:16:03 +0200
commit80cd2adc2cd008aeee9f799f2dd5042f42b4ec82 (patch)
treebe2da7806abb6fe3e4fe33c1d2ae54e108d8efe5 /misc/benchmarks/various
parent263dbab626e6a99f7959a4c1716f0496906ee638 (diff)
downloadSTC-modified-80cd2adc2cd008aeee9f799f2dd5042f42b4ec82.tar.gz
STC-modified-80cd2adc2cd008aeee9f799f2dd5042f42b4ec82.zip
Smaller updates.
Diffstat (limited to 'misc/benchmarks/various')
-rw-r--r--misc/benchmarks/various/cspan_bench.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/misc/benchmarks/various/cspan_bench.c b/misc/benchmarks/various/cspan_bench.c
index 3b1c3132..bfc0ead3 100644
--- a/misc/benchmarks/various/cspan_bench.c
+++ b/misc/benchmarks/various/cspan_bench.c
@@ -42,7 +42,7 @@ static void Traditional_for_loop(intptr_t n)
printf("forloop : %.1f ms, %f\n", 1000.0f*t / CLOCKS_PER_SEC, sum);
}
-static void MDRanges_nested_loop(intptr_t n)
+static void MDRanges_loop_over_joined(intptr_t n)
{
clock_t t = clock();
MD3 r_in = cspan_md(Vin, nx, ny, nz);
@@ -52,22 +52,20 @@ static void MDRanges_nested_loop(intptr_t n)
double sum = 0;
for (intptr_t s = 0; s < n; ++s) {
- for (int x = 0; x < r_in.shape[0]; ++x) {
- for (int y = 0; y < r_in.shape[1]; ++y) {
- for (int z = 0; z < r_in.shape[2]; ++z)
- {
- double d = *cspan_at(&r_in, x,y,z);
- *cspan_at(&r_out, x,y,z) += d;
- sum += d;
- }
- }
+ MD3_iter i = MD3_begin(&r_in);
+ MD3_iter o = MD3_begin(&r_out);
+
+ for (; i.ref; MD3_next(&i), MD3_next(&o))
+ {
+ *o.ref += *i.ref;
+ sum += *i.ref;
}
}
t = clock() - t;
- printf("nested : %.1f ms, %f\n", 1000.0f*t / CLOCKS_PER_SEC, sum);
+ printf("joined : %.1f ms, %f\n", 1000.0f*t / CLOCKS_PER_SEC, sum);
}
-static void MDRanges_loop_over_joined(intptr_t n)
+static void MDRanges_nested_loop(intptr_t n)
{
clock_t t = clock();
MD3 r_in = cspan_md(Vin, nx, ny, nz);
@@ -77,19 +75,22 @@ static void MDRanges_loop_over_joined(intptr_t n)
double sum = 0;
for (intptr_t s = 0; s < n; ++s) {
- MD3_iter i = MD3_begin(&r_in);
- MD3_iter o = MD3_begin(&r_out);
-
- for (; i.ref; MD3_next(&i), MD3_next(&o))
- {
- *o.ref += *i.ref;
- sum += *i.ref;
+ for (int x = 0; x < r_in.shape[0]; ++x) {
+ for (int y = 0; y < r_in.shape[1]; ++y) {
+ for (int z = 0; z < r_in.shape[2]; ++z)
+ {
+ double d = *cspan_at(&r_in, x,y,z);
+ *cspan_at(&r_out, x,y,z) += d;
+ sum += d;
+ }
+ }
}
}
t = clock() - t;
- printf("joined : %.1f ms, %f\n", 1000.0f*t / CLOCKS_PER_SEC, sum);
+ printf("nested : %.1f ms, %f\n", 1000.0f*t / CLOCKS_PER_SEC, sum);
}
+
int main(void)
{
intptr_t n = 100000;
@@ -97,6 +98,6 @@ int main(void)
Vin[i] = i + 1.23;
Traditional_for_loop(n);
- MDRanges_nested_loop(n);
MDRanges_loop_over_joined(n);
+ MDRanges_nested_loop(n);
}