错误、漏洞、问题 - 页 975 1...968969970971972973974975976977978979980981982...3184 新评论 [删除] 2013.04.27 12:00 #9741 我站在正确的立场上。位图的性能比标签差 16%-25%(取决于元素的数量),但不是一个数量级,正如我之前写的。在第一次学习这个工具时,代码中可能有错误/低效的地方。代码见附件。tol64相信我,我没有一个动机来欺骗你=我自己。在我的第一个实验中,我在测试器中观察到一个位图。不幸的是,我无法重现它。:( 附加的文件: BenchmarkLabel.mq5 5 kb BenchmarkBitmap.mq5 3 kb Anatoli Kazharski 2013.04.27 12:40 #9742 voix_kas:...tol64相信我,我没有一个动机来欺骗你=我自己。在我的第一个实验中,我在测试器中观察到一个位图。不幸的是,我无法重现它。:( 好的。让我们等待开发人员实现这一功能,然后我们将正确地测试它。))) [删除] 2013.04.27 12:47 #9743 我还想提请开发者注意字体显示的差异。左边是位图,右边是标签。虽然所有的设置都是一样的,但位图的字体呈现得稍微大胆 一些。这个问题并不关键。但为了秩序,请注意。:) Anatoli Kazharski 2013.04.27 12:53 #9744 voix_kas:我还想提请开发人员注意字体显示的差异左边是位图,右边是标签。虽然所有的设置都是一样的,但位图的字体渲染略显粗犷。这个问题并不关键。但为了秩序,有必要注意。:) 你对位图使用了什么标志来设置字体厚度? --- 2013.04.27 12:56 #9745 voix_kas:我站在正确的立场上。位图的性能比标签差 16%-25%(取决于元素的数量),但不是一个数量级的,正如我之前写的。不。然而你的测试是不正确的。你在每次改变后都要使用ChartRedraw。因此,事实上你正在测试10000次ChartRedraw。这是不对的。 任务是找出什么变化更快--标签或位图。而不是他们随后在图表上的产出。下面是如果你把ChartRedraw留在一个循环内的测试结果。 位图更新时间=40980。 更新标签的时间=41777。(即位图甚至比标签稍快)。我想让你注意的是,在循环内 的ChartRedraw的存在下,标签的数量和位图的宽度 并不影响任何东西。所以,在这种情况下,ChartRedraw函数是最慢的。---如果你把ChartRedraw从循环中移除,你会得到完全不同的数字位图刷新时间=5788。 标签的更新时间=234。因此,带有标签的终端比位图快 20 倍。当然,在这里,我们已经可以看到位图高度的依赖性,对于100个标记。位图更新时间=51355。 更新标签的时间=1108。 相差50 倍这里是一个大小为250*20的位图,也就是说,不要改变标记的坐标。我们得到 位图更新时间=25054。与100分的差距是25倍。所以,正如你所看到的,就使用位图的工作而言,它真的很慢。毫不含糊地说,用数组+WinGdi TextOut+创建ResourceCreate的持续循环工作=比本地MT对象至少差一个数量级,甚至是50 倍。这就是为什么你不应该拒绝MT对象。因为它可能会对绘制图表和柱状图非常方便。 Документация по MQL5: Операции с графиками / ChartRedraw www.mql5.com Операции с графиками / ChartRedraw - Документация по MQL5 [删除] 2013.04.27 12:57 #9746 tol64: 你对位图使用了哪个标志来设置字体厚度?默认值是0,我没有明确地设置它。你可以在所附的源代码中看到它。使用不同旗帜的额外 "游戏 "也没有导致统一性。 [删除] 2013.04.27 13:08 #9747 sergeev:...我们的目标是找出标签或位图的修改速度。而不是他们随后对图表的输出。...从循环中删除ChartRedraw()函数 是不正确的,因为文本标签属性修改的 "原子操作 "绝不是由终端的视频马达处理的。只有在调用ChartRedraw()时才会绘制整个窗口,包括来自不同对象的alpha通道图像的相互重叠。这一假设被带文本标签的脚本上的代码剖析器严格证实。至于位图,瓶颈是TextOut()函数。 Anatoli Kazharski 2013.04.27 13:14 #9748 voix_kas:...至于位图,瓶颈是TextOut()函数。这就更清楚了。)) [删除] 2013.04.27 13:18 #9749 tol64:这就是让它更清晰的方法。))我同意。:)sergeev:...下面是如果你把ChartRedraw留在循环内的测试结果。 位图更新时间=40980。 刷新标签的时间=41777。(也就是说,位图甚至比标签稍快)奇怪的是,我的情况正好相反。 Renat Fatkhullin 2013.04.27 13:29 #9750 最好不要使用Argb_normalize,因为它给颜色正常化带来了额外的成本。最好是用纯色画简单的东西。另外,速度也直接受到显卡的强烈影响,因为我们正在充分利用其2D功能。例如,在配有简陋显卡 的弱小笔记本电脑上,渲染 速度很慢,而且输出方式的差异很大。 Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования www.mql5.com Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5 1...968969970971972973974975976977978979980981982...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我站在正确的立场上。位图的性能比标签差 16%-25%(取决于元素的数量),但不是一个数量级,正如我之前写的。
在第一次学习这个工具时,代码中可能有错误/低效的地方。
代码见附件。
tol64
相信我,我没有一个动机来欺骗你=我自己。在我的第一个实验中,我在测试器中观察到一个位图。不幸的是,我无法重现它。:(
...
tol64
相信我,我没有一个动机来欺骗你=我自己。在我的第一个实验中,我在测试器中观察到一个位图。不幸的是,我无法重现它。:(
我还想提请开发者注意字体显示的差异。
左边是位图,右边是标签。虽然所有的设置都是一样的,但位图的字体呈现得稍微大胆 一些。
这个问题并不关键。但为了秩序,请注意。:)
我还想提请开发人员注意字体显示的差异
左边是位图,右边是标签。虽然所有的设置都是一样的,但位图的字体渲染略显粗犷。
这个问题并不关键。但为了秩序,有必要注意。:)
我站在正确的立场上。位图的性能比标签差 16%-25%(取决于元素的数量),但不是一个数量级的,正如我之前写的。
不。然而你的测试是不正确的。
你在每次改变后都要使用ChartRedraw。因此,事实上你正在测试10000次ChartRedraw。这是不对的。
任务是找出什么变化更快--标签或位图。而不是他们随后在图表上的产出。
下面是如果你把ChartRedraw留在一个循环内的测试结果。
位图更新时间=40980。
更新标签的时间=41777。
(即位图甚至比标签稍快)。
我想让你注意的是,在循环内 的ChartRedraw的存在下,标签的数量和位图的宽度 并不影响任何东西。所以,在这种情况下,ChartRedraw函数是最慢的。
---
如果你把ChartRedraw从循环中移除,你会得到完全不同的数字
位图刷新时间=5788。
标签的更新时间=234。
因此,带有标签的终端比位图快 20 倍。
当然,在这里,我们已经可以看到位图高度的依赖性,对于100个标记。
位图更新时间=51355。
更新标签的时间=1108。
相差50 倍
这里是一个大小为250*20的位图,也就是说,不要改变标记的坐标。
我们得到
位图更新时间=25054。
与100分的差距是25倍。
所以,正如你所看到的,就使用位图的工作而言,它真的很慢。
毫不含糊地说,用数组+WinGdi TextOut+创建ResourceCreate的持续循环工作=比本地MT对象至少差一个数量级,甚至是50 倍。
这就是为什么你不应该拒绝MT对象。因为它可能会对绘制图表和柱状图非常方便。
你对位图使用了哪个标志来设置字体厚度?
默认值是0,我没有明确地设置它。你可以在所附的源代码中看到它。
使用不同旗帜的额外 "游戏 "也没有导致统一性。
...
我们的目标是找出标签或位图的修改速度。而不是他们随后对图表的输出。
...
从循环中删除ChartRedraw()函数 是不正确的,因为文本标签属性修改的 "原子操作 "绝不是由终端的视频马达处理的。
只有在调用ChartRedraw()时才会绘制整个窗口,包括来自不同对象的alpha通道图像的相互重叠。
这一假设被带文本标签的脚本上的代码剖析器严格证实。
至于位图,瓶颈是TextOut()函数。
...
至于位图,瓶颈是TextOut()函数。
这就更清楚了。))
这就是让它更清晰的方法。))
我同意。:)
...
下面是如果你把ChartRedraw留在循环内的测试结果。
位图更新时间=40980。
刷新标签的时间=41777。
(也就是说,位图甚至比标签稍快)
奇怪的是,我的情况正好相反。
最好不要使用Argb_normalize,因为它给颜色正常化带来了额外的成本。最好是用纯色画简单的东西。
另外,速度也直接受到显卡的强烈影响,因为我们正在充分利用其2D功能。例如,在配有简陋显卡 的弱小笔记本电脑上,渲染 速度很慢,而且输出方式的差异很大。