|
|
@@ -1,44 +1,60 @@
|
|
|
use std::fmt;
|
|
|
use std::fmt::{Formatter};
|
|
|
+use chrono::Utc;
|
|
|
|
|
|
#[derive(Debug, Clone)]
|
|
|
pub struct TraceStack {
|
|
|
- pub network: i64,
|
|
|
+ pub after_network: i64, // 到达网络层时间
|
|
|
+ pub before_quant: i64, // quant层执行开始时间(也是通道+锁走完后的时间)
|
|
|
+ pub after_quant: i64, // quant层执行结束时间
|
|
|
|
|
|
- pub format_start: i64,
|
|
|
- pub format_end: i64,
|
|
|
+ pub before_format: i64, // 开始格式化时间
|
|
|
+ pub after_format: i64, // 结束格式化时间
|
|
|
|
|
|
- pub quant_start: i64,
|
|
|
- pub quant_end: i64,
|
|
|
+ pub before_strategy: i64, // 计算层开始时间
|
|
|
+ pub after_strategy: i64, // 计算层结束时间
|
|
|
|
|
|
- pub strategy_start: i64,
|
|
|
- pub strategy_end: i64,
|
|
|
+ pub before_send_thread: i64, // 发送指令时时间(进入协程前)
|
|
|
+ pub before_send: i64, // 发送指令时时间(进入协程后)
|
|
|
+ pub after_send: i64, // 计算层结束时间
|
|
|
|
|
|
- pub source: String,
|
|
|
+ pub source: String, // 订单来源[depth|order]
|
|
|
+ pub order_command: String // 订单发送时的command
|
|
|
+}
|
|
|
+
|
|
|
+impl TraceStack {
|
|
|
+ pub fn on_network(&mut self, after_network: i64) {
|
|
|
+ self.after_network = after_network;
|
|
|
+ }
|
|
|
|
|
|
- pub order_command: String
|
|
|
+ pub fn on_before_quant(&mut self) {
|
|
|
+ self.before_quant = Utc::now().timestamp_micros();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
impl fmt::Display for TraceStack {
|
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
|
|
- write!(f, "订单来源: {},数据格式化时间{}微秒, 策略执行时间{}微秒",
|
|
|
+ write!(f, "订单来源: {},数据格式化时间{}微秒,逻辑层{}微秒,策略执行时间{}微秒",
|
|
|
self.source,
|
|
|
- self.format_end - self.format_start,
|
|
|
- // self.quant_end - self.quant_start,
|
|
|
- self.strategy_end - self.strategy_start)
|
|
|
+ self.before_format - self.after_format,
|
|
|
+ self.before_quant - self.after_quant,
|
|
|
+ self.before_strategy - self.after_strategy)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
impl Default for TraceStack {
|
|
|
fn default() -> Self {
|
|
|
TraceStack {
|
|
|
- network: 0,
|
|
|
- format_start: 0,
|
|
|
- format_end: 0,
|
|
|
- quant_start: 0,
|
|
|
- quant_end: 0,
|
|
|
- strategy_start: 0,
|
|
|
- strategy_end: 0,
|
|
|
+ after_network: 0,
|
|
|
+ before_format: 0,
|
|
|
+ after_format: 0,
|
|
|
+ before_quant: 0,
|
|
|
+ after_quant: 0,
|
|
|
+ before_strategy: 0,
|
|
|
+ after_strategy: 0,
|
|
|
+ before_send_thread: 0,
|
|
|
+ before_send: 0,
|
|
|
+ after_send: 0,
|
|
|
source: "".to_string(),
|
|
|
order_command: "".to_string(),
|
|
|
}
|