1
0
mirror of https://github.com/CovidBraceletPrj/CovidBracelet.git synced 2024-12-05 00:55:43 +01:00

Measure time

This commit is contained in:
Hendrik Sauer 2021-12-08 12:53:05 +01:00 committed by Patrick Rathje
parent 8f532ac7e4
commit 7a0fa5b30c
2 changed files with 30 additions and 22 deletions

View File

@ -1,6 +1,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/printk.h> #include <sys/printk.h>
#include <timing/timing.h>
#include <zephyr.h> #include <zephyr.h>
#include <protobuf-c.h> #include <protobuf-c.h>
@ -8,32 +9,27 @@
#include "export.pb-c.h" #include "export.pb-c.h"
#include "extract_keys.h" #include "extract_keys.h"
#define KEY_SIZE 16 #define KEY_SIZE 16
#ifndef PROTOBUF_BLOCK_SIZE #ifndef PROTOBUF_BLOCK_SIZE
#define PROTOBUF_BLOCK_SIZE 0 #define PROTOBUF_BLOCK_SIZE 0
#endif #endif
#define EXPORT_BUFFER_SIZE 100000 // #define EXPORT_BUFFER_SIZE 100000
void process_key(TemporaryExposureKey* key) { void process_key(TemporaryExposureKey* key) {
printk("Attempting to process key\n"); // if (key) {
// #if !COVID_MEASURE_PERFORMANCE // if (key->has_key_data) {
if (key) { // int len = (key->key_data.len) + 1;
if (key->has_key_data) { // char data[len + 1];
int len = (key->key_data.len) + 1; // memcpy(data, key->key_data.data, len - 1);
char data[len + 1]; // data[len] = 0;
memcpy(data, key->key_data.data, len - 1); // }
data[len] = 0; // }
printk("New key: %s\n", data);
}
}
// #endif
} }
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; TemporaryExposureKeyExport export = TEMPORARY_EXPOSURE_KEY_EXPORT__INIT;
// temporary_exposure_key_export__init(&export); // 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) { if (key_ptrs == NULL) {
printk("Could not allocate memory for pointers\n"); printk("Could not allocate memory for pointers\n");
return 0; return 0;
@ -80,9 +76,8 @@ int unpack_keys(uint8_t* buf, size_t buf_size) {
printk("error unpacking incoming message\n"); printk("error unpacking incoming message\n");
return -2; return -2;
} }
printk("Buffer %s\n", buf);
printk("Batch num: %d, batch size: %d\n", export->batch_num, export->batch_size); printk("Num keys %d\n", export->n_keys);
printk("Number of keys: %d\n", export->n_keys);
// Iterate over new keys // Iterate over new keys
for (int i = 0; i < export->n_keys; i++) { for (int i = 0; i < export->n_keys; i++) {
TemporaryExposureKey* key = export->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) { int test_unpacking(int num_keys) {
timing_t start_time, end_time;
uint64_t total_cycles;
uint64_t total_ns;
uint8_t* buffer; uint8_t* buffer;
printk("Test unpacking %d keys\n", num_keys); size_t buffer_size = generate_keys(&buffer, num_keys);
size_t buffer_size = generate_keys(&buffer, EXPORT_BUFFER_SIZE, num_keys);
timing_init();
timing_start();
if (buffer_size) { if (buffer_size) {
start_time = timing_counter_get();
unpack_keys(buffer, buffer_size); 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); k_free(buffer);
return 0; return 0;
} }

View File

@ -5,7 +5,7 @@
void process_key(TemporaryExposureKey*); 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) ; int unpack_keys(uint8_t*, size_t) ;