/****************************************************************************** * Project Persistency * (c) copyright 2014 * Company XS Embedded GmbH *****************************************************************************/ /****************************************************************************** * This Source Code Form is subject to the terms of the * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed * with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ******************************************************************************/ /** * @file persistence_client_library_benchmark.c * @ingroup Persistence client library benchmark * @author Ingo Huerner * @brief Benchmark of persistence client library * @see */ #include "../include/persistence_client_library_key.h" #include "../include/persistence_client_library_file.h" #include "../include/persistence_client_library_error_def.h" #include #include #include /* atoi */ #include #include #include #include #include #define SECONDS2NANO 1000000000L #define NANO2MIL 1000000L #define MIL2SEC 1000L #define BUFFER_SIZE 2048 // define for the used clock: "CLOCK_MONOTONIC" or "CLOCK_REALTIME" #define CLOCK_ID CLOCK_MONOTONIC const char* gAppName = "lt-persistence_client_library_test"; extern const char* gWriteBuffer; extern const char* gWriteBuffer2; double gDurationMsWrite = 0, gSizeMbWrite = 0; double gAverageBytesWrite = 0, gAverageTimeWrite = 0; double gAverageBytesWriteSecond = 0, gAverageTimeWriteSecond = 0; double gDurationRead = 0, gSizeRead = 0; double gDurationReadSecond = 0, gSizeReadSecond = 0; double gDurationInit = 0, gDurationDeinit = 0; inline long long getNsDuration(struct timespec* start, struct timespec* end) { return ((end->tv_sec * SECONDS2NANO) + end->tv_nsec) - ((start->tv_sec * SECONDS2NANO) + start->tv_nsec); } inline long getMsDuration(struct timespec* start, struct timespec* end) { return (((end->tv_sec * SECONDS2NANO) + end->tv_nsec) - ((start->tv_sec * SECONDS2NANO) + start->tv_nsec))/NANO2MIL; } void init_benchmark(int numLoops) { int i = 0; long long durationInit = 0; long long durationDeInit = 0; struct timespec initStart, initEnd; struct timespec deInitStart, deInitEnd; int shutdownReg = PCL_SHUTDOWN_TYPE_FAST | PCL_SHUTDOWN_TYPE_NORMAL; for(i=0; i %.2f ms \n", gDurationInit); printf(" Deinit => %.2f ms \n", gDurationDeinit); } else { printf("Init benchmark - not activated.\n"); } printf("==================================================================================\n"); if(doRead == 1) { printf("Read benchmark\n"); printf(" Read => %.0f ns for \t [%.2f Kilobytes item]\n", gDurationRead, gSizeRead); printf(" Read => %.0f ns for \t [1 Kilobyte item]\n", (double)gDurationRead/(double)gSizeRead); } else { printf("Read benchmark - not activated.\n"); } printf("==================================================================================\n"); if(doWrite == 1) { printf("Write benchmark\n"); printf(" Write 1. => %.0f ns for \t [%.2f Kilobytes item]\n", gAverageTimeWrite, gAverageBytesWrite); printf(" Write 2. => %.0f ns for \t [%.2f Kilobytes item]\n", gAverageTimeWriteSecond, gAverageBytesWriteSecond); printf(" Write 1. => %.0f ns for \t [1 Kilobyte item]\n", gAverageTimeWrite/gAverageBytesWrite); printf(" Write 2. => %.0f ns for \t [1 Kilobyte item]\n", gAverageTimeWriteSecond/gAverageBytesWriteSecond); printf(" Writeback => %.3f ms for \t [%.2f Megabytes item]\n", gDurationMsWrite, gSizeMbWrite); printf(" Writeback => %.3f ms for \t [1 Megabyte item]\n", (double)gDurationMsWrite/(double)gSizeMbWrite); printf("Explanation:\n"); printf(" Writing the first time (1.) to an item takes more time.\n"); printf(" As we use the copy an write procedure, we create an entry for this item \n"); printf(" in the cache and are writing then to the cache.\n"); printf(" Further writes (2.) are faster.\n"); printf(" When the database will be close, all modified items will be written back\n"); printf(" to non-volatile memory device.\n"); } else { printf("Write benchmark - not activated.\n"); } printf("==================================================================================\n"); // unregister debug log and trace DLT_UNREGISTER_APP(); dlt_free(); return ret; } const char* gWriteBuffer = "---------> F I R S T write buffer starting block " "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste""Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "F I R S T write buffer ending block <---------"; const char* gWriteBuffer2 = "---------> S E C O N D write buffer starting block " "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste""Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "Pack my box with five dozen liquor jugs. - " "Jackdaws love my big sphinx of quartz. - " "The five boxing wizards jump quickly. - " "How vexingly quick daft zebras jump! - " "Bright vixens jump; dozy fowl quack - " "Sphinx of black quartz, judge my vow" "Voyez le brick géant que j’examine près du wha" "Zornig und gequält rügen jeweils Pontifex und Volk die maßlose bischöfliche Hybris" "Xaver schreibt für Wikipedia zum Spaß quälend lang über Yoga, Soja und Öko" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" "Fix, Schwyz!“ quäkt Jürgen blöd vom Paß" "Welch fieser Katzentyp quält da süße Vögel bloß zum Jux" "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste" "S E C O N D write buffer ending block <---------";