Spaces:
Running
Running
neon_arch
:zap: perf: several optimizations for improving the performance of the engine (#540)
991f3f5 unverified | //! Main module of the application | |
| //! | |
| //! This module contains the main function which handles the logging of the application to the | |
| //! stdout and handles the command line arguments provided and launches the `websurfx` server. | |
| use mimalloc::MiMalloc; | |
| use std::{net::TcpListener, sync::OnceLock}; | |
| use websurfx::{cache::cacher::create_cache, config::parser::Config, run}; | |
| /// A dhat heap memory profiler | |
| static ALLOC: dhat::Alloc = dhat::Alloc; | |
| static GLOBAL: MiMalloc = MiMalloc; | |
| /// A static constant for holding the parsed config. | |
| static CONFIG: OnceLock<Config> = OnceLock::new(); | |
| /// The function that launches the main server and registers all the routes of the website. | |
| /// | |
| /// # Error | |
| /// | |
| /// Returns an error if the port is being used by something else on the system and is not | |
| /// available for being used for other applications. | |
| async fn main() -> std::io::Result<()> { | |
| // A dhat heap profiler initialization. | |
| let _profiler = dhat::Profiler::new_heap(); | |
| // Initialize the parsed config globally. | |
| let config = CONFIG.get_or_init(|| Config::parse(false).unwrap()); | |
| let cache = create_cache(config).await; | |
| log::info!( | |
| "started server on port {} and IP {}", | |
| config.port, | |
| config.binding_ip | |
| ); | |
| log::info!( | |
| "Open http://{}:{}/ in your browser", | |
| config.binding_ip, | |
| config.port, | |
| ); | |
| let listener = TcpListener::bind((config.binding_ip.as_str(), config.port))?; | |
| run(listener, config, cache)?.await | |
| } | |