|
|
@@ -5,6 +5,7 @@ use rust_decimal::prelude::ToPrimitive;
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
|
pub struct TraceStack {
|
|
|
+ pub before_network: i64, // 官方数据生成时间
|
|
|
pub after_network: i64, // 到达网络层时间
|
|
|
pub before_quant: i64, // quant层执行开始时间(也是通道+锁走完后的时间)
|
|
|
pub after_quant: i64, // quant层执行结束时间
|
|
|
@@ -24,7 +25,11 @@ pub struct TraceStack {
|
|
|
}
|
|
|
|
|
|
impl TraceStack {
|
|
|
- pub fn on_network(&mut self, after_network: i64) {
|
|
|
+ pub fn on_before_network(&mut self, before_network_millis: i64) {
|
|
|
+ self.before_network = before_network_millis;
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_after_network(&mut self, after_network: i64) {
|
|
|
self.after_network = after_network;
|
|
|
}
|
|
|
|
|
|
@@ -92,6 +97,10 @@ impl fmt::Display for TraceStack {
|
|
|
msg.push_str(format!("订单来源:{} ", self.source).as_str());
|
|
|
}
|
|
|
|
|
|
+ if self.before_network != 0 && self.after_network != 0 {
|
|
|
+ msg.push_str(format!("数据生成+到达rust耗时{}微秒 ", self.after_network - self.before_network * 1000).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
if self.before_quant != 0 && self.after_network != 0 {
|
|
|
msg.push_str(format!("通道+锁耗时{}微秒 ", self.before_quant - self.after_network).as_str());
|
|
|
}
|
|
|
@@ -123,6 +132,7 @@ impl fmt::Display for TraceStack {
|
|
|
impl Default for TraceStack {
|
|
|
fn default() -> Self {
|
|
|
TraceStack {
|
|
|
+ before_network: 0,
|
|
|
after_network: 0,
|
|
|
before_format: 0,
|
|
|
after_format: 0,
|