1000 entries variable bytes at location 4-5 4809796 decicycles in av_map_add, 512 runs, 0 skips 3457756 decicycles in av_map_get, 512 runs, 0 skips 153482370 decicycles in av_dict_set, 512 runs, 0 skips 150045088 decicycles in av_dict_get, 512 runs, 0 skips
100 entries variable bytes at location 4-5 307603 decicycles in av_map_add, 512 runs, 0 skips 207432 decicycles in av_map_get, 512 runs, 0 skips 1743433 decicycles in av_dict_set, 512 runs, 0 skips 1609130 decicycles in av_dict_get, 512 runs, 0 skips 10 entries variable bytes at location 4-5 20084 decicycles in av_map_add, 512 runs, 0 skips 11145 decicycles in av_map_get, 512 runs, 0 skips 45788 decicycles in av_dict_set, 512 runs, 0 skips 21217 decicycles in av_dict_get, 512 runs, 0 skips 5 entries variable bytes at location 4-5 9476 decicycles in av_map_add, 512 runs, 0 skips 4427 decicycles in av_map_get, 512 runs, 0 skips 19873 decicycles in av_dict_set, 512 runs, 0 skips 5404 decicycles in av_dict_get, 512 runs, 0 skips 3 entries variable bytes at location 4-5 5695 decicycles in av_map_add, 512 runs, 0 skips 2553 decicycles in av_map_get, 512 runs, 0 skips 11035 decicycles in av_dict_set, 511 runs, 1 skips 2523 decicycles in av_dict_get, 512 runs, 0 skips 3 entries variable bytes at location 0-1 5496 decicycles in av_map_add, 512 runs, 0 skips 1939 decicycles in av_map_get, 512 runs, 0 skips 10867 decicycles in av_dict_set, 510 runs, 2 skips 1823 decicycles in av_dict_get, 512 runs, 0 skips 5 entries variable bytes at location 0-1 8228 decicycles in av_map_add, 512 runs, 0 skips 3297 decicycles in av_map_get, 512 runs, 0 skips 17767 decicycles in av_dict_set, 512 runs, 0 skips 3917 decicycles in av_dict_get, 512 runs, 0 skips 10 entries variable bytes at location 0-1 16691 decicycles in av_map_add, 511 runs, 1 skips 7220 decicycles in av_map_get, 512 runs, 0 skips 37575 decicycles in av_dict_set, 512 runs, 0 skips 11498 decicycles in av_dict_get, 512 runs, 0 skips 100 entries variable bytes at location 0-1 231734 decicycles in av_map_add, 512 runs, 0 skips 128690 decicycles in av_map_get, 512 runs, 0 skips 1017393 decicycles in av_dict_set, 512 runs, 0 skips 726464 decicycles in av_dict_get, 512 runs, 0 skips 1000 entries variable bytes at location 0-1 3857396 decicycles in av_map_add, 512 runs, 0 skips 2563465 decicycles in av_map_get, 512 runs, 0 skips 70277113 decicycles in av_dict_set, 512 runs, 0 skips 68152897 decicycles in av_dict_get, 512 runs, 0 skips Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> --- libavutil/tests/map.c | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/libavutil/tests/map.c b/libavutil/tests/map.c index 38f0a153e68..90950769f98 100644 --- a/libavutil/tests/map.c +++ b/libavutil/tests/map.c @@ -26,6 +26,8 @@ #include "libavutil/mem.h" #include "libavutil/map.h" +#include "libavutil/timer.h" +#include "libavutil/dict.h" static void print_set(const AVMap *s) { @@ -37,6 +39,7 @@ static void print_set(const AVMap *s) int main(void) { +#if 0 void *our_cmp[] = { strcmp, av_map_strcmp_keyvalue, @@ -185,6 +188,60 @@ int main(void) av_map_free(&set); av_assert0(!set); } +#else +#define N_ENTRIES 1000 +#define P 4 + fprintf(stderr, "%d entries variable bytes at location %d-%d\n", N_ENTRIES, P, P+1); + for (int runs = 0; runs < 1000; runs++) { + AVMap *map = av_map_new(av_strcasecmp, NULL, NULL); + for(int pass = 0; pass < 2; pass++) { + START_TIMER + unsigned r = 5; + for(int i=0; i<N_ENTRIES; i++) { + r = r*123 + 7; + char str[7] = "TEST"; + str[P ] = r; + str[P+1] = r>>8; + if(pass == 0) { + av_map_add(map, str, 7, str, 7, 0); + } else { + av_map_get(map, str, av_strcasecmp); + } + } + if (pass) { + STOP_TIMER("av_map_get") + } else { + STOP_TIMER("av_map_add") + } + } + av_map_free(&map); + } + + for (int runs = 0; runs < 1000; runs++) { + AVDictionary *dict = NULL; + for(int pass = 0; pass < 2; pass++) { + START_TIMER + unsigned r = 5; + for(int i=0; i<N_ENTRIES; i++) { + r = r*123 + 7; + char str[7] = "TEST"; + str[P ] = r; + str[P+1] = r>>8; + if(pass == 0) { + av_dict_set(&dict, str, str, 0); + } else { + av_dict_get(dict, str, NULL, 0); + } + } + if (pass) { + STOP_TIMER("av_dict_get") + } else { + STOP_TIMER("av_dict_set") + } + } + av_dict_free(&dict); + } +#endif return 0; } -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".