From 47db3c5b8f081012d7b0d038ed40d1bccf5dab6b Mon Sep 17 00:00:00 2001 From: Tinram Date: Fri, 4 Jan 2019 11:04:45 +0000 Subject: [PATCH] add dev/null_detect.c --- dev/null_detect.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 dev/null_detect.c diff --git a/dev/null_detect.c b/dev/null_detect.c new file mode 100644 index 0000000..2e3d386 --- /dev/null +++ b/dev/null_detect.c @@ -0,0 +1,52 @@ + +/** + * RND64 + * null_detect.c + * + * Stream reader null counter. + * + * gcc null_detect.c -o null_detect -Ofast -flto -s + * rnd64 -f 1m | ./null_detect + * + * @author Martin Latter, 03/01/2019 + * @version 0.02 + * @license GNU GPL version 3.0 (GPL v3); https://www.gnu.org/licenses/gpl-3.0.html + * @link https://github.com/Tinram/RND64.git +*/ + + +#include +#include +#include +#include + + +int main(void) +{ + char c; + uint64_t iCharCount = 0; + uint64_t iByteCount = 0; + + clock_t tStart = 0; + clock_t tDiff = 0; + int iMSec = 0; + + while ((c = getchar_unlocked()) != EOF) + { + if (c == 0) + { + iCharCount++; + } + + iByteCount++; + } + + fprintf(stderr, "%"PRId64" null bytes found\n", iCharCount); + fprintf(stderr, "%"PRId64" bytes parsed\n", iByteCount); + + tDiff = clock() - tStart; + iMSec = tDiff * 1000 / CLOCKS_PER_SEC; + fprintf(stderr, "time: %d s %d ms\n", iMSec / 1000, iMSec % 1000); + + return EXIT_SUCCESS; +}