mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	 1919b7e72b
			
		
	
	
		1919b7e72b
		
	
	
	
	
		
			
			up the decimal module. Performance gains of the new C implementation are between 12x and 80x, depending on the application.
		
			
				
	
	
		
			175 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| #
 | |
| # Purpose: test with and without threads, all machine configurations, pydebug,
 | |
| #          refleaks, release build and release build with valgrind.
 | |
| #
 | |
| # Synopsis: ./runall-memorydebugger.sh [--all-configs64 | --all-configs32]
 | |
| #
 | |
| # Requirements: valgrind
 | |
| #
 | |
| 
 | |
| # Set additional CFLAGS for ./configure
 | |
| ADD_CFLAGS=
 | |
| 
 | |
| 
 | |
| CONFIGS_64="x64 uint128 ansi64 universal"
 | |
| CONFIGS_32="ppro ansi32 ansi-legacy universal"
 | |
| 
 | |
| VALGRIND="valgrind --tool=memcheck --leak-resolution=high \
 | |
|           --db-attach=yes --suppressions=Misc/valgrind-python.supp"
 | |
| 
 | |
| # Get args
 | |
| case $@ in
 | |
|      *--all-configs64*)
 | |
|          CONFIGS=$CONFIGS_64
 | |
|          ;;
 | |
|      *--all-configs32*)
 | |
|          CONFIGS=$CONFIGS_32
 | |
|          ;;
 | |
|      *)
 | |
|          CONFIGS="auto"
 | |
|          ;;
 | |
| esac
 | |
| 
 | |
| # gmake required
 | |
| GMAKE=`which gmake`
 | |
| if [ X"$GMAKE" = X"" ]; then
 | |
|     GMAKE=make
 | |
| fi
 | |
| 
 | |
| # Pretty print configurations
 | |
| print_config ()
 | |
| {
 | |
|     len=`echo $@ | wc -c`
 | |
|     margin="#%"`expr \( 74 - $len \) / 2`"s"
 | |
| 
 | |
|     echo ""
 | |
|     echo "# ========================================================================"
 | |
|     printf $margin ""
 | |
|     echo $@
 | |
|     echo "# ========================================================================"
 | |
|     echo ""
 | |
| }
 | |
| 
 | |
| 
 | |
| cd ..
 | |
| 
 | |
| # test_decimal: refleak, regular and Valgrind tests
 | |
| for args in "--without-threads" ""; do
 | |
|     for config in $CONFIGS; do
 | |
| 
 | |
|         unset PYTHON_DECIMAL_WITH_MACHINE
 | |
|         libmpdec_config=$config
 | |
|         if [ X"$config" != X"auto" ]; then
 | |
|             PYTHON_DECIMAL_WITH_MACHINE=$config
 | |
|             export PYTHON_DECIMAL_WITH_MACHINE
 | |
|         else
 | |
|             libmpdec_config=""
 | |
|         fi
 | |
| 
 | |
|         ############ refleak tests ###########
 | |
|         print_config "refleak tests: config=$config" $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
| 
 | |
|         cd ../../
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" --with-pydebug $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ======================== refleak tests ===========================\n\n"
 | |
|         ./python -m test -uall -R 2:2 test_decimal
 | |
| 
 | |
| 
 | |
|         ############ regular tests ###########
 | |
|         print_config "regular tests: config=$config" $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
| 
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ======================== regular tests ===========================\n\n"
 | |
|         ./python -m test -uall test_decimal
 | |
| 
 | |
| 
 | |
|         ########### valgrind tests ###########
 | |
|         valgrind=$VALGRIND
 | |
|         case "$config" in
 | |
|             # Valgrind has no support for 80 bit long double arithmetic.
 | |
|             ppro) valgrind= ;;
 | |
|             auto) case `uname -m` in
 | |
|                       i386|i486|i586|i686) valgrind= ;;
 | |
|                   esac
 | |
|         esac
 | |
| 
 | |
|         print_config "valgrind tests: config=$config" $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" --without-pymalloc $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ======================== valgrind tests ===========================\n\n"
 | |
|         $valgrind ./python -m test -uall test_decimal
 | |
| 
 | |
|         cd Modules/_decimal
 | |
|     done
 | |
| done
 | |
| 
 | |
| # deccheck
 | |
| cd ../../
 | |
| for config in $CONFIGS; do
 | |
|     for args in "--without-threads" ""; do
 | |
| 
 | |
|         unset PYTHON_DECIMAL_WITH_MACHINE
 | |
|         if [ X"$config" != X"auto" ]; then
 | |
|             PYTHON_DECIMAL_WITH_MACHINE=$config
 | |
|             export PYTHON_DECIMAL_WITH_MACHINE
 | |
|         fi
 | |
| 
 | |
|         ############ debug ############
 | |
|         print_config "deccheck: config=$config --with-pydebug" $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
| 
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" --with-pydebug $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ========================== debug ===========================\n\n"
 | |
|         ./python Modules/_decimal/tests/deccheck.py
 | |
| 
 | |
|         ########### regular ###########
 | |
|         print_config "deccheck: config=$config " $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
| 
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ======================== regular ===========================\n\n"
 | |
|         ./python Modules/_decimal/tests/deccheck.py
 | |
| 
 | |
|         ########### valgrind ###########
 | |
|         valgrind=$VALGRIND
 | |
|         case "$config" in
 | |
|             # Valgrind has no support for 80 bit long double arithmetic.
 | |
|             ppro) valgrind= ;;
 | |
|             auto) case `uname -m` in
 | |
|                       i386|i486|i586|i686) valgrind= ;;
 | |
|                   esac
 | |
|         esac
 | |
| 
 | |
|         print_config "valgrind deccheck: config=$config " $args
 | |
|         printf "\nbuilding python ...\n\n"
 | |
| 
 | |
|         $GMAKE distclean > /dev/null 2>&1
 | |
|         ./configure CFLAGS="$ADD_CFLAGS" --without-pymalloc $args > /dev/null 2>&1
 | |
|         $GMAKE | grep _decimal
 | |
| 
 | |
|         printf "\n\n# ======================== valgrind ==========================\n\n"
 | |
|         $valgrind ./python Modules/_decimal/tests/deccheck.py
 | |
|     done
 | |
| done
 | |
| 
 | |
| 
 | |
| 
 |