我有一个定制域特定语言( Domain Specific Language,DSL)和一个采样性能分析器,它可以生成类似于其他分析器(当前堆栈跟踪、包含样本、排除样本等)的数据馈送。我希望利用现有的GUI来更好地可视化分析器结果,但还没有找到以这种方式可插入/扩展的GUI。
此外,DSL在计算集群中运行,因此任何可以同时为单个节点或多个节点切片和分割数据的GUI都是理想的。最终,我希望将其集成到visual studio中,但我很乐意在这一点上做任何事情。谢谢你的建议!
抢夺
发布于 2012-05-22 20:37:17
我怀疑你是否会找到这样的UI,你可以利用它来达到你自己的目的。
不过,它应该不会太难,不像Zoom中的那样,或者像我几年前做的这个,通常称为蝶形视图,但针对的是代码行,而不是函数:

它很容易编程。您有一定数量的堆栈跟踪,每个堆栈跟踪由一系列代码行组成,其中每行代码都表示对函数的调用,但“底层”行除外。让我们假设你有100个堆栈跟踪。
在任何时间点,您都有一行特定的代码,它是“焦点”,在本例中是foo.cpp: 326。33%是包含该行的堆栈跟踪的分数(即使该行在某些跟踪中出现多次)。这个百分比大致是如果可以删除这一行可以节省的总时间,所以这就是它所负责的。
在这33个堆栈跟踪中,它说25个堆栈跟踪中的线gzorn.cpp: 99出现在焦点线上方,其中8个堆栈跟踪的线显示为foo.cpp:105。(这是一种递归的情况。请注意,如果存在递归,则祖先或后代不必与焦点线相加到相同的百分比。)
它还指出,在经过这一行的33个堆栈跟踪中,16个堆栈跟踪的下一行是bar.cpp:45,10个堆栈跟踪的堆栈跟踪是bar.cpp:10,其中7个堆栈跟踪的堆栈跟踪是bar.cpp:17。
或者,您可以在每一行上显示经过该行的轨迹的一部分。
然后,用户可以通过单击这些“邻居”中的任何一个来更改焦点,从而寻找代价高昂的代码行。
注意这是多么容易编程。除了堆栈跟踪本身之外,您不需要任何数据结构,也不需要计算任何统计数据。更重要的是,你不需要有大量的堆栈跟踪,因为这样做只会使百分比更精确,这并不是特别重要。
另外,我几乎忘了提一下。您的堆栈跟踪不仅应该在CPU时间内进行,也应该在I/O或其他阻塞时间内进行。这一点很关键,因为程序通常会因为I/O、休眠、资源等待等原因而变得很慢,您需要知道这一点。如果你仅仅是因为与其他进程的竞争而担心速度慢,这并不是一个真正的问题,因为它不会太多地抛出百分比。
https://stackoverflow.com/questions/10692823
复制相似问题