|
|
@@ -9,20 +9,19 @@ use tracing::info;
|
|
|
pub struct TraceStack {
|
|
|
pub before_network: i64, // 官方数据生成时间
|
|
|
pub after_network: i64, // 到达网络层时间
|
|
|
- pub ins: Instant, // 到达网络层的Instant
|
|
|
|
|
|
- pub after_span_line: i64, // 跨线程之后
|
|
|
+ pub ins: Instant, // 到达网络层的Instant,用于本地各层耗时计算。
|
|
|
|
|
|
- pub before_unlock_core: i64, // 解锁core之前的时间
|
|
|
+ pub after_span_line: u128, // 跨线程之后
|
|
|
|
|
|
- pub before_format: i64, // 开始格式化时间
|
|
|
- pub after_format: i64, // 结束格式化时间
|
|
|
+ pub after_unlock_core: u128, // 解锁core之后
|
|
|
|
|
|
- pub before_strategy: i64, // 计算层开始时间
|
|
|
- pub after_strategy: i64, // 计算层结束时间
|
|
|
+ pub after_format: u128, // 结束格式化之后
|
|
|
|
|
|
- pub before_send: i64, // 发送指令时时间
|
|
|
- pub after_send: i64, // 发送指令结束时间
|
|
|
+ pub after_strategy: u128, // 逻辑层结束
|
|
|
+
|
|
|
+ pub before_send: u128, // 发送指令时时间
|
|
|
+ pub after_send: u128, // 发送指令结束时间
|
|
|
|
|
|
pub source: String, // 订单来源[depth|order]
|
|
|
pub order_command: String, // 订单发送时的command
|
|
|
@@ -35,10 +34,8 @@ impl TraceStack {
|
|
|
after_network,
|
|
|
ins: after_network_instant,
|
|
|
after_span_line: 0,
|
|
|
- before_unlock_core: 0,
|
|
|
- before_format: 0,
|
|
|
+ after_unlock_core: 0,
|
|
|
after_format: 0,
|
|
|
- before_strategy: 0,
|
|
|
after_strategy: 0,
|
|
|
before_send: 0,
|
|
|
after_send: 0,
|
|
|
@@ -80,6 +77,30 @@ impl TraceStack {
|
|
|
self.after_network = after_network;
|
|
|
}
|
|
|
|
|
|
+ pub fn on_after_span_line(&mut self) {
|
|
|
+ self.after_span_line = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_after_unlock_core(&mut self) {
|
|
|
+ self.after_unlock_core = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_after_format(&mut self) {
|
|
|
+ self.after_format = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_after_strategy(&mut self) {
|
|
|
+ self.after_strategy = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_before_send(&mut self) {
|
|
|
+ self.before_send = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
+ pub fn on_after_send(&mut self) {
|
|
|
+ self.after_send = self.ins.elapsed().as_nanos();
|
|
|
+ }
|
|
|
+
|
|
|
pub fn set_order_command(&mut self, command_str: String) {
|
|
|
self.order_command = command_str;
|
|
|
}
|
|
|
@@ -104,36 +125,34 @@ impl fmt::Display for TraceStack {
|
|
|
msg.push_str(format!("订单来源:{} ", self.source).as_str());
|
|
|
}
|
|
|
|
|
|
- msg.push_str(format!("本地总耗时{}us ", self.ins.elapsed().as_micros()).as_str());
|
|
|
+ if self.before_send != 0 {
|
|
|
+ msg.push_str(format!("本地总耗时{}ns ", self.before_send).as_str());
|
|
|
+ }
|
|
|
|
|
|
if self.before_network != 0 && self.after_network != 0 {
|
|
|
- msg.push_str(format!("数据生成+到达rust耗时{}毫秒 ", (self.after_network - self.before_network).to_f64().unwrap() / 1000.0).as_str());
|
|
|
+ msg.push_str(format!("数据到达rust耗时{}ms ", (self.after_network - self.before_network).to_f64().unwrap() / 1000.0).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ if self.after_format != 0 {
|
|
|
+ msg.push_str(format!("跨协程完毕{}ns ", self.after_span_line).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ if self.after_format != 0 {
|
|
|
+ msg.push_str(format!("数据格式化完毕{}ns ", self.after_format).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ if self.after_format != 0 {
|
|
|
+ msg.push_str(format!("解锁完毕{}ns ", self.after_unlock_core).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ if self.after_strategy != 0 {
|
|
|
+ msg.push_str(format!("计算层完毕{}ns ", self.after_strategy).as_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ if self.after_send != 0 && self.before_send != 0 {
|
|
|
+ msg.push_str(format!("发送订单耗时(发送-服务器处理-响应到本地){}ms ", (self.after_send - self.before_send).to_f64().unwrap() / 1000.0).as_str());
|
|
|
}
|
|
|
|
|
|
- // if self.after_format != 0 && self.before_format != 0 {
|
|
|
- // msg.push_str(format!("数据格式化耗时{}us ", self.after_format - self.before_format).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
- // if self.after_core != 0 && self.before_core != 0 {
|
|
|
- // msg.push_str(format!("core执行耗时{}us ", self.after_core - self.before_core).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
- // if self.after_strategy != 0 && self.before_strategy != 0 {
|
|
|
- // msg.push_str(format!("计算层执行耗时{}us ", self.after_strategy - self.before_strategy).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
- // if self.after_network != 0 && self.after_strategy != 0 {
|
|
|
- // msg.push_str(format!("core核心全部走完{}us ", self.after_strategy - self.after_network).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
- // if self.before_send != 0 && self.before_send_thread != 0 {
|
|
|
- // msg.push_str(format!("进入发单协程耗时{}us ", self.before_send - self.before_send_thread).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
- // if self.after_send != 0 && self.before_send != 0 {
|
|
|
- // msg.push_str(format!("发送订单耗时(发送-服务器处理-响应到本地){}毫秒 ", (self.after_send - self.before_send).to_f64().unwrap() / 1000.0).as_str());
|
|
|
- // }
|
|
|
- //
|
|
|
// if self.after_send != 0 && self.after_network != 0 {
|
|
|
// msg.push_str(format!("总共耗时{}毫秒", (self.after_send - self.after_network).to_f64().unwrap() / 1000.0).as_str());
|
|
|
// }
|