帆布与标签 - 页 9

 
输出到标签的文本比输出到画布的文本快100倍,尽管画布甚至没有清空,它在把文本雕刻到文本上。
 
Alexey Viktorov:

迪米特里,在评判一件事之前,你需要了解这一切的开始......

如果我没记错的话,在某处写着五十行......

这一切从哪里开始?带着对现实的突破?

 
Dmitry Fedoseev:
文本输出到标签的速度比文本输出到kanvas的速度快100倍,尽管kanvas甚至没有清除,它是在文本上雕刻文本。

我将很快提出测试,其中Kanvas也足够快。而且我还会更新KB中的相关源代码。这都是为了限制每单位时间的更新数量,我后来发现了这一点。见上面的帖子,那里讨论过这个问题。从这个帖子开始:https://www.mql5.com/ru/forum/364640/page6#comment_21290218。

 
Mihail Matkovskij:

我将很快提出测试,其中Kanvas也足够快。而且我还会更新KB中的相关源代码。这都是为了限制每单位时间的更新数量,我后来发现了这一点。见上面的帖子,那里讨论过这个问题。从这个帖子开始:https://www.mql5.com/ru/forum/364640/page6#comment_21290218。

而且我不是在幻想,我是在衡量现实中适用的代码的性能。而且我根本不关心它是在什么地方渲染的,我在衡量程序的最终运行时间。

 
即使是纯粹的傻瓜式比较,只调用一次TextOut(),也比输出文本到标签的速度慢70倍。
 
Dmitry Fedoseev:

而且我不是在幻想,而是在衡量将在现实中应用的代码的性能。

Dmitry Fedoseev:
即使是纯粹的傻瓜式比较,只调用一次TextOut()也比向标签输出文本慢70倍。

如果你不愿意或不能理解,这里有一句话。

Renat Fatkhullin:

Nikolai是对的--编辑标签属性与渲染标签没有关系。

标签和图表上的任何其他对象一样,是在一个完全不同的线程中绘制的,并且独立于MQL5程序的操作。机器人只能要求再次强行渲染图表,但不能测量渲染时间。用对象绘制图表是完全异步的。

但渲染画布很容易测量,因为它是直接在机器人的流程中完成的,然后在独立渲染图表期间,它仍然是在窗口的上下文中对准备好的位图进行本地BitBlit。这种操作是初级的,而且被显卡很好地加速了。

在文本标签中,TTF字体的SetFont/TextOut是相当昂贵的。
 
Mihail Matkovskij:

如果你不想要或无法理解,你会得到一个报价。

而且我已经在这里 回答过你了

 
Dmitry Fedoseev:

而且我已经在这里 回答过你了

你要和MetaQuotes的主管 争论吗

 
Mihail Matkovskij:

你会和MetaQuotes的主管 争论吗

我们没有异议。

 
Dmitry Fedoseev:
即使是纯粹的傻瓜式比较,只调用一次TextOut(),也比输出文本到标签的速度慢70倍。

这是因为图表的渲染是在一个单独的线程中完成的。而OBJ_BITMAP_LABEL 的像素阵列处理与使用它的应用程序在同一个线程中,同时也将像素传递给位图。因此,OBJ_BITMAP_LABEL可能会降低应用程序的速度,但如果位图的更新不是很频繁的话,不会很明显就在我之前的测试中,OBJ_BITMAP_LABEL 也因为同样的原因造成了明显的速度下降。但如果你限制位图的更新频率,效果甚至比用标签更好。而如果你限制了位图的更新速度,它将比OBJ_BITMAP_LABEL 略快(由于在一个单独的线程中渲染)很简单,更新物体的频率超过人眼所能感知的频率是没有意义的。因此,滞后,所有的对象在图表中的更新过于频繁时。