add dirty flag

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

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

@ -34,10 +34,12 @@ void chunk_array_flush(chunk_array_t* chunk_array) {
}
void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) {
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);
}
}
void buffer_update(chunk_array_t* chunk_array, buffer_t* buffer, size_t pos) {
@ -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;
}

@ -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")

Loading…
Cancel
Save