错误、漏洞、问题 - 页 977

 
Renat:
没有调用GDI方法。

我是说TextOut,它不是系统吗?

我理解这个标签,我没有以任何方式将它与GDI联系起来。

 
voix_kas:

所有(一半)标签中的文字变化旨在显示指标的值,而不是其描述。你可以在运行脚本时看到这一点。

要么我不理解你。我们到底是在谈论哪条线?

对不起,我用手机看错地方了,犯了个错误。

我将在接下来的几个小时内进行自己的测试,并公布源代码和详细结果。

 
sergeev:

我是说TextOut,它不是系统吗?

我理解这个标签,我没有以任何方式把它与GDI联系起来。

我以为GDI是关于标签的。

修改标签参数只不过是把命令流大规模地塞进一个专门的队列,而没有把这些数据真正附加到真正的对象上(对象属于图表,而不是MQL5),直到对象数据被渲染或读回。也就是说,对象的真正修改被推迟了。我们特意应用了这样的优化,以使开发者能够在没有减速的情况下操作数以万计的对象。

也就是说,在修改对象时,实际的执行被推迟了,这给人一种速度的感觉。好了,而整个绘图的负担是由应用程序的界面(图形)线程来承担的。而在渲染时,优化和切断可见度限制的方法也在起作用,这使得每张图表可以正常处理300 000-500 000个对象。

但在处理位图时,整个工作在MQL5中一次性完成,没有任何延迟,但之后在渲染时就会立即完成。而对于一定数量的对象,位图的总 "修改+渲染 "时间可能会更快。特别是考虑到位图在两次调用之间被保存,你只能只完成你需要的部分的绘制,而不是重建整个画布。

我将进行详细的测试并发布结果,显示对象和位图在不同模式下的表现。

 

在另一个主题中发布了结果:图表上单个文本标签和位图的性能测试

作者在他的位图处理脚本中存在一个严重的错误--实际上他使用了两个位图而不是一个,并不断地将它们相互复制,这降低了性能。

[删除]  
Renat:

在另一个主题中发布了测试结果:图表上单个文本标签和位图的性能测试

作者在使用位图时,他的脚本有一个严重的缺陷--实际上他使用了两个位图,而不是一个位图,并不断地将它们相互复制,这降低了性能。

那么,加快实际产出的方式是一种缺陷?:)

我已经在前面描述过引入模板画布和工作画布的目的。

 

让我们长命百岁。

MQL5手册中说,数据时间类型https://www.mql5.com/ru/docs/basis/types/integer/datetime。

"1970年1月1日至3000年12月31日的数值范围。"

实际上,32535244799的最大值是3001.01.01 07:59:59

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - Документация по MQL5
 
该测试是基于性能的,所以它不应该被额外的操作所堵塞。
[删除]  

为了提高编程的纯洁性,我想向公众询问这方面的情况。

假设有一个全局声明的标志(bool Flag)。当某些事件/条件发生时,它必须被设置为某个值。

第一个变体。

if (некое условие) {
  Flag = false;
}

第二个选择。

if (некое условие) {
  if (Flag) Flag = false;
}

哪个选项。

1.在性能上更快?

2.如果我可以这么说,"更专业"?

我们假设这部分代码会经常被控制,比如说每一次嘀嗒声

 
voix_kas:

为了提高编程的纯洁性,我想向公众询问这方面的情况。

假设有一个全局声明的标志(bool Flag)。当某些事件/条件发生时,其值必须被设置。

当然,第一种变体的速度更快。更少的指令,少了一个比较/分支。
[删除]  
Renat:
当然,第一个选项更快。更少的指令,而且少了一个比较/分支。
谢谢你。