On Friday, 20 February 2015 at 12:23:49 UTC, Vlad Levenfeld wrote:
Slicing and in-place transformations are pretty much the only things that will preserve contiguity. Piping ac through map or something will take us back to manually propagating the sampling rate. In general, deciding how and when to preserve what information under which transformations is tough. Lazily mapping, say, to increase the volume could meaningfully preserve sampling rate, but under filtering, zipping or striding it doesn't make sense.

The sensible thing to do is to have ranges of contiguous ranges:

1. to get better cache locality

2. to iterate over btrees (which are popular now due to memory bus issues)

3. to do intermediate buffering for higher speed (SIMD)

In the worst case the contiguous range will degrade to 1 element, which is OK for prototyping. Then you can insert an intermediate buffer where needed after profiling performance.

Reply via email to