decimal_test.rs 1.0 KB

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