From 7a0fa5b30ca9cbdd346dd625d825241ba6a7ea36 Mon Sep 17 00:00:00 2001 From: Hendrik Sauer Date: Wed, 8 Dec 2021 12:53:05 +0100 Subject: [PATCH] Measure time --- src/extract_keys.c | 50 +++++++++++++++++++++++++++------------------- src/extract_keys.h | 2 +- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/extract_keys.c b/src/extract_keys.c index b7c970a..a6b20b6 100644 --- a/src/extract_keys.c +++ b/src/extract_keys.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -8,32 +9,27 @@ #include "export.pb-c.h" #include "extract_keys.h" - #define KEY_SIZE 16 #ifndef PROTOBUF_BLOCK_SIZE #define PROTOBUF_BLOCK_SIZE 0 #endif -#define EXPORT_BUFFER_SIZE 100000 +// #define EXPORT_BUFFER_SIZE 100000 void process_key(TemporaryExposureKey* key) { - printk("Attempting to process key\n"); - // #if !COVID_MEASURE_PERFORMANCE - if (key) { - if (key->has_key_data) { - int len = (key->key_data.len) + 1; - char data[len + 1]; - memcpy(data, key->key_data.data, len - 1); - data[len] = 0; - printk("New key: %s\n", data); - } - } - // #endif + // if (key) { + // if (key->has_key_data) { + // int len = (key->key_data.len) + 1; + // char data[len + 1]; + // memcpy(data, key->key_data.data, len - 1); + // data[len] = 0; + // } + // } } -size_t generate_keys(uint8_t** buffer_pointer, size_t max_size, int num_keys) { +size_t generate_keys(uint8_t** buffer_pointer, int num_keys) { TemporaryExposureKeyExport export = TEMPORARY_EXPOSURE_KEY_EXPORT__INIT; // temporary_exposure_key_export__init(&export); - TemporaryExposureKey** key_ptrs = (TemporaryExposureKey**) k_malloc(sizeof(TemporaryExposureKey*) * num_keys); + TemporaryExposureKey** key_ptrs = (TemporaryExposureKey**)k_malloc(sizeof(TemporaryExposureKey*) * num_keys); if (key_ptrs == NULL) { printk("Could not allocate memory for pointers\n"); return 0; @@ -80,9 +76,8 @@ int unpack_keys(uint8_t* buf, size_t buf_size) { printk("error unpacking incoming message\n"); return -2; } - printk("Buffer %s\n", buf); - printk("Batch num: %d, batch size: %d\n", export->batch_num, export->batch_size); - printk("Number of keys: %d\n", export->n_keys); + + printk("Num keys %d\n", export->n_keys); // Iterate over new keys for (int i = 0; i < export->n_keys; i++) { TemporaryExposureKey* key = export->keys[i]; @@ -98,12 +93,25 @@ int unpack_keys(uint8_t* buf, size_t buf_size) { } int test_unpacking(int num_keys) { + timing_t start_time, end_time; + uint64_t total_cycles; + uint64_t total_ns; + uint8_t* buffer; - printk("Test unpacking %d keys\n", num_keys); - size_t buffer_size = generate_keys(&buffer, EXPORT_BUFFER_SIZE, num_keys); + size_t buffer_size = generate_keys(&buffer, num_keys); + + timing_init(); + timing_start(); if (buffer_size) { + start_time = timing_counter_get(); unpack_keys(buffer, buffer_size); + end_time = timing_counter_get(); } + + total_cycles = timing_cycles_get(&start_time, &end_time); + total_ns = timing_cycles_to_ns(total_cycles); + printk("\nUnpacking %d keys took %lld us\n\n", num_keys, total_ns / 1000); + timing_stop(); k_free(buffer); return 0; } \ No newline at end of file diff --git a/src/extract_keys.h b/src/extract_keys.h index 36114f5..995f610 100644 --- a/src/extract_keys.h +++ b/src/extract_keys.h @@ -5,7 +5,7 @@ void process_key(TemporaryExposureKey*); -size_t generate_keys(uint8_t**, size_t, int); +size_t generate_keys(uint8_t**, int); int unpack_keys(uint8_t*, size_t) ;