add dirty flag

improvement-double_with_dirty_flag
Oli 3 years ago
parent 64a2c0f3c4
commit 2fd7368bca

@ -10,6 +10,7 @@
typedef struct buffer { typedef struct buffer {
double* data; double* data;
size_t init_pos; size_t init_pos;
bool dirty;
}buffer_t; }buffer_t;
typedef struct chunk_array { typedef struct chunk_array {

@ -34,9 +34,11 @@ void chunk_array_flush(chunk_array_t* chunk_array) {
} }
void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) { void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) {
if (buffer->dirty) {
int mod = get_mod(chunk_array, buffer->init_pos); int mod = get_mod(chunk_array, buffer->init_pos);
fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET); fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET);
fwrite(buffer->data, sizeof(double), mod, chunk_array->fp); fwrite(buffer->data, sizeof(double), mod, chunk_array->fp);
}
} }
@ -63,6 +65,7 @@ buffer_t* buffer_create() {
} }
buffer->init_pos = 0; buffer->init_pos = 0;
buffer->dirty = false;
return buffer; 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); int real_pos = pos%get_mod(chunk_array, buffer->init_pos);
buffer->data[real_pos]=valor; buffer->data[real_pos]=valor;
buffer->dirty = true;
return true; return true;
} }

@ -47,7 +47,6 @@ def time_measurement(n, sample_size):
_, duration = generate(n) _, duration = generate(n)
print(i) print(i)
sample.append(duration) sample.append(duration)
npsample = np.array(sample) npsample = np.array(sample)
print(f"AVG: {np.mean(npsample)} seconds") print(f"AVG: {np.mean(npsample)} seconds")

Loading…
Cancel
Save