diff --git a/Cargo.toml b/Cargo.toml index ec08c0824..ff79d4bf0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,7 @@ indexmap = "2.0" rayon = { version = "1.7", optional = true } itertools = "0.12" typenum = "1.16" +mimalloc = { version = "0.1", default-features = false } [dependencies.pyo3] version = "0.20" @@ -53,6 +54,7 @@ criterion = "0.5" [profile.release-lto] inherits = "release" lto = true +codegen-units = 1 [features] default = [] diff --git a/benches/dual_numbers.rs b/benches/dual_numbers.rs index b29d5687e..fe9fd3ee0 100644 --- a/benches/dual_numbers.rs +++ b/benches/dual_numbers.rs @@ -132,5 +132,25 @@ fn methane_co2_pcsaft(c: &mut Criterion) { bench_dual_numbers(c, "dual_numbers_pcsaft_methane_co2", state); } -criterion_group!(bench, pcsaft, methane_co2_pcsaft); +fn co2_pcsaft(c: &mut Criterion) { + let parameters = PcSaftParameters::from_json( + vec!["carbon dioxide"], + "./parameters/pcsaft/gross2005_fit.json", + None, + IdentifierOption::Name, + ) + .unwrap(); + let eos = Arc::new(PcSaft::new(Arc::new(parameters))); + + // 230 K, 50 bar + let temperature = 230.0 * KELVIN; + let density = 24.16896 * KILO * MOL / METER.powi::(); + let volume = 10.0 * MOL / density; + let x = arr1(&[1.0]); + let moles = &x * 10.0 * MOL; + let state = State::new_nvt(&eos, temperature, volume, &moles).unwrap(); + bench_dual_numbers(c, "dual_numbers_pcsaft_co2", state); +} + +criterion_group!(bench, co2_pcsaft); //pcsaft, methane_co2_pcsaft); criterion_main!(bench); diff --git a/src/lib.rs b/src/lib.rs index cbb1edbe9..bc9946f39 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,6 +35,11 @@ #![warn(clippy::all)] #![allow(clippy::too_many_arguments)] +use mimalloc::MiMalloc; + +#[global_allocator] +static GLOBAL: MiMalloc = MiMalloc; + #[cfg(feature = "dft")] mod functional; #[cfg(feature = "dft")] @@ -76,3 +81,4 @@ pub mod dft { //! Re-export of all functionalities in [feos_dft]. pub use feos_dft::*; } +