diff options
| author | Tyge Løvset <[email protected]> | 2021-03-22 22:53:32 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-03-22 22:53:32 +0100 |
| commit | c92f6f604dbb08530a8931bd6ce2db56d177130d (patch) | |
| tree | a610d43e642236009c0c17e87575ebe7a18959fd | |
| parent | e31376cace6a2bae2d13770ad818a38b3d3d6040 (diff) | |
| download | STC-modified-c92f6f604dbb08530a8931bd6ce2db56d177130d.tar.gz STC-modified-c92f6f604dbb08530a8931bd6ce2db56d177130d.zip | |
Final optimizations / minimal implementation carray.h
| -rw-r--r-- | stc/carray.h | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/stc/carray.h b/stc/carray.h index 95ca9a63..54c0c71c 100644 --- a/stc/carray.h +++ b/stc/carray.h @@ -129,9 +129,8 @@ int main() { STC_DEF carray2##X carray2##X##_from(carray2##X##_value_t* block, size_t xdim, size_t ydim) { \
size_t n = xdim * ydim; \
carray2##X _arr = {c_new_2(carray2##X##_value_t*, xdim), xdim, ydim}; \
- _arr.at[0] = block; \
- for (size_t x = 1; x < xdim; ++x) \
- _arr.at[x] = _arr.at[x - 1] + ydim; \
+ for (size_t x = 0; x < xdim; ++x, block += ydim) \
+ _arr.at[x] = block; \
return _arr; \
} \
\
@@ -163,15 +162,10 @@ int main() { \
STC_DEF carray3##X carray3##X##_from(carray3##X##_value_t* block, size_t xdim, size_t ydim, size_t zdim) { \
carray3##X _arr = {c_new_2(carray3##X##_value_t**, xdim*(ydim + 1)), xdim, ydim, zdim}; \
- _arr.at[0] = (carray3##X##_value_t**) &_arr.at[xdim]; \
- _arr.at[0][0] = block; \
- for (size_t x = 1, m = zdim*ydim; x < xdim; ++x) { \
- _arr.at[x] = _arr.at[x - 1] + ydim; \
- _arr.at[x][0] = _arr.at[x - 1][0] + m; \
- } \
- for (size_t x = 0; x < xdim; ++x) \
- for (size_t y = 1; y < ydim; ++y) \
- _arr.at[x][y] = _arr.at[x][y - 1] + zdim; \
+ carray3##X##_value_t** p = (carray3##X##_value_t**) &_arr.at[xdim]; \
+ for (size_t x = 0, y; x < xdim; ++x, p += ydim) \
+ for (_arr.at[x] = p, y = 0; y < ydim; ++y, block += zdim) \
+ _arr.at[x][y] = block; \
return _arr; \
} \
\
|
