Replies: 1 comment
-
如果是从理解程序的逻辑上,tree table确实有它的优势,因为它在显示的时候对每个函数的展示比例是等比的,而不像timeline这样是按照时间分配的。但是tree table有一些其他的问题。 第一,你需要一点一点展开,去找到你需要的部分,这个的前提就是你已经对自己的代码很熟悉了,否则你会找不到你真正的想看的地方。而timeline的话,有趣的东西往往发生在耗时长的地方,也就是最显眼的地方。而且因为是二维展示,你可以非常迅速地定位比较深的call stack,不用一点一点展开。 第二,在数据量比较大的情况下,我不太确定tree table的展示效果如何。我相信在观察某一个函数内部的运行情况的时候,tree table会很有条理,但是比如当有十万个entry的时候,前端的javascript或者是别的东西,能处理的如何,可能需要一定的优化。我现在前端用的是google的trace viewer,还是做的比较正式的。 第三,这是我觉得最重要的,viztracer解决了一个现在市面上几乎没有工具解决的问题,就是多线程多进程的理解和debug。这个事情的难度在于,在同一时间下,不同的线程/进程在做什么事情。而这个是tree table完全没办法visualize的,也是我个人感受的viztracer的核心竞争力之一。 我觉得,拥有多一种的输出形式,肯定是个蛮有趣的可能性,但是替代目前的timeline肯定我是不会这么选择的。viztracer其实支持flamegraph,挺多人还不知道的。 我这一阵其实收到了蛮多对viztracer的建议,我还挺感谢的,所以我最近在开发plugin系统。就以后第三方如果有一个新的feature的想法,然后又不是我的高优先级,他们可以自己迅速实现自己的部分,然后作为一个viztracer的plugin发布使用。比如tree table这个事情,通过plugin的话,只需要把现在有的整理好的python里的dict数据给再输出成tree table形式就行了,剩下的tracing之类的部分都是viztracer完成,使用的时候大概是 我现在可能不会把重点放在tree table上,但是如果你对这个开发感兴趣,很欢迎你做一个plugin来完成这件事~ |
Beta Was this translation helpful? Give feedback.
-
hi 高老师,
观察了一会儿viztracer,有点小的建议:从观察理解程序运行的方面出发思考,是不是出一个这样的以tree-table形式组织的call graph会比timeline更直观理解一些?当然Call graph和timeline解决的不是一个问题,timeline更多用来debug吧
https://github.com/Xilinx/Vitis-AI/blob/v1.2.1/Vitis-AI-Profiler/img/performance_resnet50_vart.png
Beta Was this translation helpful? Give feedback.
All reactions