Crude measurement; multiple input values
This commit is contained in:
parent
daa6b8f931
commit
4a41fac6ec
|
@ -3,13 +3,26 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
#define PRESERVES_IMPLEMENTATION
|
#define PRESERVES_IMPLEMENTATION
|
||||||
#include "preserves.h"
|
#include "preserves.h"
|
||||||
|
|
||||||
|
static double now() {
|
||||||
|
struct timeval tv;
|
||||||
|
if (gettimeofday(&tv, NULL) < 0) {
|
||||||
|
perror("gettimeofday");
|
||||||
|
}
|
||||||
|
return (double) tv.tv_sec + ((double) tv.tv_usec) / 1000000.0;
|
||||||
|
}
|
||||||
|
|
||||||
int main(__attribute__ ((unused)) int argc,
|
int main(__attribute__ ((unused)) int argc,
|
||||||
__attribute__ ((unused)) char const * const argv[])
|
__attribute__ ((unused)) char const * const argv[])
|
||||||
{
|
{
|
||||||
preserves_bytes_t input = preserves_create_bytes();
|
preserves_bytes_t input = preserves_create_bytes();
|
||||||
|
bool silent = getenv("SILENT") != NULL;
|
||||||
|
|
||||||
|
double start = now();
|
||||||
|
|
||||||
{
|
{
|
||||||
preserves_bytes_t chunk = preserves_create_bytes();
|
preserves_bytes_t chunk = preserves_create_bytes();
|
||||||
|
@ -36,28 +49,48 @@ int main(__attribute__ ((unused)) int argc,
|
||||||
preserves_free_bytes(&chunk);
|
preserves_free_bytes(&chunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double mid = now();
|
||||||
|
|
||||||
{
|
{
|
||||||
preserves_reader_t reader = preserves_create_reader();
|
preserves_reader_t reader = preserves_create_reader();
|
||||||
preserves_reader_result_t result = preserves_read_binary(&reader, &input, 1);
|
preserves_reader_result_t result = preserves_read_binary(&reader, &input, 1);
|
||||||
|
more_input:
|
||||||
if (result.index == NULL) {
|
if (result.index == NULL) {
|
||||||
perror("parsing");
|
perror("parsing");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Size of index: %lu bytes; %lu entries\n",
|
if (!silent) {
|
||||||
reader.index_pos * sizeof(preserves_index_entry_t),
|
printf("Size of index: %lu bytes; %lu entries\n",
|
||||||
reader.index_pos);
|
reader.index_pos * sizeof(preserves_index_entry_t),
|
||||||
|
reader.index_pos);
|
||||||
|
}
|
||||||
|
|
||||||
if (true) {
|
if (!silent) {
|
||||||
for (preserves_index_entry_t *i = result.index; i != result.end_marker; i++) {
|
for (preserves_index_entry_t *i = result.index; i != result.end_marker; i++) {
|
||||||
preserves_dump_index_entry(stdout, &reader.input, i, true);
|
preserves_dump_index_entry(stdout, &reader.input, i, true);
|
||||||
}
|
}
|
||||||
preserves_dump_index_entry(stdout, &reader.input, result.end_marker, true);
|
preserves_dump_index_entry(stdout, &reader.input, result.end_marker, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result.end_marker->data._err == PRESERVES_END_MORE_INPUT_REMAINING) {
|
||||||
|
if (!silent) {
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
reader.index_pos = 0;
|
||||||
|
result = preserves_read_binary_continue(&reader, 1);
|
||||||
|
goto more_input;
|
||||||
|
}
|
||||||
|
|
||||||
preserves_free_reader(&reader);
|
preserves_free_reader(&reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double end = now();
|
||||||
|
|
||||||
|
printf("stage 1: %g s\n", mid - start);
|
||||||
|
printf("stage 2: %g s\n", end - mid);
|
||||||
|
printf("total: %g s\n", end - start);
|
||||||
|
|
||||||
preserves_free_bytes(&input);
|
preserves_free_bytes(&input);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue