帆布与标签 - 页 13 1...6789101112131415161718 新评论 Andrey Khatimlianskii 2021.03.15 09:45 #121 Nikolai Semko:啊,好吧,那么它根本就是正常的。 我的GIF上也有一个画布,它是占用资源最少的面板,因为我不需要经常重绘它,抓住新条的瞬间。很好!一切都在飞翔! 而在低速时,它的更新没有跳过一拍。 Mihail Matkovskij 2021.03.15 12:09 #122 Dmitry Fedoseev: 找到了正确的文件。看数字的地方、地点和时间都不清楚,但即使不看,也能看出画布的速度要慢得多,而且不只是画布,而是一个画布,而不是一串标签。 运行专家CanvasVsLabels.mq5,选择显示类型outType,启用limit_fps,设置,nIterations,默认为10000。这就足够了,你不需要改变它。那么结果将与这里提出的类似: https://www.mql5.com/ru/forum/364640/page11#comment_21301589。 现在是结果。 最小延迟、中间延迟 和最大延迟 分别是一次运行的最小、平均和 最大 延迟。总数,是总的nIterations 次数的总时间。 再一次,这里有一个比较结果 的表格 帆布无限制的帧数 帆布有限的fps 标签无限制的fps 标签有限的fps 最小延迟(μs) 1530 1 18 0 中间延迟(μs) 7674 4086 48 7 最大延迟(μs) 11967 11093 785 286 共计(μs) 77727510 29452299 39648984 27439654 完全相同的测量可以在测试器中进行,因为测试器的设计就是这样的。但我还没有做这些事。等我有空闲时间的时候再做吧。我计划在未来尝试使用许多BitmabLabels的显示方式。 Canvas vs Labels fxsaber 2021.03.15 12:40 #123 关于交易、自动交易系统和策略测试的论坛 帆布与标签 fxsaber, 2021.03.13 19:26 只有我一个人有这样的结果? fxsaber:拿走了15-20%。显然,我的显卡太慢了。 结果发现ResourceReadImage的速度非常慢。摆脱了它--得到了零负荷。 Mihail Matkovskij 2021.03.15 13:30 #124 我再次公布对比表,但这次是用直方图。 帆布无限制的帧数 帆布有限的fps 标签无限制的fps 标签有限的fps 最小延迟(μs) 1530 1 18 0 中间延迟(μs) 7674 4086 48 7 最大延迟(μs) 11967 11093 785 286 共计(μs) 77727510 29452299 39648984 27439654 每道工序的平均延迟值比较 由于某些原因,这与总运行时间(Total)没有可比性...... 总运行时间的比较 测量结果显示,基于Canvas的有限FPS显示(Canvas unlimited FPS)比基于Labels的有限FPS 显示(Labels unlimited FPS)稍慢。但一般来说,它们都适用于显示来自高负荷进程的信息。 如何运行专家顾问来进行测量 从画布或标签下拉列表中选择outType 设置limit_fps 开启或关闭。 确认您的选择 按 "开始"按钮,开始在图表中进行测量 以同样的方式,专家顾问可以在视觉测试器中进行测量。然而,日期范围应该在测试器设置中设置,以便在历史中至少有与输入参数nIterations 的值一样多的条形。 更多信息以及来源,可以在图表显示库的描述中找到:https://www.mql5.com/ru/code/33898 专门为测量而修改的库:https://www.mql5.com/ru/code/download/33898/chartdisplay.mqh 测量的通用专家:https://www.mql5.com/ru/code/download/33898/canvasvslabels.mq5 更多细节见KB:https://www.mql5.com/ru/code/33898 我想补充更多正确的测量结果,在本主题的第一篇文章中使用新的专家顾问。因为目前存在的那些测量结果是不正确的。但不幸的是,第一条信息不能再被编辑了。我请版主在开始时增加更多正确的测量方法, 并将现在的测量方法 标记为不相关。 Дисплей с оптимизацией для вывода текста в чарт по типу консоли www.mql5.com Данная библиотека позволяет создавать дисплеи для удобного вывода текстовой информации в чарт с наиболее оптимальной скоростью Nikolai Semko 2021.03.15 15:39 #125 fxsaber: 事实证明,ResourceReadImage非常慢。摆脱了它--零负荷。 真的吗?给我的惊喜。比复制一个相同大小的普通uint数组慢多少? Dmitry Fedoseev 2021.03.15 16:24 #126 Mihail Matkovskij:运行专家CanvasVsLabels.mq5... 这有什么意义?我现在不想钻研代码。这些数值是如何计算的?如果你在测试器中进行测试,你应该测量运行的总时间,而不是其他,但不应该测量单个代码片段的性能。在极端的情况下,不要算上inite。看吧,不用测量,你就可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象...... fxsaber 2021.03.15 16:33 #127 Nikolai Semko: 真的吗? 给我的惊喜。 比复制同样大小的普通uint数组要慢多少? 呼叫时大约有15%的负荷,不呼叫时则为零。 Mihail Matkovskij 2021.03.15 16:52 #128 Dmitry Fedoseev:这有什么意义?我现在不想钻研代码。这些数字是如何计算的?如果你在测试器中这样测试,你应该测量运行的总时间,而不是其他,而不是单独的代码片段的性能。在极端的情况下,不要算上inite。看吧,不用测量,你就可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象......我不想钻研代码。我也不想相信我的话。:)我不知道该如何向你解释。从头到尾告诉你我是如何写出所有的代码...那将是一整篇文章。:)而且,关于专家如何进行测量,根本没有什么可理解的。//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void run() { MqlRates rates[]; int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); ulong start, min, mid, max; ulong last, delay; static ulong totalDelays = 0; static int nTick = 0; ulong first; if (!triggerBtn.State()) return; start = GetMicrosecondCount(); min = INT_MAX; mid = 0; max = 0; if (CopyRates(NULL, PERIOD_CURRENT, 0, nIterations, rates) != nIterations) { triggerBtn.State(false); triggerBtn.setText("Start"); Print("Not enough quotes!"); Comment("Not enough quotes!"); return; } for (int i = nIterations - 1; i >= 0 && triggerBtn.State(); i--) { first = GetMicrosecondCount(); display.push(); display.setText(concatenate(i)); display.update(); last = GetMicrosecondCount(); delay = last - first; if (delay < min) min = delay; if (delay > max) max = delay; nTick++; totalDelays += delay; mid = totalDelays / nTick; Comment("Min delay: " + (string)min + " μs\n" "Mid delay: " + (string)mid + " μs\n" "Max delay: " + (string)max + " μs\n" "Total: " + (string)(GetMicrosecondCount() - start) + " μs" + " \n" "Completed: " + (string)(int)(100.0 / nIterations * (nIterations - i)) + "%"); } printf("Min delay: %d μs", min); printf("Mid delay: %d μs", mid); printf("Max delay: %d μs", max); printf("Total: %d μs", GetMicrosecondCount() - start); triggerBtn.State(false); triggerBtn.setText("Start"); ChartRedraw(); } 总数在循环结束时计算,最小、中间和最大在循环的主体中,在display.push、display.setText和display.update之后。没有什么复杂的,如果你坐下来好好看看所有的东西,你至少可以拿到Kanvas和Labels的源代码。顺便说一下,那里也没有什么复杂的东西。除了Kanvas中绘制贝塞尔曲线 等的方法。 Mihail Matkovskij 2021.03.15 17:06 #129 Dmitry Fedoseev:而在这里,如果不进行测量,你可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象...... 你需要告诉我,Kanvas在什么输入参数下会很慢。如果limit_fps: false,那么很明显...:) Renat Fatkhullin 2021.03.15 17:49 #130 fxsaber: 事实证明,ResourceReadImage非常慢。摆脱了它,得到了零负荷。 如果你从编译时保存的资源中读取,你必须做一次。 资源在编译时被压缩。 1...6789101112131415161718 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
啊,好吧,那么它根本就是正常的。
我的GIF上也有一个画布,它是占用资源最少的面板,因为我不需要经常重绘它,抓住新条的瞬间。
很好!一切都在飞翔!
而在低速时,它的更新没有跳过一拍。找到了正确的文件。看数字的地方、地点和时间都不清楚,但即使不看,也能看出画布的速度要慢得多,而且不只是画布,而是一个画布,而不是一串标签。
运行专家CanvasVsLabels.mq5,选择显示类型outType,启用limit_fps,设置,nIterations,默认为10000。这就足够了,你不需要改变它。那么结果将与这里提出的类似: https://www.mql5.com/ru/forum/364640/page11#comment_21301589。
现在是结果。 最小延迟、中间延迟 和最大延迟 分别是一次运行的最小、平均和 最大 延迟。总数,是总的nIterations 次数的总时间。
再一次,这里有一个比较结果 的表格
完全相同的测量可以在测试器中进行,因为测试器的设计就是这样的。但我还没有做这些事。等我有空闲时间的时候再做吧。我计划在未来尝试使用许多BitmabLabels的显示方式。
关于交易、自动交易系统和策略测试的论坛
帆布与标签
fxsaber, 2021.03.13 19:26
只有我一个人有这样的结果?
拿走了15-20%。显然,我的显卡太慢了。
结果发现ResourceReadImage的速度非常慢。摆脱了它--得到了零负荷。
我再次公布对比表,但这次是用直方图。
每道工序的平均延迟值比较
由于某些原因,这与总运行时间(Total)没有可比性......
总运行时间的比较
测量结果显示,基于Canvas的有限FPS显示(Canvas unlimited FPS)比基于Labels的有限FPS 显示(Labels unlimited FPS)稍慢。但一般来说,它们都适用于显示来自高负荷进程的信息。
如何运行专家顾问来进行测量
以同样的方式,专家顾问可以在视觉测试器中进行测量。然而,日期范围应该在测试器设置中设置,以便在历史中至少有与输入参数nIterations 的值一样多的条形。
更多信息以及来源,可以在图表显示库的描述中找到:https://www.mql5.com/ru/code/33898
专门为测量而修改的库:https://www.mql5.com/ru/code/download/33898/chartdisplay.mqh
测量的通用专家:https://www.mql5.com/ru/code/download/33898/canvasvslabels.mq5
更多细节见KB:https://www.mql5.com/ru/code/33898
我想补充更多正确的测量结果,在本主题的第一篇文章中使用新的专家顾问。因为目前存在的那些测量结果是不正确的。但不幸的是,第一条信息不能再被编辑了。我请版主在开始时增加更多正确的测量方法, 并将现在的测量方法 标记为不相关。
事实证明,ResourceReadImage非常慢。摆脱了它--零负荷。
运行专家CanvasVsLabels.mq5...
这有什么意义?我现在不想钻研代码。这些数值是如何计算的?如果你在测试器中进行测试,你应该测量运行的总时间,而不是其他,但不应该测量单个代码片段的性能。在极端的情况下,不要算上inite。看吧,不用测量,你就可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象......
真的吗?
呼叫时大约有15%的负荷,不呼叫时则为零。
这有什么意义?我现在不想钻研代码。这些数字是如何计算的?如果你在测试器中这样测试,你应该测量运行的总时间,而不是其他,而不是单独的代码片段的性能。在极端的情况下,不要算上inite。看吧,不用测量,你就可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象......
我不想钻研代码。我也不想相信我的话。:)我不知道该如何向你解释。从头到尾告诉你我是如何写出所有的代码...那将是一整篇文章。:)
而且,关于专家如何进行测量,根本没有什么可理解的。
总数在循环结束时计算,最小、中间和最大在循环的主体中,在display.push、display.setText和display.update之后。没有什么复杂的,如果你坐下来好好看看所有的东西,你至少可以拿到Kanvas和Labels的源代码。顺便说一下,那里也没有什么复杂的东西。除了Kanvas中绘制贝塞尔曲线 等的方法。而在这里,如果不进行测量,你可以看到,坎布的速度比较慢。我不知道,也许我有某种反常现象......
你需要告诉我,Kanvas在什么输入参数下会很慢。如果limit_fps: false,那么很明显...:)
事实证明,ResourceReadImage非常慢。摆脱了它,得到了零负荷。
如果你从编译时保存的资源中读取,你必须做一次。
资源在编译时被压缩。