From 429efe3f49882f1f678ac833969a43b43520bac6 Mon Sep 17 00:00:00 2001 From: Nils K Date: Sun, 19 Apr 2020 23:32:17 +0200 Subject: [PATCH] sha1 --- branch_predict_test/Makefile | 2 +- branch_predict_test/branch_predict | Bin 13560 -> 0 bytes branch_predict_test/branch_predict.c | 55 +++++++++++++++++++++++++-- branch_predict_test/test.sh | 12 +++--- 4 files changed, 59 insertions(+), 10 deletions(-) delete mode 100755 branch_predict_test/branch_predict diff --git a/branch_predict_test/Makefile b/branch_predict_test/Makefile index 0aab384..23c6bed 100644 --- a/branch_predict_test/Makefile +++ b/branch_predict_test/Makefile @@ -1,2 +1,2 @@ build: branch_predict.c - gcc branch_predict.c -O2 -o branch_predict.exe + gcc branch_predict.c -O2 -lssl -lcrypto -o branch_predict.exe diff --git a/branch_predict_test/branch_predict b/branch_predict_test/branch_predict deleted file mode 100755 index e1090789711545ee3238664e38badb4b4691f425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13560 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 diff --git a/branch_predict_test/branch_predict.c b/branch_predict_test/branch_predict.c index 10e3d20..47ceebf 100644 --- a/branch_predict_test/branch_predict.c +++ b/branch_predict_test/branch_predict.c @@ -3,6 +3,11 @@ #include #include +////////// +#include +#include +///////// + /* * range of the chars in the randomly generated string * @@ -11,8 +16,13 @@ * */ -#define CHAR_START 33 -#define CHAR_END 127 +#define CHAR_START '1' +#define CHAR_END '9' + +//#define MEASURE_FUNC string_bit_count +//#define MEASURE_FUNC string_bit_count2 +//#define MEASURE_FUNC string_bit_count3 +#define MEASURE_FUNC sha1_int_from_string /* * returns dynamically allocated random string @@ -54,6 +64,9 @@ char** read_strings(const char* fileName, size_t* nRead); * count set bits in string s */ int string_bit_count(char* s); +int string_bit_count2(const char* s); +int string_bit_count3(const char* s); +int sha1_int_from_string(const char* s); /* * returns malloced memory of size memSize @@ -66,6 +79,9 @@ int string_sort_func(const void* a, const void* b); void usage_and_exit(); +#define PRE_STR_HELPER(token) #token +#define PRE_STR(token) PRE_STR_HELPER(token) + void usage_and_exit() { printf("usage\n"); printf(" measure \n"); @@ -96,10 +112,11 @@ int main(int argc, char* argv[]) unsigned long long counter = 0; clock_t t1, t0 = clock(); for(; *p; ++p) { - counter += string_bit_count(*p); + counter += MEASURE_FUNC(*p); } t1 = clock(); printf("measure file: <%s>\n", argv[2]); + printf("measure function: <%s>\n", PRE_STR(MEASURE_FUNC)); printf("counter = %llu\n", counter); printf("time = %lf ms\n", (t1 - t0) / (double) CLOCKS_PER_SEC * 1000.0); @@ -187,6 +204,25 @@ int string_bit_count(char* s) { //printf("count = %d\n", count); return count; } +int string_bit_count3(const char* s) { + static const unsigned char lookup[] ={0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8}; + int len = strlen(s); + int count = 0; + for(int i=0; i unsorted_sample01.txt -./branch_predict sort unsorted_sample01.txt > issorted_sample01.txt -echo "head of unsorted_sample01.txt" >> output.txt +./branch_predict.exe generate 5000000 4 4 > unsorted_sample01.txt +./branch_predict.exe sort unsorted_sample01.txt > issorted_sample01.txt +echo -e "\nhead of unsorted_sample01.txt" >> output.txt head unsorted_sample01.txt >> output.txt -echo "\n" >> output.txt -./branch_predict measure unsorted_sample01.txt >> output.txt -./branch_predict measure issorted_sample01.txt >> output.txt +echo -e "\n" >> output.txt +./branch_predict.exe measure unsorted_sample01.txt >> output.txt +./branch_predict.exe measure issorted_sample01.txt >> output.txt