# 《DolphinDB 流计算时延统计与性能优化》 在实时计算中,端到端的响应延迟是衡量计算性能时最重要的指标。DolphinDB 内置的流数据框架支持流数据的发布与订阅、流式增量计算、实时关联等,用户能够快速实现复杂的实时计算任务,达到毫秒级甚至亚毫秒级的效果,而无需编写大量代码。 本文介绍如何对 DolphinDB 流计算任务进行全链路的时延统计,以及如何优化脚本以实现更低时延的实时计算: - [1. 耗时统计](#1-耗时统计) - [1.1 使用 now 函数记录数据处理时刻](#11-使用-now-函数记录数据处理时刻) - [1.2 使用 timer 语句快速验证流计算引擎性能](#12-使用-timer-语句快速验证流计算引擎性能) - [1.3 使用 outputElapsedMicroseconds 参数统计流计算引擎的耗时明细](#13-使用-outputelapsedmicroseconds-参数统计流计算引擎的耗时明细) - [2. 性能优化](#2-性能优化) - [2.1 写入](#21-写入) - [2.2 计算](#22-计算) - [2.3 框架](#23-框架) - [3. 总结](#3-总结) ## 1. 耗时统计 在关键链路上记录处理的时刻,可以反映流计算各个环节的时延。此外,DolphinDB 流计算引擎本身还内置了耗时统计功能,可提供更详细的耗时情况,帮助进行分析与进一步性能优化。 ### 1.1 使用 now 函数记录数据处理时刻 在数据发布、接收以及计算结果输出时,通过 `now` 函数获取当前时刻,并在数据表中记录数据到达各个环节的时刻。示例脚本如下: ``` // create engine and subscribe share streamTable(1:0, `sym`time`qty`SendTime, [STRING, TIME, DOUBLE, NANOTIMESTAMP]) as tickStream result = table(1000:0, `sym`time`factor1`SendTime`ReceiveTime`HandleTime, [STRING, TIME, DOUBLE, NANOTIMESTAMP, NANOTIMESTAMP, NANOTIMESTAMP]) dummyTable = table(1:0, tickStream.schema().colDefs.name join `ReceiveTime, tickStream.schema().colDefs.typeString join `NANOTIMESTAMP) rse = createReactiveStateEngine(name="reactiveDemo", metrics =[