|
|
@@ -0,0 +1,28 @@
|
|
|
+use tokio;
|
|
|
+
|
|
|
+#[cfg(test)]
|
|
|
+mod tests {
|
|
|
+ use std::time::{Instant, Duration};
|
|
|
+ use rust_decimal::prelude::ToPrimitive;
|
|
|
+ use rust_decimal_macros::dec;
|
|
|
+
|
|
|
+ #[test]
|
|
|
+ // 计算十秒内能执行多少次decimal计算
|
|
|
+ fn test_decimal_subtraction_performance() {
|
|
|
+ // decimal使用的参考文档:https://docs.rs/rust_decimal/latest/rust_decimal/
|
|
|
+ // 在AMD Ryzen 7 5800X 8-Core Processor下,Decimal平均每秒可以计算1200w次(28位小数)~1600w次(1位小数)
|
|
|
+ let mut count = 0u64;
|
|
|
+ let point_3 = dec!(0.3323289834012382184823981293);
|
|
|
+ let point_2 = dec!(0.2518364912329136932183926421);
|
|
|
+ let num = point_3 - point_2;
|
|
|
+ let seconds = 10;
|
|
|
+
|
|
|
+ let start = Instant::now();
|
|
|
+ while start.elapsed() < Duration::from_secs(seconds) {
|
|
|
+ let _ = point_3 - point_2;
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ println!("Performed {} decimal subtractions in one second(avg), result is {:?}.", count / seconds, num.to_f64().unwrap());
|
|
|
+ }
|
|
|
+}
|