support loading libtcmalloc_minimal.dll for windows

This commit is contained in:
Won-Kyu Park 2024-10-26 23:32:29 +09:00
parent 5865da28d1
commit 7a917228d6
No known key found for this signature in database
GPG Key ID: 53AA79C8C9535D15
2 changed files with 22 additions and 0 deletions

View File

@ -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

View File

@ -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()