diff --git a/.gitignore b/.gitignore index 9cef7ee..6c315c6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,8 @@ Cargo.lock # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ -out/ \ No newline at end of file +out/ + +# Flamegraph +*.old +*.data \ No newline at end of file diff --git a/flamegraph.svg b/flamegraph.svg new file mode 100644 index 0000000..1b92faf --- /dev/null +++ b/flamegraph.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch <alloc::collections::btree::map::BTreeMap<alloc::string::String,f64> as fasteval::evalns::EvalNamespace>::lookup (3,948,583 samples, 0.02%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (4,345,813 samples, 0.03%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (8,336,504 samples, 0.05%)<bliplib::compiler::Expression as core::str::traits::FromStr>::from_str (8,172,369 samples, 0.05%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (8,728,623 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (30,221,568 samples, 0.19%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (21,567,570 samples, 0.13%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (12,978,675 samples, 0.08%)[libc.so.6] (4,336,871 samples, 0.03%)_int_free_maybe_consolidate.part.0 (4,336,871 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (21,537,098 samples, 0.13%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (8,666,334 samples, 0.05%)<fasteval::parser::Expression as fasteval::compiler::Compiler>::compile (4,341,872 samples, 0.03%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (4,358,465 samples, 0.03%)<hashbrown::map::Iter<K,V> as core::iter::traits::iterator::Iterator>::fold (4,341,140 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,672,883 samples, 0.05%)[unknown] (12,992,164 samples, 0.08%)fasteval::compiler::ExprSlice::from_expr (4,319,281 samples, 0.03%)__memmove_avx_unaligned_erms (4,361,439 samples, 0.03%)_int_free_chunk (8,657,545 samples, 0.05%)_int_malloc (8,652,635 samples, 0.05%)_int_realloc (4,330,325 samples, 0.03%)alloc::collections::btree::map::BTreeMap<K,V,A>::insert (8,642,661 samples, 0.05%)alloc::collections::btree::map::IntoIter<K,V,A>::dying_next (8,579,321 samples, 0.05%)bliplib::compiler::Context::current_length (4,357,069 samples, 0.03%)bliplib::compiler::Context::tick (8,043,680 samples, 0.05%)cfree@GLIBC_2.2.5 (13,500,485 samples, 0.08%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (4,305,860 samples, 0.03%)core::ptr::drop_in_place<fasteval::parser::Value> (4,350,452 samples, 0.03%)core::slice::sort::shared::smallsort::insertion_sort_shift_left (4,335,156 samples, 0.03%)fasteval::compiler::ExprSlice::from_expr (4,359,723 samples, 0.03%)fasteval::compiler::ExprSlice::split (8,684,439 samples, 0.05%)fasteval::compiler::compile_add (4,335,303 samples, 0.03%)fasteval::compiler::compile_mul (4,362,968 samples, 0.03%)fasteval::parser::Parser::read_callable (8,539,960 samples, 0.05%)fasteval::parser::Parser::read_expression (4,348,335 samples, 0.03%)fasteval::parser::Parser::read_value (21,623,788 samples, 0.13%)log::logger::NOP (4,345,815 samples, 0.03%)malloc (4,345,815 samples, 0.03%)malloc (34,286,854 samples, 0.21%)[unknown] (362,222,081 samples, 2.25%)[..unlink_chunk.isra.0 (4,256,602 samples, 0.03%)__memcmp_avx2_movbe (8,633,021 samples, 0.05%)__memmove_avx_unaligned_erms (4,323,310 samples, 0.03%)__rustc::__rdl_dealloc (4,278,079 samples, 0.03%)__sin_fma (4,293,930 samples, 0.03%)_int_free_chunk (17,317,174 samples, 0.11%)_int_free_create_chunk (17,290,659 samples, 0.11%)_int_free_merge_chunk (4,337,021 samples, 0.03%)_int_malloc (8,641,711 samples, 0.05%)<alloc::collections::btree::map::BTreeMap<alloc::string::String,f64> as fasteval::evalns::EvalNamespace>::lookup (8,680,646 samples, 0.05%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (34,648,629 samples, 0.22%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (34,648,629 samples, 0.22%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (30,346,528 samples, 0.19%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (21,665,882 samples, 0.13%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,309,730 samples, 0.11%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,309,730 samples, 0.11%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (13,069,578 samples, 0.08%)<alloc::collections::btree::map::BTreeMap<alloc::string::String,f64> as fasteval::evalns::EvalNamespace>::lookup (8,702,678 samples, 0.05%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (60,598,609 samples, 0.38%)__sin_fma (21,656,497 samples, 0.13%)__rustc::__rdl_alloc (4,266,046 samples, 0.03%)__memcmp_avx2_movbe (12,943,429 samples, 0.08%)__rustc::__rust_dealloc (4,293,890 samples, 0.03%)<hashbrown::map::Iter<K,V> as core::iter::traits::iterator::Iterator>::fold (77,650,104 samples, 0.48%)alloc::collections::btree::map::BTreeMap<K,V,A>::insert (38,843,532 samples, 0.24%)cfree@GLIBC_2.2.5 (17,277,101 samples, 0.11%)__rustc::__rdl_alloc (4,350,771 samples, 0.03%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (82,185,862 samples, 0.51%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (60,590,177 samples, 0.38%)malloc (47,591,681 samples, 0.30%)_int_malloc (17,358,746 samples, 0.11%)unlink_chunk.isra.0 (4,326,881 samples, 0.03%)alloc::collections::btree::append::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::bulk_push (17,307,588 samples, 0.11%)__memcmp_avx2_movbe (4,301,192 samples, 0.03%)<alloc::collections::btree::map::BTreeMap<K,V> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter (108,137,112 samples, 0.67%)core::slice::sort::shared::smallsort::insertion_sort_shift_left (8,643,662 samples, 0.05%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (4,345,855 samples, 0.03%)malloc (4,345,855 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,640,919 samples, 0.05%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (8,640,919 samples, 0.05%)<alloc::string::String as core::clone::Clone>::clone (4,337,550 samples, 0.03%)fasteval::compiler::ExprSlice::from_expr (4,345,093 samples, 0.03%)__rustc::__rust_alloc (4,349,442 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (56,185,972 samples, 0.35%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (56,185,972 samples, 0.35%)fasteval::slab::CompileSlab::push_instr (43,199,960 samples, 0.27%)alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle (43,199,960 samples, 0.27%)alloc::raw_vec::finish_grow (43,199,960 samples, 0.27%)malloc (38,850,518 samples, 0.24%)_int_malloc (25,953,288 samples, 0.16%)unlink_chunk.isra.0 (4,334,098 samples, 0.03%)cfree@GLIBC_2.2.5 (4,338,630 samples, 0.03%)fasteval::compiler::compile_add (4,238,384 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (90,314,479 samples, 0.56%)fasteval::slab::CompileSlab::push_instr (4,271,824 samples, 0.03%)__rustc::__rdl_alloc (4,323,863 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (107,223,599 samples, 0.67%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (102,961,042 samples, 0.64%)fasteval::compiler::ExprSlice::from_expr (12,646,563 samples, 0.08%)malloc (8,322,700 samples, 0.05%)_int_malloc (8,322,700 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,676,970 samples, 0.05%)cfree@GLIBC_2.2.5 (8,557,281 samples, 0.05%)fasteval::compiler::ExprSlice::split (4,289,840 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (42,597,615 samples, 0.26%)fasteval::compiler::compile_mul (3,867,330 samples, 0.02%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (46,958,385 samples, 0.29%)cfree@GLIBC_2.2.5 (4,360,770 samples, 0.03%)__rustc::__rust_dealloc (4,349,959 samples, 0.03%)cfree@GLIBC_2.2.5 (25,916,524 samples, 0.16%)_int_free_chunk (17,361,498 samples, 0.11%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (218,646,490 samples, 1.36%)malloc (4,359,027 samples, 0.03%)cfree@GLIBC_2.2.5 (26,059,453 samples, 0.16%)_int_free_chunk (21,722,016 samples, 0.14%)fasteval::compiler::ExprSlice::split (3,991,150 samples, 0.02%)cfree@GLIBC_2.2.5 (12,881,816 samples, 0.08%)_int_free_chunk (12,881,816 samples, 0.08%)fasteval::compiler::compile_mul (25,683,614 samples, 0.16%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (4,224,641 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (308,504,168 samples, 1.92%)<..fasteval::compiler::push_mul_leaves (34,123,461 samples, 0.21%)alloc::raw_vec::RawVec<T,A>::grow_one (29,804,454 samples, 0.19%)alloc::raw_vec::finish_grow (29,804,454 samples, 0.19%)realloc (29,804,454 samples, 0.19%)_int_realloc (16,867,156 samples, 0.10%)_int_malloc (8,594,217 samples, 0.05%)__rustc::__rust_dealloc (4,315,265 samples, 0.03%)<fasteval::parser::Expression as fasteval::compiler::Compiler>::compile (321,511,390 samples, 2.00%)<..fasteval::compiler::ExprSlice::from_expr (8,691,957 samples, 0.05%)malloc (8,691,957 samples, 0.05%)core::str::<impl str>::trim_end_matches (3,112,271 samples, 0.02%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (8,652,101 samples, 0.05%)__rustc::__rust_dealloc (4,300,831 samples, 0.03%)fasteval::parser::Parser::read_value (30,097,789 samples, 0.19%)fasteval::parser::Parser::read_callable (25,814,224 samples, 0.16%)malloc (25,814,224 samples, 0.16%)_int_malloc (21,528,253 samples, 0.13%)fasteval::parser::Parser::read_value (99,333,681 samples, 0.62%)fasteval::parser::Parser::read_callable (77,676,790 samples, 0.48%)fasteval::parser::Parser::read_expression (64,677,773 samples, 0.40%)malloc (30,244,087 samples, 0.19%)_int_malloc (12,964,704 samples, 0.08%)fasteval::parser::Parser::read_expression (163,843,820 samples, 1.02%)fasteval::parser::Parser::read_value (146,534,529 samples, 0.91%)fasteval::parser::Parser::read_expression (129,229,525 samples, 0.80%)malloc (8,665,205 samples, 0.05%)malloc_consolidate (60,269,799 samples, 0.37%)<bliplib::compiler::Expression as core::str::traits::FromStr>::from_str (615,047,604 samples, 3.82%)<bli..malloc (122,285,279 samples, 0.76%)_int_malloc (109,424,713 samples, 0.68%)unlink_chunk.isra.0 (8,652,895 samples, 0.05%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (640,517,293 samples, 3.98%)<all..__memmove_avx_unaligned_erms (21,209,992 samples, 0.13%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (4,361,174 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,633,330 samples, 0.05%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (4,303,460 samples, 0.03%)__rustc::__rdl_alloc (4,351,978 samples, 0.03%)__rustc::__rdl_dealloc (4,342,750 samples, 0.03%)cfree@GLIBC_2.2.5 (4,276,146 samples, 0.03%)_int_free_chunk (4,276,146 samples, 0.03%)__rustc::__rust_alloc (4,279,010 samples, 0.03%)fasteval::compiler::ExprSlice::split (30,099,987 samples, 0.19%)malloc (25,820,977 samples, 0.16%)_int_malloc (21,546,434 samples, 0.13%)__rustc::__rdl_dealloc (4,343,389 samples, 0.03%)fasteval::compiler::compile_add (25,829,694 samples, 0.16%)fasteval::slab::CompileSlab::push_instr (17,280,975 samples, 0.11%)alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle (17,280,975 samples, 0.11%)alloc::raw_vec::finish_grow (8,674,456 samples, 0.05%)malloc (8,674,456 samples, 0.05%)_int_malloc (8,674,456 samples, 0.05%)malloc_consolidate (4,342,349 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (94,804,262 samples, 0.59%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (90,443,088 samples, 0.56%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (90,443,088 samples, 0.56%)malloc (4,325,639 samples, 0.03%)__rustc::__rust_alloc (4,282,832 samples, 0.03%)fasteval::compiler::ExprSlice::split (12,869,482 samples, 0.08%)__rustc::__rdl_alloc (4,298,327 samples, 0.03%)fasteval::compiler::compile_mul (17,311,375 samples, 0.11%)cfree@GLIBC_2.2.5 (4,288,321 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (133,349,198 samples, 0.83%)fasteval::slab::CompileSlab::push_instr (4,081,247 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (137,652,650 samples, 0.86%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (137,652,650 samples, 0.86%)fasteval::compiler::ExprSlice::from_expr (4,303,452 samples, 0.03%)cfree@GLIBC_2.2.5 (4,289,646 samples, 0.03%)fasteval::compiler::ExprSlice::split (4,344,115 samples, 0.03%)malloc (4,344,115 samples, 0.03%)cfree@GLIBC_2.2.5 (4,271,754 samples, 0.03%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (4,297,250 samples, 0.03%)fasteval::compiler::compile_mul (25,786,211 samples, 0.16%)fasteval::slab::CompileSlab::push_instr (4,302,922 samples, 0.03%)fasteval::compiler::push_mul_leaves (6,926,638 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_one (6,926,638 samples, 0.04%)alloc::raw_vec::finish_grow (6,926,638 samples, 0.04%)realloc (6,926,638 samples, 0.04%)_int_realloc (6,926,638 samples, 0.04%)_int_malloc (6,926,638 samples, 0.04%)unlink_chunk.isra.0 (4,351,428 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (191,886,065 samples, 1.19%)malloc (4,229,980 samples, 0.03%)cfree@GLIBC_2.2.5 (4,347,166 samples, 0.03%)_int_free_chunk (4,347,166 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (238,845,684 samples, 1.48%)fasteval::compiler::ExprSlice::split (25,706,831 samples, 0.16%)malloc (21,377,049 samples, 0.13%)_int_malloc (17,280,377 samples, 0.11%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (256,111,974 samples, 1.59%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (251,823,239 samples, 1.57%)cfree@GLIBC_2.2.5 (4,350,202 samples, 0.03%)_int_free_chunk (4,350,202 samples, 0.03%)cfree@GLIBC_2.2.5 (17,379,131 samples, 0.11%)_int_free_chunk (8,706,161 samples, 0.05%)fasteval::compiler::compile_mul (25,839,870 samples, 0.16%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (8,460,739 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (294,815,622 samples, 1.83%)<..malloc (4,258,584 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (312,093,995 samples, 1.94%)<..<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (303,411,193 samples, 1.89%)<..fasteval::compiler::ExprSlice::from_expr (4,266,002 samples, 0.03%)malloc (4,266,002 samples, 0.03%)cfree@GLIBC_2.2.5 (4,348,815 samples, 0.03%)<fasteval::parser::Expression as fasteval::compiler::Compiler>::compile (325,126,859 samples, 2.02%)<..fasteval::compiler::ExprSlice::from_expr (4,320,911 samples, 0.03%)malloc (4,320,911 samples, 0.03%)__rustc::__rdl_alloc (8,720,215 samples, 0.05%)core::str::<impl str>::trim_start_matches (4,304,797 samples, 0.03%)cfree@GLIBC_2.2.5 (8,523,120 samples, 0.05%)__rustc::__rdl_alloc (4,297,192 samples, 0.03%)fasteval::parser::Parser::read_callable (8,674,101 samples, 0.05%)malloc (4,312,783 samples, 0.03%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (4,341,236 samples, 0.03%)fasteval::parser::Parser::read_callable (8,661,670 samples, 0.05%)malloc (4,337,433 samples, 0.03%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (12,845,352 samples, 0.08%)core::num::dec2flt::parse::parse_number (8,520,918 samples, 0.05%)fasteval::parser::Parser::read_value (21,511,373 samples, 0.13%)fasteval::parser::Parser::read_callable (4,344,749 samples, 0.03%)fasteval::parser::Parser::read_value (142,427,825 samples, 0.89%)fasteval::parser::Parser::read_expression (116,467,554 samples, 0.72%)fasteval::parser::Parser::read_value (90,587,432 samples, 0.56%)fasteval::parser::Parser::read_expression (64,628,367 samples, 0.40%)fasteval::parser::Parser::read_value (47,383,205 samples, 0.29%)fasteval::parser::Parser::read_expression (25,842,012 samples, 0.16%)malloc (4,330,639 samples, 0.03%)fasteval::parser::Parser::read_expression (215,628,769 samples, 1.34%)fasteval::parser::Parser::read_value (207,022,979 samples, 1.29%)fasteval::parser::Parser::read_callable (207,022,979 samples, 1.29%)fasteval::parser::Parser::read_expression (194,202,575 samples, 1.21%)malloc (4,358,289 samples, 0.03%)<bliplib::compiler::Expression as core::str::traits::FromStr>::from_str (663,451,554 samples, 4.12%)<bli..malloc (88,084,024 samples, 0.55%)_int_malloc (30,328,180 samples, 0.19%)malloc_consolidate (8,713,591 samples, 0.05%)__memmove_avx_unaligned_erms (5,941,772,780 samples, 36.93%)__memmove_avx_unaligned_ermsmalloc_consolidate (21,365,719 samples, 0.13%)<bliplib::compiler::Context as core::clone::Clone>::clone (7,357,316,014 samples, 45.73%)<bliplib::compiler::Context as core::clone::Clone>::clonemalloc (98,626,989 samples, 0.61%)_int_malloc (59,985,575 samples, 0.37%)unlink_chunk.isra.0 (4,273,381 samples, 0.03%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (21,508,365 samples, 0.13%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,153,359 samples, 0.11%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,153,359 samples, 0.11%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,153,359 samples, 0.11%)<alloc::collections::btree::map::BTreeMap<alloc::string::String,f64> as fasteval::evalns::EvalNamespace>::lookup (12,839,466 samples, 0.08%)__memcmp_avx2_movbe (4,301,596 samples, 0.03%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (38,733,470 samples, 0.24%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (34,417,392 samples, 0.21%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (30,096,469 samples, 0.19%)pow@@GLIBC_2.29 (4,299,657 samples, 0.03%)__ieee754_pow_fma (4,299,657 samples, 0.03%)__memmove_avx_unaligned_erms (8,669,124 samples, 0.05%)alloc::collections::btree::map::IntoIter<K,V,A>::dying_next (4,213,562 samples, 0.03%)cfree@GLIBC_2.2.5 (17,224,809 samples, 0.11%)_int_free_maybe_consolidate.part.0 (21,363,354 samples, 0.13%)malloc_consolidate (21,363,354 samples, 0.13%)cfree@GLIBC_2.2.5 (34,339,310 samples, 0.21%)_int_free_chunk (34,339,310 samples, 0.21%)_int_free_merge_chunk (4,289,890 samples, 0.03%)_int_free_create_chunk (4,289,890 samples, 0.03%)unlink_chunk.isra.0 (4,289,890 samples, 0.03%)core::ptr::drop_in_place<(char,bliplib::compiler::Expression)> (4,347,261 samples, 0.03%)cfree@GLIBC_2.2.5 (4,347,261 samples, 0.03%)_int_free_chunk (4,347,261 samples, 0.03%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (13,015,736 samples, 0.08%)cfree@GLIBC_2.2.5 (13,015,736 samples, 0.08%)_int_free_chunk (13,015,736 samples, 0.08%)core::ptr::drop_in_place<fasteval::slab::CompileSlab> (17,337,212 samples, 0.11%)cfree@GLIBC_2.2.5 (4,321,476 samples, 0.03%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (4,305,581 samples, 0.03%)cfree@GLIBC_2.2.5 (51,181,522 samples, 0.32%)_int_free_chunk (43,130,930 samples, 0.27%)_int_free_merge_chunk (12,940,146 samples, 0.08%)_int_free_create_chunk (4,367,356 samples, 0.03%)cfree@GLIBC_2.2.5 (12,919,851 samples, 0.08%)core::ptr::drop_in_place<fasteval::parser::Expression> (25,855,339 samples, 0.16%)core::ptr::drop_in_place<fasteval::parser::Value> (8,585,628 samples, 0.05%)bliplib::compiler::Context::current_length (7,719,306,430 samples, 47.98%)bliplib::compiler::Context::current_lengthcore::ptr::drop_in_place<bliplib::compiler::Context> (141,687,744 samples, 0.88%)core::ptr::drop_in_place<fasteval::slab::Slab> (85,663,961 samples, 0.53%)core::ptr::drop_in_place<fasteval::parser::Value> (4,321,519 samples, 0.03%)__memmove_avx_unaligned_erms (4,337,309 samples, 0.03%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (72,425,012 samples, 0.45%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (68,098,703 samples, 0.42%)malloc (55,832,070 samples, 0.35%)_int_malloc (29,926,066 samples, 0.19%)unlink_chunk.isra.0 (8,567,792 samples, 0.05%)alloc::collections::btree::append::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::bulk_push (17,037,588 samples, 0.11%)core::slice::sort::shared::smallsort::insertion_sort_shift_left (4,349,742 samples, 0.03%)<alloc::collections::btree::map::BTreeMap<K,V> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter (98,160,405 samples, 0.61%)malloc (4,348,063 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,352,205 samples, 0.05%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (8,352,205 samples, 0.05%)__rustc::__rdl_alloc (4,350,526 samples, 0.03%)fasteval::compiler::ExprSlice::from_expr (8,652,310 samples, 0.05%)malloc (4,301,784 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (25,632,365 samples, 0.16%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (25,632,365 samples, 0.16%)fasteval::slab::CompileSlab::push_instr (8,627,850 samples, 0.05%)alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle (8,627,850 samples, 0.05%)alloc::raw_vec::finish_grow (8,627,850 samples, 0.05%)malloc (8,627,850 samples, 0.05%)_int_malloc (4,324,654 samples, 0.03%)__rustc::__rdl_dealloc (4,307,295 samples, 0.03%)cfree@GLIBC_2.2.5 (4,302,209 samples, 0.03%)fasteval::compiler::ExprSlice::split (4,336,706 samples, 0.03%)fasteval::compiler::compile_add (4,345,474 samples, 0.03%)cfree@GLIBC_2.2.5 (4,345,474 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (77,454,232 samples, 0.48%)malloc (8,628,071 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (85,983,179 samples, 0.53%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (85,983,179 samples, 0.53%)fasteval::compiler::ExprSlice::from_expr (8,528,947 samples, 0.05%)malloc (8,528,947 samples, 0.05%)_int_malloc (8,528,947 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (8,628,401 samples, 0.05%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (8,628,401 samples, 0.05%)<alloc::string::String as core::clone::Clone>::clone (4,345,934 samples, 0.03%)__rustc::__rust_alloc (4,345,934 samples, 0.03%)__rustc::__rdl_alloc (4,336,892 samples, 0.03%)__rustc::__rust_alloc (4,292,587 samples, 0.03%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (30,127,867 samples, 0.19%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (30,127,867 samples, 0.19%)fasteval::compiler::ExprSlice::split (12,912,248 samples, 0.08%)malloc (4,282,769 samples, 0.03%)cfree@GLIBC_2.2.5 (21,463,968 samples, 0.13%)_int_free_chunk (21,463,968 samples, 0.13%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (159,204,376 samples, 0.99%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (4,326,046 samples, 0.03%)__rustc::__rdl_alloc (3,918,140 samples, 0.02%)cfree@GLIBC_2.2.5 (8,628,611 samples, 0.05%)_int_free_chunk (4,283,160 samples, 0.03%)fasteval::compiler::ExprSlice::split (4,314,403 samples, 0.03%)__rustc::__rdl_alloc (4,314,403 samples, 0.03%)fasteval::compiler::compile_mul (8,599,444 samples, 0.05%)cfree@GLIBC_2.2.5 (4,322,718 samples, 0.03%)_int_free_chunk (4,322,718 samples, 0.03%)__memmove_avx_unaligned_erms (12,881,283 samples, 0.08%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (214,859,168 samples, 1.34%)fasteval::compiler::push_mul_leaves (25,875,936 samples, 0.16%)alloc::raw_vec::RawVec<T,A>::grow_one (25,875,936 samples, 0.16%)alloc::raw_vec::finish_grow (25,875,936 samples, 0.16%)realloc (25,875,936 samples, 0.16%)_int_realloc (25,875,936 samples, 0.16%)_int_malloc (8,633,982 samples, 0.05%)unlink_chunk.isra.0 (4,324,626 samples, 0.03%)cfree@GLIBC_2.2.5 (12,381,133 samples, 0.08%)_int_free_chunk (12,381,133 samples, 0.08%)<fasteval::parser::Expression as fasteval::compiler::Compiler>::compile (231,494,846 samples, 1.44%)fasteval::compiler::ExprSlice::from_expr (4,254,545 samples, 0.03%)malloc (4,254,545 samples, 0.03%)__memmove_avx_unaligned_erms (4,177,212 samples, 0.03%)__rustc::__rdl_alloc (8,556,593 samples, 0.05%)__rustc::__rust_alloc (4,282,228 samples, 0.03%)core::str::<impl str>::trim_start_matches (4,353,798 samples, 0.03%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (4,350,628 samples, 0.03%)core::num::dec2flt::parse::parse_number (4,350,628 samples, 0.03%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (17,229,702 samples, 0.11%)core::num::dec2flt::parse::parse_number (8,619,244 samples, 0.05%)__memmove_avx_unaligned_erms (4,267,292 samples, 0.03%)__rustc::__rust_alloc (4,345,389 samples, 0.03%)fasteval::parser::Parser::read_value (3,947,967 samples, 0.02%)fasteval::parser::Parser::read_callable (3,947,967 samples, 0.02%)malloc (3,947,967 samples, 0.02%)_int_malloc (3,947,967 samples, 0.02%)fasteval::parser::Parser::read_value (78,260,904 samples, 0.49%)fasteval::parser::Parser::read_callable (35,531,745 samples, 0.22%)fasteval::parser::Parser::read_expression (22,614,050 samples, 0.14%)malloc (9,961,424 samples, 0.06%)_int_malloc (4,275,246 samples, 0.03%)fasteval::parser::Parser::read_value (133,514,875 samples, 0.83%)fasteval::parser::Parser::read_expression (107,873,899 samples, 0.67%)malloc (8,294,177 samples, 0.05%)_int_malloc (3,933,409 samples, 0.02%)fasteval::parser::Parser::read_expression (176,191,987 samples, 1.10%)malloc (4,347,612 samples, 0.03%)malloc_consolidate (51,642,787 samples, 0.32%)<bliplib::compiler::Expression as core::str::traits::FromStr>::from_str (532,614,617 samples, 3.31%)<bl..malloc (103,557,953 samples, 0.64%)_int_malloc (94,916,542 samples, 0.59%)unlink_chunk.isra.0 (8,679,826 samples, 0.05%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (541,274,484 samples, 3.36%)<al..__memmove_avx_unaligned_erms (4,304,269 samples, 0.03%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (4,342,707 samples, 0.03%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (4,278,734 samples, 0.03%)<alloc::string::String as core::clone::Clone>::clone (4,278,734 samples, 0.03%)__rustc::__rust_alloc (4,278,734 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (30,212,359 samples, 0.19%)<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (25,856,367 samples, 0.16%)<alloc::string::String as core::clone::Clone>::clone (12,905,052 samples, 0.08%)__rustc::__rdl_dealloc (4,308,029 samples, 0.03%)cfree@GLIBC_2.2.5 (12,741,161 samples, 0.08%)fasteval::compiler::ExprSlice::split (17,239,004 samples, 0.11%)malloc (17,239,004 samples, 0.11%)_int_malloc (8,684,162 samples, 0.05%)__rustc::__rust_dealloc (4,363,327 samples, 0.03%)cfree@GLIBC_2.2.5 (4,255,517 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (86,063,418 samples, 0.53%)fasteval::compiler::compile_add (17,261,446 samples, 0.11%)fasteval::slab::CompileSlab::push_instr (4,281,555 samples, 0.03%)alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle (4,281,555 samples, 0.03%)alloc::raw_vec::finish_grow (4,281,555 samples, 0.03%)malloc (4,281,555 samples, 0.03%)_int_malloc (4,281,555 samples, 0.03%)malloc_consolidate (4,281,555 samples, 0.03%)cfree@GLIBC_2.2.5 (4,350,714 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (111,118,372 samples, 0.69%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (106,839,638 samples, 0.66%)fasteval::compiler::ExprSlice::from_expr (16,425,506 samples, 0.10%)malloc (16,425,506 samples, 0.10%)_int_malloc (4,339,615 samples, 0.03%)cfree@GLIBC_2.2.5 (8,684,035 samples, 0.05%)__rustc::__rust_alloc (8,540,638 samples, 0.05%)fasteval::compiler::ExprSlice::split (21,221,535 samples, 0.13%)malloc (12,680,897 samples, 0.08%)fasteval::compiler::compile_mul (4,288,246 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (158,352,788 samples, 0.98%)malloc (8,695,276 samples, 0.05%)cfree@GLIBC_2.2.5 (4,240,198 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (166,882,829 samples, 1.04%)<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (166,882,829 samples, 1.04%)fasteval::compiler::ExprSlice::from_expr (4,289,843 samples, 0.03%)malloc (4,289,843 samples, 0.03%)__rustc::__rust_alloc (4,287,651 samples, 0.03%)cfree@GLIBC_2.2.5 (4,289,082 samples, 0.03%)fasteval::compiler::ExprSlice::split (4,364,467 samples, 0.03%)malloc (4,364,467 samples, 0.03%)fasteval::compiler::compile_mul (4,357,782 samples, 0.03%)cfree@GLIBC_2.2.5 (4,357,782 samples, 0.03%)_int_free_chunk (4,357,782 samples, 0.03%)__rustc::__rdl_realloc (4,353,411 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (222,679,601 samples, 1.38%)fasteval::compiler::push_mul_leaves (38,497,790 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::grow_one (34,200,655 samples, 0.21%)alloc::raw_vec::finish_grow (29,886,852 samples, 0.19%)realloc (25,533,441 samples, 0.16%)_int_realloc (17,087,989 samples, 0.11%)_int_malloc (12,749,273 samples, 0.08%)cfree@GLIBC_2.2.5 (17,329,018 samples, 0.11%)_int_free_chunk (13,025,969 samples, 0.08%)fasteval::compiler::ExprSlice::split (25,952,605 samples, 0.16%)malloc (21,600,332 samples, 0.13%)_int_malloc (4,353,710 samples, 0.03%)cfree@GLIBC_2.2.5 (4,275,916 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (288,518,790 samples, 1.79%)<..<fasteval::parser::UnaryOp as fasteval::compiler::Compiler>::compile (279,878,185 samples, 1.74%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (279,878,185 samples, 1.74%)fasteval::compiler::compile_add (9,594,681 samples, 0.06%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (4,370,690 samples, 0.03%)cfree@GLIBC_2.2.5 (8,521,735 samples, 0.05%)_int_free_chunk (4,251,109 samples, 0.03%)fasteval::compiler::ExprSlice::split (4,324,552 samples, 0.03%)malloc (4,324,552 samples, 0.03%)cfree@GLIBC_2.2.5 (17,271,006 samples, 0.11%)_int_free_chunk (8,698,535 samples, 0.05%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (348,048,326 samples, 2.16%)<..fasteval::compiler::compile_mul (25,648,050 samples, 0.16%)fasteval::slab::CompileSlab::push_instr (4,312,503 samples, 0.03%)<fasteval::compiler::ExprSlice as fasteval::compiler::Compiler>::compile (365,284,825 samples, 2.27%)<..<fasteval::parser::StdFunc as fasteval::compiler::Compiler>::compile (365,284,825 samples, 2.27%)<..cfree@GLIBC_2.2.5 (17,236,499 samples, 0.11%)_int_free_chunk (4,340,155 samples, 0.03%)cfree@GLIBC_2.2.5 (8,722,783 samples, 0.05%)_int_free_chunk (4,368,360 samples, 0.03%)<fasteval::parser::Expression as fasteval::compiler::Compiler>::compile (382,636,996 samples, 2.38%)<f..fasteval::compiler::ExprSlice::from_expr (4,358,402 samples, 0.03%)malloc (4,358,402 samples, 0.03%)__memmove_avx_unaligned_erms (4,332,699 samples, 0.03%)core::str::<impl str>::trim_start_matches (4,292,970 samples, 0.03%)__rustc::__rdl_alloc (4,367,721 samples, 0.03%)__memmove_avx_unaligned_erms (4,332,098 samples, 0.03%)__rustc::__rust_dealloc (4,333,584 samples, 0.03%)cfree@GLIBC_2.2.5 (4,352,504 samples, 0.03%)__rustc::__rust_alloc (4,322,546 samples, 0.03%)cfree@GLIBC_2.2.5 (4,250,354 samples, 0.03%)fasteval::parser::Parser::read_callable (12,893,738 samples, 0.08%)malloc (4,320,838 samples, 0.03%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (12,976,603 samples, 0.08%)core::num::dec2flt::parse::parse_number (4,316,527 samples, 0.03%)__rustc::__rdl_alloc (4,251,415 samples, 0.03%)fasteval::parser::Parser::read_value (12,992,945 samples, 0.08%)core::num::dec2flt::<impl core::str::traits::FromStr for f64>::from_str (8,657,336 samples, 0.05%)core::num::dec2flt::parse::parse_number (4,294,745 samples, 0.03%)fasteval::parser::Parser::read_expression (189,109,929 samples, 1.18%)fasteval::parser::Parser::read_value (176,051,693 samples, 1.09%)fasteval::parser::Parser::read_callable (171,684,038 samples, 1.07%)fasteval::parser::Parser::read_expression (154,297,966 samples, 0.96%)fasteval::parser::Parser::read_value (132,703,897 samples, 0.82%)fasteval::parser::Parser::read_expression (111,187,796 samples, 0.69%)fasteval::parser::Parser::read_value (111,187,796 samples, 0.69%)fasteval::parser::Parser::read_expression (68,991,858 samples, 0.43%)fasteval::parser::Parser::read_value (56,203,624 samples, 0.35%)fasteval::parser::Parser::read_expression (43,219,025 samples, 0.27%)malloc (13,013,072 samples, 0.08%)malloc_consolidate (33,456,146 samples, 0.21%)<bliplib::compiler::Expression as core::str::traits::FromStr>::from_str (723,753,499 samples, 4.50%)<blip..malloc (134,823,384 samples, 0.84%)_int_malloc (57,659,269 samples, 0.36%)unlink_chunk.isra.0 (4,320,680 samples, 0.03%)__memmove_avx_unaligned_erms (5,715,253,719 samples, 35.52%)__memmove_avx_unaligned_erms<bliplib::compiler::Context as core::clone::Clone>::clone (7,087,972,338 samples, 44.05%)<bliplib::compiler::Context as core::clone::Clone>::clonemalloc (99,056,098 samples, 0.62%)_int_malloc (86,142,836 samples, 0.54%)malloc_consolidate (60,236,190 samples, 0.37%)unlink_chunk.isra.0 (8,589,713 samples, 0.05%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (8,716,116 samples, 0.05%)<alloc::collections::btree::map::BTreeMap<alloc::string::String,f64> as fasteval::evalns::EvalNamespace>::lookup (8,716,116 samples, 0.05%)__memcmp_avx2_movbe (4,354,724 samples, 0.03%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (29,982,235 samples, 0.19%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (21,703,962 samples, 0.13%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (17,398,591 samples, 0.11%)__log2_fma (4,362,227 samples, 0.03%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (47,262,684 samples, 0.29%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (42,894,848 samples, 0.27%)<fasteval::compiler::Instruction as fasteval::evaler::Evaler>::eval (38,589,814 samples, 0.24%)pow@@GLIBC_2.29 (4,306,220 samples, 0.03%)__ieee754_pow_fma (4,306,220 samples, 0.03%)__rustc::__rdl_dealloc (4,248,504 samples, 0.03%)cfree@GLIBC_2.2.5 (38,681,720 samples, 0.24%)_int_free_chunk (34,354,579 samples, 0.21%)_int_free_maybe_consolidate.part.0 (30,015,456 samples, 0.19%)malloc_consolidate (30,015,456 samples, 0.19%)core::ptr::drop_in_place<(char,bliplib::compiler::Expression)> (8,635,873 samples, 0.05%)cfree@GLIBC_2.2.5 (8,635,873 samples, 0.05%)_int_free_chunk (8,635,873 samples, 0.05%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (4,291,654 samples, 0.03%)cfree@GLIBC_2.2.5 (4,291,654 samples, 0.03%)_int_free_chunk (4,291,654 samples, 0.03%)core::ptr::drop_in_place<fasteval::slab::CompileSlab> (19,781,201 samples, 0.12%)cfree@GLIBC_2.2.5 (15,489,547 samples, 0.10%)_int_free_chunk (15,489,547 samples, 0.10%)_int_free_maybe_consolidate.part.0 (2,417,481 samples, 0.02%)malloc_consolidate (2,417,481 samples, 0.02%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (18,638,842 samples, 0.12%)cfree@GLIBC_2.2.5 (4,360,470 samples, 0.03%)_int_free_chunk (4,360,470 samples, 0.03%)cfree@GLIBC_2.2.5 (76,110,078 samples, 0.47%)_int_free_chunk (50,165,094 samples, 0.31%)core::ptr::drop_in_place<fasteval::parser::Expression> (12,930,980 samples, 0.08%)cfree@GLIBC_2.2.5 (8,628,094 samples, 0.05%)bliplib::compiler::Compiler::compile_all (15,318,767,403 samples, 95.21%)bliplib::compiler::Compiler::compile_allbliplib::compiler::Compiler::step (15,318,767,403 samples, 95.21%)bliplib::compiler::Compiler::step<alloc::boxed::Box<dyn bliplib::compiler::Token> as bliplib::compiler::Token>::apply (15,318,767,403 samples, 95.21%)<alloc::boxed::Box<dyn bliplib::compiler::Token> as bliplib::compiler::Token>::apply<bliplib::compiler::Note as bliplib::compiler::Token>::apply (15,318,767,403 samples, 95.21%)<bliplib::compiler::Note as bliplib::compiler::Token>::applybliplib::compiler::Context::render (15,318,767,403 samples, 95.21%)bliplib::compiler::Context::renderbliplib::compiler::Context::tick (7,443,980,163 samples, 46.27%)bliplib::compiler::Context::tickcore::ptr::drop_in_place<bliplib::compiler::Context> (191,883,506 samples, 1.19%)core::ptr::drop_in_place<fasteval::slab::Slab> (120,536,208 samples, 0.75%)core::ptr::drop_in_place<fasteval::parser::Value> (8,546,755 samples, 0.05%)[libasound.so.2.0.0] (1,770,421 samples, 0.01%)[libasound.so.2.0.0] (1,770,421 samples, 0.01%)snd_dlopen (1,770,421 samples, 0.01%)dlopen@GLIBC_2.2.5 (1,770,421 samples, 0.01%)_dlerror_run (1,770,421 samples, 0.01%)_dl_catch_error (1,770,421 samples, 0.01%)_dl_catch_exception (1,770,421 samples, 0.01%)dlopen_doit (1,770,421 samples, 0.01%)_dl_open (1,770,421 samples, 0.01%)_dl_catch_exception (1,770,421 samples, 0.01%)dl_open_worker (1,770,421 samples, 0.01%)_dl_catch_exception (1,770,421 samples, 0.01%)dl_open_worker_begin (1,770,421 samples, 0.01%)_dl_relocate_object (1,770,421 samples, 0.01%)_dl_relocate_object_no_relro (1,770,421 samples, 0.01%)_dl_lookup_symbol_x (1,770,421 samples, 0.01%)do_lookup_x (1,770,421 samples, 0.01%)[libasound.so.2.0.0] (2,979,612 samples, 0.02%)[libasound.so.2.0.0] (2,979,612 samples, 0.02%)__libc_start_main@@GLIBC_2.34 (15,322,349,655 samples, 95.23%)__libc_start_main@@GLIBC_2.34__libc_start_call_main (15,322,349,655 samples, 95.23%)__libc_start_call_mainmain (15,322,349,655 samples, 95.23%)mainstd::rt::lang_start_internal (15,322,349,655 samples, 95.23%)std::rt::lang_start_internalstd::rt::lang_start::{{closure}} (15,322,349,655 samples, 95.23%)std::rt::lang_start::{{closure}}std::sys::backtrace::__rust_begin_short_backtrace (15,322,349,655 samples, 95.23%)std::sys::backtrace::__rust_begin_short_backtraceblip::main (15,322,349,655 samples, 95.23%)blip::mainrodio::stream::OutputStream::try_default (3,582,252 samples, 0.02%)<cpal::platform::platform_impl::Device as cpal::traits::DeviceTrait>::default_output_config (3,582,252 samples, 0.02%)cpal::host::alsa::Device::default_config (3,582,252 samples, 0.02%)cpal::host::alsa::Device::supported_configs (3,582,252 samples, 0.02%)alsa::pcm::PCM::new (3,582,252 samples, 0.02%)snd_pcm_open (3,582,252 samples, 0.02%)_start (15,322,851,159 samples, 95.24%)_startalloc::collections::btree::map::BTreeMap<K,V,A>::insert (12,947,287 samples, 0.08%)alloc::raw_vec::finish_grow (4,296,929 samples, 0.03%)cfree@GLIBC_2.2.5 (43,157,640 samples, 0.27%)core::ptr::drop_in_place<bliplib::compiler::Context> (4,288,360 samples, 0.03%)core::ptr::drop_in_place<fasteval::compiler::Instruction> (17,281,297 samples, 0.11%)core::ptr::drop_in_place<fasteval::parser::Value> (4,361,952 samples, 0.03%)core::ptr::drop_in_place<fasteval::slab::Slab> (4,328,892 samples, 0.03%)core::slice::sort::shared::smallsort::insertion_sort_shift_left (8,503,116 samples, 0.05%)fasteval::compiler::ExprSlice::split (4,166,924 samples, 0.03%)fasteval::compiler::push_mul_leaves (4,358,465 samples, 0.03%)fasteval::parser::Parser::read_callable (12,954,486 samples, 0.08%)fasteval::parser::Parser::read_expression (17,178,760 samples, 0.11%)fasteval::parser::Parser::read_value (17,283,844 samples, 0.11%)fasteval::slab::CompileSlab::push_instr (8,631,881 samples, 0.05%)malloc (51,720,712 samples, 0.32%)malloc_consolidate (4,303,014 samples, 0.03%)blip (16,080,871,551 samples, 99.95%)blippa_context_ref (4,283,271 samples, 0.03%)cpal_alsa_out (5,640,048 samples, 0.04%)__GI___clone3 (5,078,907 samples, 0.03%)start_thread (5,078,907 samples, 0.03%)std::sys::pal::unix::thread::Thread::new::thread_start (5,078,907 samples, 0.03%)core::ops::function::FnOnce::call_once{{vtable.shim}} (5,078,907 samples, 0.03%)std::sys::backtrace::__rust_begin_short_backtrace (5,078,907 samples, 0.03%)cpal::host::alsa::output_stream_worker (5,078,907 samples, 0.03%)cpal::traits::DeviceTrait::build_output_stream::_{{closure}} (3,549,546 samples, 0.02%)rodio::dynamic_mixer::DynamicMixer<S>::sum_current_sources (3,549,546 samples, 0.02%)<rodio::source::uniform::UniformSourceIterator<I,D> as core::iter::traits::iterator::Iterator>::next (3,549,546 samples, 0.02%)<rodio::conversions::sample_rate::SampleRateConverter<I> as core::iter::traits::iterator::Iterator>::next (3,549,546 samples, 0.02%)rodio::conversions::sample_rate::SampleRateConverter<I>::next_input_frame (3,048,042 samples, 0.02%)<rodio::source::done::Done<I> as core::iter::traits::iterator::Iterator>::next (1,676,541 samples, 0.01%)all (16,089,316,105 samples, 100%)threaded-ml (2,804,506 samples, 0.02%)__GI___clone3 (2,804,506 samples, 0.02%)start_thread (2,804,506 samples, 0.02%)[libpulsecommon-17.0.so] (2,804,506 samples, 0.02%)[libpulse.so.0.24.3] (2,804,506 samples, 0.02%)pa_mainloop_run (2,804,506 samples, 0.02%)pa_mainloop_iterate (2,804,506 samples, 0.02%) \ No newline at end of file diff --git a/src/cli/cli.rs b/src/cli/cli.rs index 9e9a027..43e9b0e 100644 --- a/src/cli/cli.rs +++ b/src/cli/cli.rs @@ -32,8 +32,7 @@ use thiserror::Error; const DEFAULT_INSTRUMENT: &str = "sin(2*pi()*(442+442*((n+1)/N))*t)"; const DEFAULT_LENGTH: &str = "2^(2-log(2, l))*(60/T)"; -#[derive(Parser)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser)] #[command(version, author, about)] pub(super) enum Cli { /// Play a song @@ -45,8 +44,7 @@ pub(super) enum Cli { Memo(Memo), } -#[derive(Parser, Clone, Getters)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone, Getters)] #[getset(get = "pub(super)")] pub(super) struct PlayOpts { /// Use this sheet music [default: stdin] @@ -104,8 +102,7 @@ impl InputGroup { } } -#[derive(Clone, Copy, AsRef)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Clone, Copy, AsRef)] struct Letter(char); #[derive(Debug, Error)] @@ -127,8 +124,7 @@ impl FromStr for Letter { } } -#[derive(Clone, Copy, AsRef)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Clone, Copy, AsRef)] struct NotALetter(char); #[derive(Debug, Error)] @@ -151,8 +147,7 @@ impl FromStr for NotALetter { } } -#[derive(Clone, AsRef)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Clone, AsRef)] struct LetterString(String); #[derive(Debug, Error)] @@ -218,8 +213,7 @@ where )) } -#[derive(Parser, Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone)] #[group(required = false, multiple = false)] pub(super) struct InputGroup { /// Set the path to your sheet music file [default: stdin] @@ -245,8 +239,7 @@ impl FromStr for ClonableFile { } } -#[derive(Parser, Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone)] pub(super) struct ExportOpts { #[command(flatten)] playopts: PlayOpts, @@ -282,7 +275,6 @@ enum AudioFormat { Raw(RawAudioFormat), } -#[cfg(debug_assertions)] impl Debug for AudioFormat { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { @@ -403,8 +395,7 @@ fn audio_format_parser(input: &str) -> Result { .map_err(|e| anyhow!("{e:?}")) } -#[derive(Parser, Clone, EnumString, Default)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone, EnumString, Default)] #[strum(ascii_case_insensitive)] enum RawAudioFormat { ALaw, @@ -430,8 +421,7 @@ enum RawAudioFormat { U32Le, } -#[derive(Parser, Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone)] pub(super) enum Memo { Syntax, #[command(subcommand)] @@ -439,8 +429,7 @@ pub(super) enum Memo { Formats, } -#[derive(Parser, Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] +#[derive(Debug, Parser, Clone)] pub(super) enum Example { List, N { id: u8 }, diff --git a/src/cli/main.rs b/src/cli/main.rs index 81b3f51..470988f 100644 --- a/src/cli/main.rs +++ b/src/cli/main.rs @@ -1,5 +1,5 @@ mod cli; -use std::{collections::HashMap, io::read_to_string}; +use std::{collections::HashMap, io::read_to_string, iter::once}; use anyhow::{Context as _, anyhow}; use bliplib::{ @@ -25,7 +25,13 @@ fn main() -> anyhow::Result<()> { let sink = Sink::try_new(&stream_handle).context("Epic audio playback failure")?; debug!("audio sink acquired"); - let default_variables = HashMap::from([('l', 4f64), ('L', 0.0), ('t', 0.0)]); + let default_variables = HashMap::from([ + ('l', 4f64), + ('L', 0.0), + ('t', 0.0), + ('T', 60.0), + ('N', opts.notes().len() as f64), + ]); debug!("building parser"); let parser = Parser::new( @@ -58,7 +64,9 @@ fn main() -> anyhow::Result<()> { .map(|(a, b)| (*a, *b)) .chain(default_variables), opts.instrument().clone(), - opts.slopes().map(|(_, (a, b))| (*a, b.clone())), + opts.slopes() + .map(|(_, (a, b))| (*a, b.clone())) + .chain(once(('L', opts.length().clone()))), )); debug!("compiling to samples"); let samples: Vec = compiler