diff --git a/modules/initialize_util.py b/modules/initialize_util.py index 79a72cb3a..c89f92970 100644 --- a/modules/initialize_util.py +++ b/modules/initialize_util.py @@ -213,3 +213,21 @@ def configure_cors_middleware(app): cors_options["allow_origin_regex"] = cmd_opts.cors_allow_origins_regex app.add_middleware(CORSMiddleware, **cors_options) + +def preload_malloc(): + if os.name == 'nt': + import ctypes + # under windows we can't use LD_PRELOAD method but still we can load the libtcmalloc_minimal.dll using ctypes.cdll + # https://github.com/gperftools/gperftools/ (only gperftools's tcmalloc works with windows) + # build libtcmalloc_minimal.dll patch module and copy it into the top dir of webui + + dir_path = os.path.dirname(__file__) + tcmallocdll = os.path.join(dir_path, "..", "libtcmalloc_minimal.dll") + + if os.path.exists(tcmallocdll): + # load libtcmalloc_minimal.dll if it exists. + _tcmalloc_dll = ctypes.cdll.LoadLibrary(tcmallocdll) + + return 'tcmalloc' + + return None diff --git a/webui.py b/webui.py index 421e3b833..71ea713fb 100644 --- a/webui.py +++ b/webui.py @@ -10,6 +10,10 @@ from modules import initialize startup_timer = timer.startup_timer startup_timer.record("launcher") +malloc = initialize_util.preload_malloc() +if malloc is not None: + startup_timer.record(f"{malloc}") + initialize.imports() initialize.check_versions()