jorenham / Lmo

Trimmed L-moments and L-comoments for robust statistics.
https://jorenham.github.io/Lmo/
BSD 3-Clause "New" or "Revised" License
4 stars 1 forks source link

improve the `import lmo` runtime #122

Closed jorenham closed 9 months ago

jorenham commented 9 months ago

Most of the startup time comes from numpy and scipy imports.

In some cases scipy imports can be replaced with stdlib math functions. In other cases it sometimes to make sense to move the top-level imports into the relevant functions.

jorenham commented 9 months ago

With 1d97352

$ python -X importtime -c 'import lmo' 2> >(wc -l) >/dev/null
768
$ poetry run python -X importtime -c 'import lmo'
import time: self [us] | cumulative | imported package
import time:       107 |        107 |   _io
import time:        27 |         27 |   marshal
import time:       243 |        243 |   posix
import time:       398 |        774 | _frozen_importlib_external
import time:        96 |         96 |   time
import time:       130 |        226 | zipimport
import time:        88 |         88 |     _codecs
import time:       302 |        390 |   codecs
import time:       308 |        308 |   encodings.aliases
import time:       370 |       1066 | encodings
import time:       139 |        139 | encodings.utf_8
import time:        67 |         67 | _signal
import time:        32 |         32 |     _abc
import time:       162 |        193 |   abc
import time:       190 |        383 | io
import time:        37 |         37 |       _stat
import time:       176 |        212 |     stat
import time:       766 |        766 |     _collections_abc
import time:       100 |        100 |       genericpath
import time:       139 |        239 |     posixpath
import time:       457 |       1673 |   os
import time:       115 |        115 |   _sitebuiltins
import time:       161 |        161 |     __future__
import time:       235 |        396 |   _virtualenv
import time:       177 |        177 |   _distutils_hack
import time:        88 |         88 |   sitecustomize
import time:       835 |       3281 | site
import time:       133 |        133 |       itertools
import time:       121 |        121 |       keyword
import time:        64 |         64 |         _operator
import time:       307 |        370 |       operator
import time:       158 |        158 |       reprlib
import time:        59 |         59 |       _collections
import time:      1156 |       1995 |     collections
import time:       185 |        185 |     collections.abc
import time:       224 |        224 |         types
import time:        43 |         43 |         _functools
import time:       401 |        668 |       functools
import time:       473 |       1140 |     contextlib
import time:       597 |        597 |       enum
import time:        51 |         51 |         _sre
import time:       253 |        253 |           sre_constants
import time:       248 |        501 |         sre_parse
import time:       206 |        757 |       sre_compile
import time:        75 |         75 |       _locale
import time:       123 |        123 |       copyreg
import time:       387 |       1937 |     re
import time:      1618 |       6873 |   typing
import time:       179 |        179 |       warnings
import time:       224 |        224 |           numpy._utils._convertions
import time:       278 |        501 |         numpy._utils
import time:       437 |        938 |       numpy._globals
import time:       464 |        464 |       numpy.exceptions
import time:       172 |        172 |       numpy.version
import time:        29 |         29 |         numpy._distributor_init_local
import time:       179 |        208 |       numpy._distributor_init
import time:       712 |        712 |                 numpy._utils._inspect
import time:       226 |        226 |                     math
import time:       192 |        192 |                     _datetime
import time:       601 |       1019 |                   datetime
import time:       926 |        926 |                   numpy.core._exceptions
import time:       245 |        245 |                   numpy.dtypes
import time:      6388 |       8576 |                 numpy.core._multiarray_umath
import time:       608 |       9896 |               numpy.core.overrides
import time:      1729 |      11624 |             numpy.core.multiarray
import time:       365 |        365 |             numpy.core.umath
import time:       278 |        278 |               numbers
import time:       313 |        313 |               numpy.core._string_helpers
import time:       125 |        125 |                       fnmatch
import time:        69 |         69 |                         _winapi
import time:        60 |         60 |                         nt
import time:        56 |         56 |                         nt
import time:        54 |         54 |                         nt
import time:        53 |         53 |                         nt
import time:       201 |        492 |                       ntpath
import time:        52 |         52 |                       errno
import time:       100 |        100 |                         urllib
import time:       803 |        902 |                       urllib.parse
import time:       526 |       2095 |                     pathlib
import time:        71 |         71 |                     pickle5
import time:       166 |        166 |                         _struct
import time:       114 |        280 |                       struct
import time:       191 |        191 |                       _compat_pickle
import time:       196 |        196 |                       _pickle
import time:        63 |         63 |                           org
import time:        16 |         79 |                         org.python
import time:        16 |         95 |                       org.python.core
import time:       642 |       1401 |                     pickle
import time:       620 |       4185 |                   numpy.compat.py3k
import time:       288 |       4472 |                 numpy.compat
import time:      1395 |       1395 |                 numpy.core._dtype
import time:      1214 |       7080 |               numpy.core._type_aliases
import time:      1420 |       9090 |             numpy.core.numerictypes
import time:       126 |        126 |                         _contextvars
import time:       119 |        244 |                       contextvars
import time:       839 |       1082 |                     numpy.core._ufunc_config
import time:      1227 |       2309 |                   numpy.core._methods
import time:      4221 |       6529 |                 numpy.core.fromnumeric
import time:      1709 |       8238 |               numpy.core.shape_base
import time:      4852 |       4852 |               numpy.core.arrayprint
import time:       429 |        429 |               numpy.core._asarray
import time:      4725 |      18241 |             numpy.core.numeric
import time:      4281 |       4281 |             numpy.core.defchararray
import time:      2822 |       2822 |             numpy.core.records
import time:       808 |        808 |             numpy.core.memmap
import time:      1155 |       1155 |             numpy.core.function_base
import time:       994 |        994 |             numpy.core._machar
import time:      1912 |       1912 |             numpy.core.getlimits
import time:      2926 |       2926 |             numpy.core.einsumfunc
import time:       210 |        210 |               numpy.core._multiarray_tests
import time:      4241 |       4450 |             numpy.core._add_newdocs
import time:      1086 |       1086 |             numpy.core._add_newdocs_scalars
import time:       529 |        529 |             numpy.core._dtype_ctypes
import time:        58 |         58 |                 _ast
import time:       784 |        842 |               ast
import time:       400 |        400 |                 _ctypes
import time:       191 |        191 |                 ctypes._endian
import time:       613 |       1204 |               ctypes
import time:      3911 |       5956 |             numpy.core._internal
import time:       601 |        601 |             numpy._pytesttester
import time:      1005 |      67838 |           numpy.core
import time:        22 |      67860 |         numpy.core._multiarray_umath
import time:       660 |      68519 |       numpy.__config__
import time:       776 |        776 |         numpy.lib.mixins
import time:       478 |        478 |             numpy.lib.ufunclike
import time:      1283 |       1761 |           numpy.lib.type_check
import time:       783 |       2543 |         numpy.lib.scimath
import time:      1091 |       1091 |                     numpy.lib.stride_tricks
import time:      1653 |       2743 |                   numpy.lib.twodim_base
import time:       262 |        262 |                   numpy.linalg._umath_linalg
import time:       479 |        479 |                     numpy._typing._nested_sequence
import time:       208 |        208 |                     numpy._typing._nbit
import time:      1398 |       1398 |                     numpy._typing._char_codes
import time:       506 |        506 |                     numpy._typing._scalars
import time:       228 |        228 |                     numpy._typing._shape
import time:      1644 |       1644 |                     numpy._typing._dtype_like
import time:      2085 |       2085 |                     numpy._typing._array_like
import time:       844 |       7388 |                   numpy._typing
import time:      5963 |      16355 |                 numpy.linalg.linalg
import time:       396 |      16751 |               numpy.linalg
import time:      1855 |      18605 |             numpy.matrixlib.defmatrix
import time:       278 |      18883 |           numpy.matrixlib
import time:      2224 |       2224 |             numpy.lib.histograms
import time:     11704 |      13928 |           numpy.lib.function_base
import time:      2259 |      35069 |         numpy.lib.index_tricks
import time:      3072 |       3072 |         numpy.lib.nanfunctions
import time:      2230 |       2230 |         numpy.lib.shape_base
import time:      3258 |       3258 |         numpy.lib.polynomial
import time:      1009 |       1009 |           textwrap
import time:       660 |        660 |               signal
import time:       268 |        268 |                 _weakrefset
import time:       399 |        666 |               threading
import time:       160 |        160 |               fcntl
import time:        70 |         70 |               msvcrt
import time:       128 |        128 |               _posixsubprocess
import time:       141 |        141 |               select
import time:       384 |        384 |               selectors
import time:       387 |       2592 |             subprocess
import time:      1859 |       4451 |           platform
import time:      3347 |       8806 |         numpy.lib.utils
import time:      1935 |       1935 |         numpy.lib.arraysetops
import time:       304 |        304 |           weakref
import time:      2385 |       2385 |           numpy.lib.format
import time:      1251 |       1251 |           numpy.lib._datasource
import time:      2163 |       2163 |           numpy.lib._iotools
import time:      5369 |      11470 |         numpy.lib.npyio
import time:       685 |        685 |         numpy.lib.arrayterator
import time:      1685 |       1685 |         numpy.lib.arraypad
import time:       641 |        641 |         numpy.lib._version
import time:       745 |      72908 |       numpy.lib
import time:       123 |        123 |           numpy.fft._pocketfft_internal
import time:      1503 |       1625 |         numpy.fft._pocketfft
import time:       537 |        537 |         numpy.fft.helper
import time:       347 |       2509 |       numpy.fft
import time:      1745 |       1745 |           numpy.polynomial.polyutils
import time:      2514 |       2514 |           numpy.polynomial._polybase
import time:      1884 |       6142 |         numpy.polynomial.polynomial
import time:      2570 |       2570 |         numpy.polynomial.chebyshev
import time:      1921 |       1921 |         numpy.polynomial.legendre
import time:      1918 |       1918 |         numpy.polynomial.hermite
import time:      1871 |       1871 |         numpy.polynomial.hermite_e
import time:      1823 |       1823 |         numpy.polynomial.laguerre
import time:       396 |      16638 |       numpy.polynomial
import time:        68 |         68 |                 backports_abc
import time:       380 |        448 |               numpy.random._common
import time:       161 |        161 |                   binascii
import time:       177 |        338 |                 base64
import time:      1333 |       1333 |                   _hashlib
import time:       128 |        128 |                     _blake2
import time:       197 |        325 |                   hashlib
import time:       176 |       1833 |                 hmac
import time:       179 |        179 |                     _bisect
import time:       109 |        288 |                   bisect
import time:       124 |        124 |                   _random
import time:       111 |        111 |                   _sha512
import time:       573 |       1094 |                 random
import time:      9026 |      12290 |               secrets
import time:       350 |      13087 |             numpy.random.bit_generator
import time:       163 |        163 |             numpy.random._bounded_integers
import time:       142 |        142 |             numpy.random._mt19937
import time:       647 |      14038 |           numpy.random.mtrand
import time:       154 |        154 |           numpy.random._philox
import time:       150 |        150 |           numpy.random._pcg64
import time:       144 |        144 |           numpy.random._sfc64
import time:       423 |        423 |           numpy.random._generator
import time:       347 |      15253 |         numpy.random._pickle
import time:       426 |      15679 |       numpy.random
import time:      1595 |       1595 |       numpy.ctypeslib
import time:       130 |        130 |                 _opcode
import time:       184 |        313 |               opcode
import time:       287 |        600 |             dis
import time:       129 |        129 |               importlib
import time:       139 |        268 |             importlib.machinery
import time:       120 |        120 |                 token
import time:       604 |        724 |               tokenize
import time:       109 |        832 |             linecache
import time:      1160 |       2859 |           inspect
import time:     19905 |      22763 |         numpy.ma.core
import time:      4412 |       4412 |         numpy.ma.extras
import time:       343 |      27517 |       numpy.ma
import time:      2954 |     210274 |     numpy
import time:       700 |        700 |       numpy._typing._add_docstring
import time:       329 |       1028 |     numpy.typing
import time:       935 |        935 |               scipy._lib._testutils
import time:       254 |       1188 |             scipy._lib
import time:       444 |       1632 |           scipy._lib.deprecation
import time:       682 |        682 |           scipy.__config__
import time:       176 |        176 |           scipy.version
import time:       148 |        148 |           scipy._distributor_init
import time:      2723 |       2723 |           scipy._lib._pep440
import time:       274 |        274 |             scipy._lib._ccallback_c
import time:       807 |       1081 |           scipy._lib._ccallback
import time:      2895 |       9334 |         scipy
import time:       279 |        279 |         scipy.special._sf_error
import time:      1095 |       1095 |           scipy.special._ufuncs_cxx
import time:      4157 |       5251 |         scipy.special._ufuncs
import time:       185 |        185 |           scipy.special._specfun
import time:       128 |        128 |           scipy.special._comb
import time:      4234 |       4546 |         scipy.special._basic
import time:      2316 |       2316 |           scipy._lib._util
import time:       566 |       2881 |         scipy.special._logsumexp
import time:       290 |        290 |               scipy.linalg._fblas
import time:        36 |         36 |               scipy.linalg._cblas
import time:        30 |         30 |               scipy.linalg._fblas_64
import time:       982 |       1337 |             scipy.linalg.blas
import time:       564 |        564 |               scipy.linalg._flapack
import time:        36 |         36 |               scipy.linalg._clapack
import time:        29 |         29 |               scipy.linalg._flapack_64
import time:      1336 |       1963 |             scipy.linalg.lapack
import time:       549 |       3848 |           scipy.linalg._misc
import time:       723 |        723 |             scipy.linalg.cython_lapack
import time:       285 |       1007 |           scipy.linalg._cythonized_array_utils
import time:      3174 |       3174 |             scipy.linalg._decomp
import time:       851 |        851 |             scipy.linalg._decomp_svd
import time:       219 |        219 |             scipy.linalg._solve_toeplitz
import time:      3770 |       8014 |           scipy.linalg._basic
import time:       213 |        213 |             scipy.linalg._decomp_lu_cython
import time:       998 |       1211 |           scipy.linalg._decomp_lu
import time:       836 |        836 |           scipy.linalg._decomp_ldl
import time:       773 |        773 |           scipy.linalg._decomp_cholesky
import time:      1004 |       1004 |           scipy.linalg._decomp_qr
import time:      1022 |       1022 |           scipy.linalg._decomp_qz
import time:      1011 |       1011 |           scipy.linalg._decomp_schur
import time:       373 |        373 |           scipy.linalg._decomp_polar
import time:      1278 |       1278 |             scipy.linalg._expm_frechet
import time:       226 |        226 |               scipy.linalg._matfuncs_sqrtm_triu
import time:       740 |        965 |             scipy.linalg._matfuncs_sqrtm
import time:       295 |        295 |               scipy.linalg.cython_blas
import time:       270 |        565 |             scipy.linalg._matfuncs_expm
import time:      1753 |       4559 |           scipy.linalg._matfuncs
import time:      1984 |       1984 |           scipy.linalg._special_matrices
import time:      1946 |       1946 |           scipy.linalg._solvers
import time:       306 |        306 |           scipy.linalg._procrustes
import time:       228 |        228 |           scipy.linalg._decomp_update
import time:      1542 |       1542 |                 scipy.sparse._sputils
import time:       643 |        643 |                 scipy.sparse._matrix
import time:      4626 |       6810 |               scipy.sparse._base
import time:       205 |        205 |                 scipy.sparse._sparsetools
import time:      1529 |       1529 |                   scipy.sparse._data
import time:      1630 |       1630 |                   scipy.sparse._index
import time:      5870 |       9028 |                 scipy.sparse._compressed
import time:      1456 |      10687 |               scipy.sparse._csr
import time:       915 |        915 |               scipy.sparse._csc
import time:       521 |        521 |                 scipy.sparse._csparsetools
import time:      2307 |       2828 |               scipy.sparse._lil
import time:      2483 |       2483 |               scipy.sparse._dok
import time:      2337 |       2337 |               scipy.sparse._coo
import time:      1905 |       1905 |               scipy.sparse._dia
import time:      2539 |       2539 |               scipy.sparse._bsr
import time:      2531 |       2531 |               scipy.sparse._construct
import time:       386 |        386 |               scipy.sparse._extract
import time:       499 |        499 |               scipy.sparse._matrix_io
import time:       319 |        319 |                         scipy.sparse.linalg._isolve._iterative
import time:      2801 |       2801 |                         scipy.sparse.linalg._interface
import time:       613 |        613 |                         scipy.sparse.linalg._isolve.utils
import time:      2147 |       2147 |                           scipy._lib.decorator
import time:       442 |       2589 |                         scipy._lib._threadsafety
import time:      3705 |      10024 |                       scipy.sparse.linalg._isolve.iterative
import time:      1077 |       1077 |                       scipy.sparse.linalg._isolve.minres
import time:      1528 |       1528 |                         scipy.sparse.linalg._isolve._gcrotmk
import time:       699 |       2226 |                       scipy.sparse.linalg._isolve.lgmres
import time:      1174 |       1174 |                       scipy.sparse.linalg._isolve.lsqr
import time:      1122 |       1122 |                       scipy.sparse.linalg._isolve.lsmr
import time:       567 |        567 |                       scipy.sparse.linalg._isolve.tfqmr
import time:       443 |      16630 |                     scipy.sparse.linalg._isolve
import time:        71 |         71 |                               org
import time:        30 |        100 |                             org.python
import time:        27 |        127 |                           org.python.core
import time:       187 |        314 |                         copy
import time:       196 |        196 |                         scipy.sparse.linalg._dsolve._superlu
import time:        72 |         72 |                           scikits
import time:        26 |         98 |                         scikits.umfpack
import time:      1807 |       2413 |                       scipy.sparse.linalg._dsolve.linsolve
import time:       303 |        303 |                       scipy.sparse.linalg._dsolve._add_newdocs
import time:       340 |       3055 |                     scipy.sparse.linalg._dsolve
import time:       249 |        249 |                           scipy.sparse.linalg._eigen.arpack._arpack
import time:      4829 |       5078 |                         scipy.sparse.linalg._eigen.arpack.arpack
import time:       274 |       5351 |                       scipy.sparse.linalg._eigen.arpack
import time:      2921 |       2921 |                         scipy.sparse.linalg._eigen.lobpcg.lobpcg
import time:       337 |       3257 |                       scipy.sparse.linalg._eigen.lobpcg
import time:      1281 |       1281 |                       scipy.sparse.linalg._eigen._svds
import time:       340 |      10228 |                     scipy.sparse.linalg._eigen
import time:      1292 |       1292 |                         scipy.sparse.linalg._onenormest
import time:      2191 |       3483 |                       scipy.sparse.linalg._expm_multiply
import time:      2564 |       6047 |                     scipy.sparse.linalg._matfuncs
import time:       612 |        612 |                     scipy.sparse.linalg._norm
import time:       258 |        258 |                     scipy.sparse.linalg.isolve
import time:       277 |        277 |                     scipy.sparse.linalg.dsolve
import time:       265 |        265 |                     scipy.sparse.linalg.interface
import time:       264 |        264 |                     scipy.sparse.linalg.eigen
import time:       232 |        232 |                     scipy.sparse.linalg.matfuncs
import time:       459 |      38321 |                   scipy.sparse.linalg
import time:      1259 |      39579 |                 scipy.sparse.csgraph._laplacian
import time:       166 |        166 |                     scipy.sparse.csgraph._tools
import time:       443 |        608 |                   scipy.sparse.csgraph._validation
import time:       306 |        913 |                 scipy.sparse.csgraph._shortest_path
import time:       206 |        206 |                 scipy.sparse.csgraph._traversal
import time:       176 |        176 |                 scipy.sparse.csgraph._min_spanning_tree
import time:       217 |        217 |                 scipy.sparse.csgraph._flow
import time:       206 |        206 |                 scipy.sparse.csgraph._matching
import time:       190 |        190 |                 scipy.sparse.csgraph._reordering
import time:       500 |      41985 |               scipy.sparse.csgraph
import time:       259 |        259 |               scipy.sparse.base
import time:       244 |        244 |               scipy.sparse.bsr
import time:       255 |        255 |               scipy.sparse.compressed
import time:       244 |        244 |               scipy.sparse.construct
import time:       238 |        238 |               scipy.sparse.coo
import time:       228 |        228 |               scipy.sparse.csc
import time:       227 |        227 |               scipy.sparse.csr
import time:       223 |        223 |               scipy.sparse.data
import time:       234 |        234 |               scipy.sparse.dia
import time:       237 |        237 |               scipy.sparse.dok
import time:       274 |        274 |               scipy.sparse.extract
import time:       233 |        233 |               scipy.sparse.lil
import time:       299 |        299 |               scipy.sparse.sparsetools
import time:       242 |        242 |               scipy.sparse.sputils
import time:       907 |      80233 |             scipy.sparse
import time:       345 |      80578 |           scipy.linalg._sketches
import time:       810 |        810 |           scipy.linalg._decomp_cossin
import time:       247 |        247 |           scipy.linalg.decomp
import time:       230 |        230 |           scipy.linalg.decomp_cholesky
import time:       225 |        225 |           scipy.linalg.decomp_lu
import time:       223 |        223 |           scipy.linalg.decomp_qr
import time:       224 |        224 |           scipy.linalg.decomp_svd
import time:       226 |        226 |           scipy.linalg.decomp_schur
import time:       269 |        269 |           scipy.linalg.basic
import time:       222 |        222 |           scipy.linalg.misc
import time:       238 |        238 |           scipy.linalg.special_matrices
import time:       160 |        160 |               scipy.linalg._flinalg
import time:       320 |        479 |             scipy.linalg._flinalg_py
import time:       219 |        697 |           scipy.linalg.flinalg
import time:       257 |        257 |           scipy.linalg.matfuncs
import time:      5462 |     118015 |         scipy.special._orthogonal
import time:       284 |        284 |         scipy.special._spfun_stats
import time:       174 |        174 |           scipy.special._ellip_harm_2
import time:       334 |        507 |         scipy.special._ellip_harm
import time:       207 |        207 |         scipy.special._lambertw
import time:       310 |        310 |         scipy.special._spherical_bessel
import time:      3361 |       3361 |           scipy.special._add_newdocs
import time:       226 |       3587 |         scipy.special.add_newdocs
import time:       325 |        325 |         scipy.special.basic
import time:       306 |        306 |         scipy.special.orthogonal
import time:       237 |        237 |         scipy.special.specfun
import time:       214 |        214 |         scipy.special.sf_error
import time:       213 |        213 |         scipy.special.spfun_stats
import time:       754 |     147241 |       scipy.special
import time:      8636 |       8636 |         typing_extensions
import time:     14784 |      23420 |       lmo.typing
import time:       815 |     171475 |     lmo.ostats
import time:      1714 |       1714 |       lmo._utils
import time:       285 |       1998 |     lmo.pwm_beta
import time:       352 |        352 |     lmo.linalg
import time:       824 |     385949 |   lmo._lm
import time:       270 |        270 |   lmo._lm_co
import time:       167 |        167 |         _csv
import time:       231 |        398 |       csv
import time:       113 |        113 |       email
import time:        99 |         99 |           importlib._abc
import time:       176 |        275 |         importlib.util
import time:       156 |        156 |           zlib
import time:       151 |        151 |             _compression
import time:       177 |        177 |             _bz2
import time:       163 |        490 |           bz2
import time:       201 |        201 |             _lzma
import time:       164 |        365 |           lzma
import time:       459 |       1468 |         shutil
import time:       560 |       2302 |       zipfile
import time:       118 |        118 |           uu
import time:       112 |        112 |           quopri
import time:       215 |        215 |               _socket
import time:       166 |        166 |               array
import time:      1115 |       1494 |             socket
import time:       597 |        597 |                 locale
import time:       385 |        981 |               calendar
import time:       164 |       1145 |             email._parseaddr
import time:        95 |         95 |               email.base64mime
import time:        31 |         31 |                   _string
import time:       444 |        475 |                 string
import time:       173 |        647 |               email.quoprimime
import time:       357 |        357 |               email.errors
import time:        88 |         88 |               email.encoders
import time:       164 |       1349 |             email.charset
import time:       407 |       4394 |           email.utils
import time:       460 |        460 |             email.header
import time:       198 |        657 |           email._policybase
import time:       190 |        190 |           email._encoded_words
import time:        92 |         92 |           email.iterators
import time:       356 |       5916 |         email.message
import time:        83 |         83 |           importlib.metadata._functools
import time:       116 |        198 |         importlib.metadata._text
import time:       205 |       6318 |       importlib.metadata._adapters
import time:       254 |        254 |       importlib.metadata._meta
import time:       250 |        250 |       importlib.metadata._collections
import time:        81 |         81 |       importlib.metadata._itertools
import time:       382 |        382 |       importlib.abc
import time:       920 |      11013 |     importlib.metadata
import time:       190 |      11203 |   lmo._meta
import time:        67 |         67 |     pandas
import time:       204 |        271 |   lmo.contrib
import time:       403 |        403 |       scipy.stats._warnings_errors
import time:       214 |        214 |               traceback
import time:       352 |        352 |               unittest.util
import time:       372 |        937 |             unittest.result
import time:       135 |        135 |                   _heapq
import time:       133 |        267 |                 heapq
import time:       762 |       1029 |               difflib
import time:       392 |        392 |                 dataclasses
import time:       213 |        605 |               pprint
import time:       572 |       2204 |             unittest.case
import time:       278 |        278 |             unittest.suite
import time:       540 |        540 |             unittest.loader
import time:       682 |        682 |                 gettext
import time:       507 |       1188 |               argparse
import time:       197 |        197 |                 unittest.signals
import time:       273 |        470 |               unittest.runner
import time:       273 |       1930 |             unittest.main
import time:       435 |       6321 |           unittest
import time:       232 |        232 |           numpy.testing._private
import time:        53 |         53 |             gc
import time:       910 |        910 |             tempfile
import time:       287 |        287 |             sysconfig
import time:       258 |        258 |             _sysconfigdata__linux_x86_64-linux-gnu
import time:     12675 |      14180 |           numpy.testing._private.utils
import time:       940 |        940 |           numpy.testing._private.extbuild
import time:       335 |        335 |           numpy.testing.overrides
import time:       370 |      22376 |         numpy.testing
import time:       336 |        336 |               scipy.spatial._ckdtree
import time:      1382 |       1717 |             scipy.spatial._kdtree
import time:       129 |        129 |               scipy._lib.messagestream
import time:       370 |        499 |             scipy.spatial._qhull
import time:       174 |        174 |               scipy.spatial._voronoi
import time:       918 |       1092 |             scipy.spatial._spherical_voronoi
import time:       971 |        971 |             scipy.spatial._plotutils
import time:       312 |        312 |             scipy.spatial._procrustes
import time:       166 |        166 |                 scipy.spatial._distance_wrap
import time:       190 |        190 |                 scipy.spatial._hausdorff
import time:       430 |        430 |                 scipy.spatial._distance_pybind
import time:      7094 |       7878 |               scipy.spatial.distance
import time:       501 |       8378 |             scipy.spatial._geometric_slerp
import time:       284 |        284 |             scipy.spatial.ckdtree
import time:       238 |        238 |             scipy.spatial.kdtree
import time:       238 |        238 |             scipy.spatial.qhull
import time:        72 |         72 |                 backports_abc
import time:      3642 |       3642 |                     scipy.constants._codata
import time:       978 |        978 |                     scipy.constants._constants
import time:       260 |        260 |                     scipy.constants.codata
import time:       368 |        368 |                     scipy.constants.constants
import time:       927 |       6174 |                   scipy.constants
import time:       745 |       6918 |                 scipy.spatial.transform._rotation_groups
import time:       506 |       7495 |               scipy.spatial.transform._rotation
import time:      1302 |       1302 |               scipy.spatial.transform._rotation_spline
import time:       240 |        240 |               scipy.spatial.transform.rotation
import time:       282 |       9317 |             scipy.spatial.transform
import time:       405 |      23447 |           scipy.spatial
import time:        13 |      23460 |         scipy.spatial.distance
import time:       541 |        541 |             scipy.ndimage._ni_support
import time:       147 |        147 |             scipy.ndimage._nd_image
import time:       697 |        697 |               scipy._lib.doccer
import time:       392 |       1089 |             scipy.ndimage._ni_docstrings
import time:      5042 |       6817 |           scipy.ndimage._filters
import time:       624 |        624 |           scipy.ndimage._fourier
import time:      2301 |       2301 |           scipy.ndimage._interpolation
import time:       233 |        233 |             scipy.ndimage._ni_label
import time:      3088 |       3088 |             scipy.ndimage._morphology
import time:      2429 |       5749 |           scipy.ndimage._measurements
import time:       270 |        270 |           scipy.ndimage.filters
import time:       233 |        233 |           scipy.ndimage.fourier
import time:       237 |        237 |           scipy.ndimage.interpolation
import time:       239 |        239 |           scipy.ndimage.measurements
import time:       242 |        242 |           scipy.ndimage.morphology
import time:       425 |      17133 |         scipy.ndimage
import time:      1253 |       1253 |             scipy.stats._distr_params
import time:       155 |        155 |                 scipy.optimize._minpack2
import time:      1935 |       2090 |               scipy.optimize._linesearch
import time:       168 |        168 |                 scipy.optimize._group_columns
import time:      1738 |       1905 |               scipy.optimize._numdiff
import time:      1057 |       1057 |               scipy.optimize._hessian_update_strategy
import time:      1914 |       1914 |               scipy.optimize._differentiable_functions
import time:      8742 |      15706 |             scipy.optimize._optimize
import time:       944 |        944 |                 scipy.optimize._trustregion
import time:       417 |       1361 |               scipy.optimize._trustregion_dogleg
import time:       424 |        424 |               scipy.optimize._trustregion_ncg
import time:       294 |        294 |                   scipy.optimize._trlib._trlib
import time:       275 |        568 |                 scipy.optimize._trlib
import time:       282 |        850 |               scipy.optimize._trustregion_krylov
import time:      1017 |       1017 |               scipy.optimize._trustregion_exact
import time:      1687 |       1687 |                   scipy.optimize._constraints
import time:        67 |         67 |                         sksparse
import time:        19 |         86 |                       sksparse.cholmod
import time:      1022 |       1107 |                     scipy.optimize._trustregion_constr.projections
import time:      1177 |       1177 |                     scipy.optimize._trustregion_constr.qp_subproblem
import time:       678 |       2961 |                   scipy.optimize._trustregion_constr.equality_constrained_sqp
import time:      1511 |       1511 |                   scipy.optimize._trustregion_constr.canonical_constraint
import time:      1106 |       1106 |                   scipy.optimize._trustregion_constr.tr_interior_point
import time:       452 |        452 |                   scipy.optimize._trustregion_constr.report
import time:      1618 |       9333 |                 scipy.optimize._trustregion_constr.minimize_trustregion_constr
import time:       224 |       9556 |               scipy.optimize._trustregion_constr
import time:       172 |        172 |                 scipy.optimize._lbfgsb
import time:      1137 |       1308 |               scipy.optimize._lbfgsb_py
import time:       146 |        146 |                 scipy.optimize._moduleTNC
import time:       770 |        916 |               scipy.optimize._tnc
import time:       158 |        158 |                 scipy.optimize._cobyla
import time:       860 |       1017 |               scipy.optimize._cobyla_py
import time:       145 |        145 |                 scipy.optimize._slsqp
import time:      1522 |       1667 |               scipy.optimize._slsqp_py
import time:      2008 |      20121 |             scipy.optimize._minimize
import time:       142 |        142 |                 scipy.optimize._minpack
import time:      1853 |       1853 |                       scipy.optimize._lsq.common
import time:      1581 |       3433 |                     scipy.optimize._lsq.trf
import time:       957 |        957 |                     scipy.optimize._lsq.dogbox
import time:      1913 |       6303 |                   scipy.optimize._lsq.least_squares
import time:       193 |        193 |                       scipy.optimize._lsq.givens_elimination
import time:       906 |       1098 |                     scipy.optimize._lsq.trf_linear
import time:       658 |        658 |                     scipy.optimize._lsq.bvls
import time:       746 |       2500 |                   scipy.optimize._lsq.lsq_linear
import time:       235 |       9037 |                 scipy.optimize._lsq
import time:      2311 |      11489 |               scipy.optimize._minpack_py
import time:       797 |        797 |               scipy.optimize._spectral
import time:      4942 |       4942 |               scipy.optimize._nonlin
import time:       976 |      18203 |             scipy.optimize._root
import time:       128 |        128 |                 scipy.optimize._zeros
import time:      3158 |       3286 |               scipy.optimize._zeros_py
import time:       922 |       4208 |             scipy.optimize._root_scalar
import time:       143 |        143 |               scipy.optimize.__nnls
import time:       347 |        489 |             scipy.optimize._nnls
import time:      1458 |       1458 |             scipy.optimize._basinhopping
import time:       192 |        192 |                   scipy.optimize._highs
import time:       551 |        743 |                 scipy.optimize._highs._highs_wrapper
import time:       126 |        126 |                 scipy.optimize._highs._highs_constants
import time:       931 |       1798 |               scipy.optimize._linprog_highs
import time:       221 |        221 |                         scipy.linalg._interpolative
import time:      2105 |       2326 |                       scipy.linalg._interpolative_backend
import time:      1208 |       3533 |                     scipy.linalg.interpolative
import time:      1125 |       4658 |                   scipy.optimize._remove_redundancy
import time:      3189 |       7846 |                 scipy.optimize._linprog_util
import time:        71 |         71 |                 sksparse
import time:        60 |         60 |                   scikits
import time:        14 |         73 |                 scikits.umfpack
import time:      2104 |      10092 |               scipy.optimize._linprog_ip
import time:      1032 |       1032 |               scipy.optimize._linprog_simplex
import time:       294 |        294 |                 scipy.optimize._bglu_dense
import time:      1387 |       1681 |               scipy.optimize._linprog_rs
import time:       728 |        728 |               scipy.optimize._linprog_doc
import time:       990 |      16318 |             scipy.optimize._linprog
import time:       130 |        130 |             scipy.optimize._lsap
import time:      3166 |       3166 |             scipy.optimize._differentialevolution
import time:        37 |         37 |                 atexit
import time:      1437 |       1474 |               logging
import time:       217 |        217 |                 scipy.optimize._shgo_lib
import time:       497 |        497 |                   _decimal
import time:       129 |        625 |                 decimal
import time:      1640 |       1640 |                 scipy.optimize._shgo_lib._vertex
import time:      3377 |       5857 |               scipy.optimize._shgo_lib._complex
import time:      3429 |      10759 |             scipy.optimize._shgo
import time:      1906 |       1906 |             scipy.optimize._dual_annealing
import time:      1398 |       1398 |             scipy.optimize._qap
import time:       132 |        132 |               scipy.optimize._direct
import time:       640 |        772 |             scipy.optimize._direct_py
import time:       811 |        811 |             scipy.optimize._milp
import time:       240 |        240 |             scipy.optimize.cobyla
import time:       240 |        240 |             scipy.optimize.lbfgsb
import time:       238 |        238 |             scipy.optimize.linesearch
import time:       290 |        290 |             scipy.optimize.minpack
import time:       226 |        226 |             scipy.optimize.minpack2
import time:       222 |        222 |             scipy.optimize.moduleTNC
import time:       260 |        260 |             scipy.optimize.nonlin
import time:       267 |        267 |             scipy.optimize.optimize
import time:       243 |        243 |             scipy.optimize.slsqp
import time:       247 |        247 |             scipy.optimize.tnc
import time:       240 |        240 |             scipy.optimize.zeros
import time:      3537 |       3537 |             scipy.integrate._quadrature
import time:       187 |        187 |               scipy.integrate._odepack
import time:       480 |        666 |             scipy.integrate._odepack_py
import time:       168 |        168 |               scipy.integrate._quadpack
import time:      1962 |       2129 |             scipy.integrate._quadpack_py
import time:       235 |        235 |               scipy.integrate._vode
import time:       179 |        179 |               scipy.integrate._dop
import time:       167 |        167 |               scipy.integrate._lsoda
import time:      3982 |       4561 |             scipy.integrate._ode
import time:      2999 |       2999 |             scipy.integrate._bvp
import time:      1540 |       1540 |                   scipy.integrate._ivp.common
import time:       763 |        763 |                   scipy.integrate._ivp.base
import time:      1619 |       3921 |                 scipy.integrate._ivp.bdf
import time:      1697 |       1697 |                 scipy.integrate._ivp.radau
import time:      1026 |       1026 |                   scipy.integrate._ivp.dop853_coefficients
import time:      1630 |       2655 |                 scipy.integrate._ivp.rk
import time:       632 |        632 |                 scipy.integrate._ivp.lsoda
import time:      1407 |      10310 |               scipy.integrate._ivp.ivp
import time:       297 |      10607 |             scipy.integrate._ivp
import time:      2089 |       2089 |             scipy.integrate._quad_vec
import time:       241 |        241 |             scipy.integrate.dop
import time:       225 |        225 |             scipy.integrate.lsoda
import time:       220 |        220 |             scipy.integrate.vode
import time:       231 |        231 |             scipy.integrate.odepack
import time:       230 |        230 |             scipy.integrate.quadpack
import time:       480 |        480 |             scipy._lib._finite_differences
import time:       253 |        253 |             scipy.stats._constants
import time:      1009 |       1009 |             scipy.stats._censored_data
import time:     12921 |     141786 |           scipy.stats._distn_infrastructure
import time:       490 |        490 |               scipy.special.cython_special
import time:       381 |        870 |             scipy.stats._stats
import time:       624 |        624 |             scipy.stats._tukeylambda_stats
import time:      1942 |       1942 |             scipy.stats._ksstats
import time:       247 |        247 |               scipy.stats._boost.beta_ufunc
import time:       153 |        153 |               scipy.stats._boost.binom_ufunc
import time:       246 |        246 |               scipy.stats._boost.nbinom_ufunc
import time:       145 |        145 |               scipy.stats._boost.hypergeom_ufunc
import time:       153 |        153 |               scipy.stats._boost.ncf_ufunc
import time:       148 |        148 |               scipy.stats._boost.ncx2_ufunc
import time:       149 |        149 |               scipy.stats._boost.nct_ufunc
import time:       150 |        150 |               scipy.stats._boost.skewnorm_ufunc
import time:       144 |        144 |               scipy.stats._boost.invgauss_ufunc
import time:       438 |       1969 |             scipy.stats._boost
import time:     89652 |      95055 |           scipy.stats._continuous_distns
import time:       174 |        174 |                     scipy.interpolate._fitpack
import time:       170 |        170 |                     scipy.interpolate.dfitpack
import time:      2681 |       3024 |                   scipy.interpolate._fitpack_impl
import time:       231 |        231 |                     scipy.interpolate._bspl
import time:      4095 |       4325 |                   scipy.interpolate._bsplines
import time:       850 |       8198 |                 scipy.interpolate._fitpack_py
import time:      1682 |       1682 |                 scipy.interpolate._polyint
import time:       227 |        227 |                 scipy.interpolate._ppoly
import time:       397 |        397 |                 scipy.interpolate.interpnd
import time:      5248 |      15750 |               scipy.interpolate._interpolate
import time:      3758 |       3758 |               scipy.interpolate._fitpack2
import time:       902 |        902 |               scipy.interpolate._rbf
import time:       173 |        173 |                 scipy.interpolate._rbfinterp_pythran
import time:      1116 |       1289 |               scipy.interpolate._rbfinterp
import time:      2041 |       2041 |               scipy.interpolate._cubic
import time:       524 |        524 |               scipy.interpolate._ndgriddata
import time:       330 |        330 |               scipy.interpolate._pade
import time:       226 |        226 |                 scipy.interpolate._rgi_cython
import time:      1701 |       1926 |               scipy.interpolate._rgi
import time:       255 |        255 |               scipy.interpolate.fitpack
import time:       258 |        258 |               scipy.interpolate.fitpack2
import time:       247 |        247 |               scipy.interpolate.interpolate
import time:       233 |        233 |               scipy.interpolate.ndgriddata
import time:       229 |        229 |               scipy.interpolate.polyint
import time:       228 |        228 |               scipy.interpolate.rbf
import time:       495 |      28458 |             scipy.interpolate
import time:       217 |        217 |             scipy.stats._biasedurn
import time:     12486 |      41159 |           scipy.stats._discrete_distns
import time:       187 |        187 |             scipy.stats._levy_stable.levyst
import time:      5062 |       5248 |           scipy.stats._levy_stable
import time:       845 |        845 |           scipy.stats._entropy
import time:       313 |     284403 |         scipy.stats.distributions
import time:       708 |        708 |           scipy._lib._bunch
import time:       164 |        164 |             scipy.stats._stats_pythran
import time:      1407 |       1571 |           scipy.stats._stats_mstats_common
import time:      8008 |      10286 |         scipy.stats._mstats_basic
import time:       246 |        246 |           scipy.stats._common
import time:        70 |         70 |                 uarray
import time:       201 |        201 |                     scipy._lib._uarray._uarray
import time:      1360 |       1560 |                   scipy._lib._uarray._backend
import time:       237 |       1797 |                 scipy._lib._uarray
import time:       233 |       2099 |               scipy._lib.uarray
import time:      1461 |       3560 |             scipy.fft._basic
import time:       753 |        753 |             scipy.fft._realtransforms
import time:       670 |        670 |             scipy.fft._fftlog
import time:       301 |        301 |             scipy.fft._fftlog_multimethods
import time:       309 |        309 |                   scipy.fft._pocketfft.pypocketfft
import time:       817 |        817 |                   scipy.fft._pocketfft.helper
import time:      1239 |       2364 |                 scipy.fft._pocketfft.basic
import time:       511 |        511 |                 scipy.fft._pocketfft.realtransforms
import time:       244 |       3118 |               scipy.fft._pocketfft
import time:       242 |       3360 |             scipy.fft._helper
import time:       432 |        432 |             scipy.fft._backend
import time:       391 |       9464 |           scipy.fft
import time:      4521 |      14230 |         scipy.stats._hypotests
import time:       848 |        848 |                 pkgutil
import time:      9764 |      10611 |               pydoc
import time:      3356 |      13966 |             scipy._lib._docscrape
import time:      2167 |      16133 |           scipy.stats._axis_nan_policy
import time:      5177 |      21310 |         scipy.stats._resampling
import time:      1007 |       1007 |         scipy.stats._binomtest
import time:     25404 |     419605 |       scipy.stats._stats_py
import time:       645 |        645 |       scipy.stats._variation
import time:       166 |        166 |         scipy.stats._statlib
import time:      3214 |       3214 |         scipy.stats._fit
import time:       756 |        756 |           scipy.stats._relative_risk
import time:       622 |        622 |           scipy.stats._crosstab
import time:      1061 |       1061 |           scipy.stats._odds_ratio
import time:       802 |       3241 |         scipy.stats.contingency
import time:     10575 |      17195 |       scipy.stats._morestats
import time:       240 |        240 |           scipy.stats._sobol
import time:       202 |        202 |           scipy.stats._qmc_cy
import time:      5070 |       5511 |         scipy.stats._qmc
import time:      1632 |       7143 |       scipy.stats._multicomp
import time:      1833 |       1833 |       scipy.stats._binned_statistic
import time:       171 |        171 |         scipy.stats._mvn
import time:      1491 |       1661 |       scipy.stats._kde
import time:      1360 |       1360 |         scipy.stats._mstats_extras
import time:       224 |       1583 |       scipy.stats.mstats
import time:       235 |        235 |       scipy.stats.qmc
import time:      1278 |       1278 |         scipy.stats._covariance
import time:       276 |        276 |           scipy.stats._rcont.rcont
import time:       233 |        508 |         scipy.stats._rcont
import time:      1550 |       1550 |         scipy.stats._qmvnt
import time:     16134 |      19468 |       scipy.stats._multivariate
import time:       391 |        391 |       scipy.stats._rvs_sampling
import time:      1240 |       1240 |       scipy.stats._page_trend_test
import time:      2502 |       2502 |       scipy.stats._mannwhitneyu
import time:      1981 |       1981 |       scipy.stats._sensitivity_analysis
import time:      2013 |       2013 |       scipy.stats._survival
import time:       244 |        244 |       scipy.stats.biasedurn
import time:       258 |        258 |       scipy.stats.kde
import time:       290 |        290 |       scipy.stats.morestats
import time:       308 |        308 |       scipy.stats.mstats_basic
import time:       242 |        242 |       scipy.stats.mstats_extras
import time:       224 |        224 |       scipy.stats.mvn
import time:       223 |        223 |       scipy.stats.statlib
import time:       331 |        331 |       scipy.stats.stats
import time:       814 |     480818 |     scipy.stats
import time:      2399 |       2399 |       lmo.diagnostic
import time:       338 |        338 |         lmo._poly
import time:      1572 |       1572 |         lmo.special
import time:      4252 |       6161 |       lmo.theoretical
import time:      1440 |       9998 |     lmo.inference
import time:      3560 |     494376 |   lmo.contrib.scipy_stats
import time:       456 |        456 |     email.feedparser
import time:       247 |        703 |   email.parser
import time:     11381 |     911020 | lmo
jorenham commented 9 months ago

The only possible significant improvement that can be made, would be to stop calling contrib.install() in __init__.py, which is out of scope.