added some xma tests

This commit is contained in:
hyung-hwan 2025-06-14 23:16:45 +09:00
parent 0999287c19
commit 094010557d
4 changed files with 269 additions and 5 deletions

View File

@ -26,7 +26,7 @@ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \
journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \ journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \
bibtex-to-html.hawk bibtex-to-html.out bibtex-to-html.hawk bibtex-to-html.out
check_PROGRAMS = t-001 t-002 t-003 t-004 t-005 t-006 t-007 check_PROGRAMS = t-001 t-002 t-003 t-004 t-005 t-006 t-007 t-008 t-009
t_001_SOURCES = t-001.c tap.h t_001_SOURCES = t-001.c tap.h
t_001_CPPFLAGS = $(CPPFLAGS_COMMON) t_001_CPPFLAGS = $(CPPFLAGS_COMMON)
@ -67,6 +67,18 @@ t_007_CFLAGS = $(CFLAGS_COMMON)
t_007_LDFLAGS = $(LDFLAGS_COMMON) t_007_LDFLAGS = $(LDFLAGS_COMMON)
t_007_LDADD = $(LIBADD_COMMON) t_007_LDADD = $(LIBADD_COMMON)
t_008_SOURCES = t-008.c tap.h
t_008_CPPFLAGS = $(CPPFLAGS_COMMON)
t_008_CFLAGS = $(CFLAGS_COMMON)
t_008_LDFLAGS = $(LDFLAGS_COMMON)
t_008_LDADD = $(LIBADD_COMMON)
t_009_SOURCES = t-009.c tap.h
t_009_CPPFLAGS = $(CPPFLAGS_COMMON)
t_009_CFLAGS = $(CFLAGS_COMMON)
t_009_LDFLAGS = $(LDFLAGS_COMMON)
t_009_LDADD = $(LIBADD_COMMON)
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS) TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)

View File

@ -91,7 +91,8 @@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
@ENABLE_WIDE_CHAR_TRUE@am__append_1 = h-001.hawk h-002.hawk @ENABLE_WIDE_CHAR_TRUE@am__append_1 = h-001.hawk h-002.hawk
check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \ check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \
t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT) t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT) \
t-008$(EXEEXT) t-009$(EXEEXT)
subdir = t subdir = t
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
@ -155,6 +156,18 @@ t_007_DEPENDENCIES = $(am__DEPENDENCIES_2)
t_007_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ t_007_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_007_CFLAGS) $(CFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_007_CFLAGS) $(CFLAGS) \
$(t_007_LDFLAGS) $(LDFLAGS) -o $@ $(t_007_LDFLAGS) $(LDFLAGS) -o $@
am_t_008_OBJECTS = t_008-t-008.$(OBJEXT)
t_008_OBJECTS = $(am_t_008_OBJECTS)
t_008_DEPENDENCIES = $(am__DEPENDENCIES_2)
t_008_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_008_CFLAGS) $(CFLAGS) \
$(t_008_LDFLAGS) $(LDFLAGS) -o $@
am_t_009_OBJECTS = t_009-t-009.$(OBJEXT)
t_009_OBJECTS = $(am_t_009_OBJECTS)
t_009_DEPENDENCIES = $(am__DEPENDENCIES_2)
t_009_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_009_CFLAGS) $(CFLAGS) \
$(t_009_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@) AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false am__v_P_0 = false
@ -173,7 +186,8 @@ am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/t_001-t-001.Po \ am__depfiles_remade = ./$(DEPDIR)/t_001-t-001.Po \
./$(DEPDIR)/t_002-t-002.Po ./$(DEPDIR)/t_003-t-003.Po \ ./$(DEPDIR)/t_002-t-002.Po ./$(DEPDIR)/t_003-t-003.Po \
./$(DEPDIR)/t_004-t-004.Po ./$(DEPDIR)/t_005-t-005.Po \ ./$(DEPDIR)/t_004-t-004.Po ./$(DEPDIR)/t_005-t-005.Po \
./$(DEPDIR)/t_006-t-006.Po ./$(DEPDIR)/t_007-t-007.Po ./$(DEPDIR)/t_006-t-006.Po ./$(DEPDIR)/t_007-t-007.Po \
./$(DEPDIR)/t_008-t-008.Po ./$(DEPDIR)/t_009-t-009.Po
am__mv = mv -f am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -195,10 +209,10 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 = am__v_CCLD_1 =
SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \ SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \ $(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
$(t_007_SOURCES) $(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES)
DIST_SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \ DIST_SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \ $(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
$(t_007_SOURCES) $(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES)
am__can_run_installinfo = \ am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \ case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \ n|no|NO) false;; \
@ -638,6 +652,16 @@ t_007_CPPFLAGS = $(CPPFLAGS_COMMON)
t_007_CFLAGS = $(CFLAGS_COMMON) t_007_CFLAGS = $(CFLAGS_COMMON)
t_007_LDFLAGS = $(LDFLAGS_COMMON) t_007_LDFLAGS = $(LDFLAGS_COMMON)
t_007_LDADD = $(LIBADD_COMMON) t_007_LDADD = $(LIBADD_COMMON)
t_008_SOURCES = t-008.c tap.h
t_008_CPPFLAGS = $(CPPFLAGS_COMMON)
t_008_CFLAGS = $(CFLAGS_COMMON)
t_008_LDFLAGS = $(LDFLAGS_COMMON)
t_008_LDADD = $(LIBADD_COMMON)
t_009_SOURCES = t-009.c tap.h
t_009_CPPFLAGS = $(CPPFLAGS_COMMON)
t_009_CFLAGS = $(CFLAGS_COMMON)
t_009_LDFLAGS = $(LDFLAGS_COMMON)
t_009_LDADD = $(LIBADD_COMMON)
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS) TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)
TEST_EXTENSIONS = .hawk .err TEST_EXTENSIONS = .hawk .err
@ -713,6 +737,14 @@ t-007$(EXEEXT): $(t_007_OBJECTS) $(t_007_DEPENDENCIES) $(EXTRA_t_007_DEPENDENCIE
@rm -f t-007$(EXEEXT) @rm -f t-007$(EXEEXT)
$(AM_V_CCLD)$(t_007_LINK) $(t_007_OBJECTS) $(t_007_LDADD) $(LIBS) $(AM_V_CCLD)$(t_007_LINK) $(t_007_OBJECTS) $(t_007_LDADD) $(LIBS)
t-008$(EXEEXT): $(t_008_OBJECTS) $(t_008_DEPENDENCIES) $(EXTRA_t_008_DEPENDENCIES)
@rm -f t-008$(EXEEXT)
$(AM_V_CCLD)$(t_008_LINK) $(t_008_OBJECTS) $(t_008_LDADD) $(LIBS)
t-009$(EXEEXT): $(t_009_OBJECTS) $(t_009_DEPENDENCIES) $(EXTRA_t_009_DEPENDENCIES)
@rm -f t-009$(EXEEXT)
$(AM_V_CCLD)$(t_009_LINK) $(t_009_OBJECTS) $(t_009_LDADD) $(LIBS)
mostlyclean-compile: mostlyclean-compile:
-rm -f *.$(OBJEXT) -rm -f *.$(OBJEXT)
@ -726,6 +758,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_005-t-005.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_005-t-005.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_006-t-006.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_006-t-006.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_007-t-007.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_007-t-007.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_008-t-008.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_009-t-009.Po@am__quote@ # am--include-marker
$(am__depfiles_remade): $(am__depfiles_remade):
@$(MKDIR_P) $(@D) @$(MKDIR_P) $(@D)
@ -855,6 +889,34 @@ t_007-t-007.obj: t-007.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_007_CPPFLAGS) $(CPPFLAGS) $(t_007_CFLAGS) $(CFLAGS) -c -o t_007-t-007.obj `if test -f 't-007.c'; then $(CYGPATH_W) 't-007.c'; else $(CYGPATH_W) '$(srcdir)/t-007.c'; fi` @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_007_CPPFLAGS) $(CPPFLAGS) $(t_007_CFLAGS) $(CFLAGS) -c -o t_007-t-007.obj `if test -f 't-007.c'; then $(CYGPATH_W) 't-007.c'; else $(CYGPATH_W) '$(srcdir)/t-007.c'; fi`
t_008-t-008.o: t-008.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_008_CPPFLAGS) $(CPPFLAGS) $(t_008_CFLAGS) $(CFLAGS) -MT t_008-t-008.o -MD -MP -MF $(DEPDIR)/t_008-t-008.Tpo -c -o t_008-t-008.o `test -f 't-008.c' || echo '$(srcdir)/'`t-008.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_008-t-008.Tpo $(DEPDIR)/t_008-t-008.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t-008.c' object='t_008-t-008.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_008_CPPFLAGS) $(CPPFLAGS) $(t_008_CFLAGS) $(CFLAGS) -c -o t_008-t-008.o `test -f 't-008.c' || echo '$(srcdir)/'`t-008.c
t_008-t-008.obj: t-008.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_008_CPPFLAGS) $(CPPFLAGS) $(t_008_CFLAGS) $(CFLAGS) -MT t_008-t-008.obj -MD -MP -MF $(DEPDIR)/t_008-t-008.Tpo -c -o t_008-t-008.obj `if test -f 't-008.c'; then $(CYGPATH_W) 't-008.c'; else $(CYGPATH_W) '$(srcdir)/t-008.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_008-t-008.Tpo $(DEPDIR)/t_008-t-008.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t-008.c' object='t_008-t-008.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_008_CPPFLAGS) $(CPPFLAGS) $(t_008_CFLAGS) $(CFLAGS) -c -o t_008-t-008.obj `if test -f 't-008.c'; then $(CYGPATH_W) 't-008.c'; else $(CYGPATH_W) '$(srcdir)/t-008.c'; fi`
t_009-t-009.o: t-009.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -MT t_009-t-009.o -MD -MP -MF $(DEPDIR)/t_009-t-009.Tpo -c -o t_009-t-009.o `test -f 't-009.c' || echo '$(srcdir)/'`t-009.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_009-t-009.Tpo $(DEPDIR)/t_009-t-009.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t-009.c' object='t_009-t-009.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -c -o t_009-t-009.o `test -f 't-009.c' || echo '$(srcdir)/'`t-009.c
t_009-t-009.obj: t-009.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -MT t_009-t-009.obj -MD -MP -MF $(DEPDIR)/t_009-t-009.Tpo -c -o t_009-t-009.obj `if test -f 't-009.c'; then $(CYGPATH_W) 't-009.c'; else $(CYGPATH_W) '$(srcdir)/t-009.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_009-t-009.Tpo $(DEPDIR)/t_009-t-009.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t-009.c' object='t_009-t-009.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -c -o t_009-t-009.obj `if test -f 't-009.c'; then $(CYGPATH_W) 't-009.c'; else $(CYGPATH_W) '$(srcdir)/t-009.c'; fi`
mostlyclean-libtool: mostlyclean-libtool:
-rm -f *.lo -rm -f *.lo
@ -1128,6 +1190,20 @@ t-007.log: t-007$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \ --log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT) "$$tst" $(AM_TESTS_FD_REDIRECT)
t-008.log: t-008$(EXEEXT)
@p='t-008$(EXEEXT)'; \
b='t-008'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
t-009.log: t-009$(EXEEXT)
@p='t-009$(EXEEXT)'; \
b='t-009'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
.hawk.log: .hawk.log:
@p='$<'; \ @p='$<'; \
$(am__set_b); \ $(am__set_b); \
@ -1241,6 +1317,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/t_005-t-005.Po -rm -f ./$(DEPDIR)/t_005-t-005.Po
-rm -f ./$(DEPDIR)/t_006-t-006.Po -rm -f ./$(DEPDIR)/t_006-t-006.Po
-rm -f ./$(DEPDIR)/t_007-t-007.Po -rm -f ./$(DEPDIR)/t_007-t-007.Po
-rm -f ./$(DEPDIR)/t_008-t-008.Po
-rm -f ./$(DEPDIR)/t_009-t-009.Po
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -1293,6 +1371,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/t_005-t-005.Po -rm -f ./$(DEPDIR)/t_005-t-005.Po
-rm -f ./$(DEPDIR)/t_006-t-006.Po -rm -f ./$(DEPDIR)/t_006-t-006.Po
-rm -f ./$(DEPDIR)/t_007-t-007.Po -rm -f ./$(DEPDIR)/t_007-t-007.Po
-rm -f ./$(DEPDIR)/t_008-t-008.Po
-rm -f ./$(DEPDIR)/t_009-t-009.Po
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic

78
t/t-008.c Normal file
View File

@ -0,0 +1,78 @@
#include <hawk-xma.h>
#include <hawk-std.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "tap.h"
#define NUM_ITERATIONS 1000000
#define MIN_ALLOC_SIZE 16 // Minimum size of allocation in bytes
#define MAX_ALLOC_SIZE 1024 // Maximum size of allocation in bytes
#define OK_X(test) OK(test, #test)
size_t random_size()
{
return MIN_ALLOC_SIZE + rand() % (MAX_ALLOC_SIZE - MIN_ALLOC_SIZE + 1);
}
int main()
{
int test_bad = 0;
hawk_mmgr_t xma_mmgr;
no_plan();
hawk_init_xma_mmgr(&xma_mmgr, NUM_ITERATIONS * MAX_ALLOC_SIZE);
srand((unsigned int)time(NULL)); // Seed RNG
clock_t start_time, end_time;
double malloc_time = 0.0, free_time = 0.0;
void **ptr_array = malloc(NUM_ITERATIONS * sizeof(void *));
OK_X (ptr_array != NULL);
if (!ptr_array) {
fprintf(stderr, "malloc failed for pointer array\n");
return -1;
}
// Benchmark malloc
start_time = clock();
for (size_t i = 0; i < NUM_ITERATIONS; ++i) {
size_t size = random_size();
/*ptr_array[i] = malloc(size);*/
ptr_array[i] = HAWK_MMGR_ALLOC(&xma_mmgr, size);
if (!ptr_array[i]) {
fprintf(stderr, "malloc failed at iteration %zu\n", i);
test_bad = 1;
break;
}
}
OK_X (test_bad == 0);
if (test_bad) return -1;
end_time = clock();
malloc_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
// Benchmark free
start_time = clock();
for (size_t i = 0; i < NUM_ITERATIONS; ++i) {
/*free(ptr_array[i]);*/
HAWK_MMGR_FREE(&xma_mmgr, ptr_array[i]);
}
end_time = clock();
free_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
free(ptr_array); // Free the pointer array itself
printf("Performed %d allocations and frees\n", NUM_ITERATIONS);
printf("Total malloc time: %.6f seconds\n", malloc_time);
printf("Total free time : %.6f seconds\n", free_time);
printf("Average malloc time: %.9f seconds\n", malloc_time / NUM_ITERATIONS);
printf("Average free time : %.9f seconds\n", free_time / NUM_ITERATIONS);
return exit_status();
}

94
t/t-009.c Normal file
View File

@ -0,0 +1,94 @@
#include <hawk-xma.h>
#include <hawk-std.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "tap.h"
#define NUM_OPERATIONS 1000000
#define MAX_ALLOCATIONS 10000
#define MIN_ALLOC_SIZE 16
#define MAX_ALLOC_SIZE 1024
#define OK_X(test) OK(test, #test)
typedef struct {
void *ptr;
size_t size;
} Allocation;
size_t random_size()
{
return MIN_ALLOC_SIZE + rand() % (MAX_ALLOC_SIZE - MIN_ALLOC_SIZE + 1);
}
int main()
{
int test_bad = 0;
hawk_mmgr_t xma_mmgr;
no_plan();
hawk_init_xma_mmgr(&xma_mmgr, NUM_OPERATIONS * MAX_ALLOC_SIZE);
srand((unsigned int)time(NULL));
Allocation allocations[MAX_ALLOCATIONS] = {0}; // pool of active allocations
size_t num_active = 0;
clock_t start_time, end_time;
double malloc_time = 0.0, free_time = 0.0;
start_time = clock();
for (size_t i = 0; i < NUM_OPERATIONS; ++i)
{
int do_alloc = (num_active == 0) || (rand() % 2 == 0 && num_active < MAX_ALLOCATIONS);
if (do_alloc) {
// Allocate
size_t size = random_size();
//void *ptr = malloc(size);
void *ptr = HAWK_MMGR_ALLOC(&xma_mmgr, size);
if (!ptr) {
fprintf(stderr, "malloc failed at operation %zu\n", i);
break;
}
allocations[num_active].ptr = ptr;
allocations[num_active].size = size;
++num_active;
} else {
// Free a random active allocation
size_t index = rand() % num_active;
void *ptr_to_free = allocations[index].ptr;
clock_t t1 = clock();
//free(ptr_to_free);
HAWK_MMGR_FREE(&xma_mmgr, ptr_to_free);
clock_t t2 = clock();
free_time += (double)(t2 - t1) / CLOCKS_PER_SEC;
// Replace with last active allocation
allocations[index] = allocations[num_active - 1];
--num_active;
}
}
// Free remaining allocations
for (size_t i = 0; i < num_active; ++i) {
//free(allocations[i].ptr);
HAWK_MMGR_FREE(&xma_mmgr, allocations[i].ptr);
}
end_time = clock();
malloc_time = (double)(end_time - start_time) / CLOCKS_PER_SEC - free_time;
printf("Performed %d interleaved malloc/free operations\n", NUM_OPERATIONS);
printf("Total malloc time (estimated): %.6f seconds\n", malloc_time);
printf("Total free time : %.6f seconds\n", free_time);
printf("Average time per operation : %.9f seconds\n", (malloc_time + free_time) / NUM_OPERATIONS);
return 0;
}