diff --git a/fftma_module/gen/include/chunk_array.h b/fftma_module/gen/include/chunk_array.h index 630ccb4..4436d3d 100644 --- a/fftma_module/gen/include/chunk_array.h +++ b/fftma_module/gen/include/chunk_array.h @@ -10,6 +10,7 @@ typedef struct buffer { double* data; size_t init_pos; + bool dirty; }buffer_t; typedef struct chunk_array { diff --git a/fftma_module/gen/lib_src/chunk_array.c b/fftma_module/gen/lib_src/chunk_array.c index 13158d4..139a3f5 100644 --- a/fftma_module/gen/lib_src/chunk_array.c +++ b/fftma_module/gen/lib_src/chunk_array.c @@ -34,9 +34,11 @@ void chunk_array_flush(chunk_array_t* chunk_array) { } void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) { - int mod = get_mod(chunk_array, buffer->init_pos); - fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET); - fwrite(buffer->data, sizeof(double), mod, chunk_array->fp); + if (buffer->dirty) { + int mod = get_mod(chunk_array, buffer->init_pos); + fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET); + fwrite(buffer->data, sizeof(double), mod, chunk_array->fp); + } } @@ -63,6 +65,7 @@ buffer_t* buffer_create() { } buffer->init_pos = 0; + buffer->dirty = false; return buffer; } @@ -157,5 +160,6 @@ bool chunk_array_save(chunk_array_t* chunk_array, size_t pos, double valor) { } int real_pos = pos%get_mod(chunk_array, buffer->init_pos); buffer->data[real_pos]=valor; + buffer->dirty = true; return true; } \ No newline at end of file diff --git a/tests/performance/generation/time.py b/tests/performance/generation/time.py index 19eb542..0b8b991 100644 --- a/tests/performance/generation/time.py +++ b/tests/performance/generation/time.py @@ -47,7 +47,6 @@ def time_measurement(n, sample_size): _, duration = generate(n) print(i) sample.append(duration) - npsample = np.array(sample) print(f"AVG: {np.mean(npsample)} seconds")