关于MT5代码分析器 - 页 7

 

这是什么?


 
fxsaber #:

剖析器显示了实际上并没有发生的函数调用。我甚至遇到过这样的事情。

某种ArrayCopy,这不在mqh-file 源文件中!我甚至在静态数组的声明中画了一条红线。

不幸的是,我仍然不能使用剖析器。

并思考在构造、分配和移动对象时,数组是如何和如何移动的(而你有一个对象)。

你真的认为程序只由你的字符串组成吗?

这些例子并不完整。

 
Renat Fatkhullin #:

再想想在构造、分配和移动对象(你有一个对象)时,数组是如何和通过什么移动的。

你真的认为这个项目只由你的弦组成吗?

这些例子并不完整。

给出明确的指示,说明我应该怎么做才能让你解决这个问题,而不是把它拖下去。

 
fxsaber #:

给我一个明确的指示,说明我应该怎么做才能让你解决这个问题,而不是把它拖下去。

你正在就一个你不了解的话题(编译器及其内部)发表声明。

指导没有帮助--你没有参加编译器开发人员的课程,以了解对象语言中隐式生成的代码 的广阔世界。高级语言使用大量的库和内联代码。在WinAPI中建立一个普通的项目,看看*.map文件 - 那里有成千上万的辅助函数,任何一个都可以出现在剖析中。

我重复了几十遍的 "所产生的代码与你的代码无关,它是由优化编译器进行优化、嵌入和洗牌的 "这句话也没有吸引我的注意。编译器的主要工作是使代码尽可能快,而不是可读性。剖析器的工作是显示优化(真实)代码中的真正瓶颈,而不是通过匹配行来作弊。

作为比较,目前对C++代码进行剖析往往是一项非常困难的任务,因为优化器是一个伟大的匹配修复器。是的,Microsoft Visual Studio C++不是一个基准,它生成的代码非常弱/糟糕。它比其LLVM/Clang竞争对手差20-30%。


我们再一次有了一个不改变被检查代码的剖析器。检查时间增加了,但代码并没有因为嵌入计数器而真正被破坏,这将扼杀代码优化。

剖析所用的方法是 "抽样"。剖析器暂停MQL-程序(每秒约1000次),并收集特定代码片段中发生的暂停次数的统计数据。这包括分析调用堆栈,以确定每个函数对代码总运行时间的 "贡献"。在剖析结束时,你会得到每个函数被暂停了多少次,以及每个函数在调用栈中的次数

  • 总的CPU活动[单位,%] - 一个函数在调用栈中 "出现 "的总次数。
  • 自己的CPU活动[单位,%] - 在指定的功能中直接发生的 "暂停 "的数量。这个计数器对于识别瓶颈是最重要的,因为从统计学上看,停止发生在那些需要更多CPU时间的程序部分,更频繁。



没有一步到位的可复制的例子,我们不考虑问题。从几个微任务的调用中得到的简化合成物也不能从所花时间的百分比或对总时间的贡献来考虑。

 
Renat Fatkhullin #:

你正在就一个你不了解的话题(编译器及其内部)发表声明。

对你所确定的主题完全无知。剖析器显示了一些不能以任何方式解释的数据。

我们再一次有了一个剖析器,它几乎没有把延迟引入我们正在调查的代码中。检查时间会增加,但代码不会因为嵌入计数器而真正被破坏--那会扼杀代码的优化。

我正试图用新的剖析器查看瓶颈问题。没有运气,尽管我非常努力。

没有一步到位的可重复的例子,我们就不看问题了。从几个微观任务的调用中得到的简化合成物,也不能从所花时间的百分比或对总时间的贡献来考虑。

我应该把数据发送给谁进行重放?来自LS的数据显示,LS信息可能在很长一段时间内都不会被读取。

两个绿点表示信息已被读取,一个表示信息未被读取。

 
fxsaber #:

对你所概述的主题完全无知。剖析器显示了一些不能以任何方式解释的数据。

我正试图用新的剖析器查看瓶颈。没有运气,尽管我正在努力。

我应该把数据发送给谁进行重放?来自PM的数据显示,PM信息可能在很长一段时间内不会被读取。

两个绿点--信息已读,一个--未读。

同样,锤子在某个地方被敲击的次数越多,其功能的成本就越高。

反击打到廉价变量的概率是多少? 几乎是0

有一些可以立即理解的函数,计数器会打到,它们被跳过,看看下面的自定义函数

 
Fast235 #:

简单地说,锤子被敲击的次数越多,在这个或那个地方,功能的成本就越高。

反击打到廉价变量的概率是多少? 几乎是0

有一些可以立即理解的函数,计数器会打到,它们被跳过,看看下面的自定义函数

我说的是实际应用,而不是一目了然的美丽理论。

 
fxsaber #:

我说的是实际应用,而不是第一次就容易理解的美丽理论。

实用是它的过去,它被调用了多少次?

这纯粹是一种完美主义的兴趣。

我同意需要看到额外的电话,即使它们很便宜。

 
Fast235 #:

实用的就像以前一样,叫了多少次?

以前的剖析器能够找到瓶颈,但在这里我们谈论的是一个新的剖析器,其数据并不能让我们了解发生了什么,尽管在理论上已经研究过几次。

 
fxsaber #:

以前的分析器可以找到瓶颈,但现在我们谈论的是一个新的分析器,它的数据不允许了解正在发生的事情,尽管在理论上一切都已经研究过几次。

雷纳特不应该在一般的短语中显示新的剖析器,而是要让它清楚,甚至像子一样的确信)(我不是在贬低。)