用 MQL 编写的用户界面图库 - 页 56

 
Andrey Barinov #:

我只是 使用库存画布:)。

...

这是一个惊喜。:)自我发展总是很酷的。即使它并不完美。

我不介意 Ccanvas 类(甚至在构造函数文件中包含了它的功能),但我还没有使用它。关键词是 "尚未"。我对它有很大的计划。在未来。

 
我将检查与图表大小相同的空白绿色画布的渲染速度,并将其发布在这里。
 
Реter Konow #:

是的,我会仔细检查一切。但这不是重点。绘图块不仅仅是绘图。它的内部还有逻辑迷宫,可以处理传入的事件。需要它们来决定画什么和不画什么。选择从哪里获取图像,在哪里以及如何叠加图像。如果只是简单的绘制 100 条线的功能,那就没什么好说的了。但这是一个庞大的机制,以确保绘制所有内容。

这一点值得考虑)。

不,如果执行得当,即使有成千上万次检查,事件模型所需的时间也不会超过一微秒(百万分之一秒)。
找一个 bug。
别再自卫了!没有人攻击你,他们只是想帮助你。
我有明显的滞后(>300 毫秒),从 10 万个对象开始,并与价格时间挂钩。
 
Nikolai Semko #:
不,如果执行得当,即使有成千上万次检查,事件模型所需的时间也不会超过一微秒(百万分之一秒)。
查找错误。
别再自卫了!没有人攻击你,他们只是想帮助你。
我有明显的滞后(>300 毫秒),从 10 万个对象开始,并与价格时间挂钩。

我不是在防卫)哈哈。只是解释一下。))

好吧我先做一个简单的测试。我会用一种颜色填充一个全屏画布,然后测量时间。你对你的渲染功能进行测量,然后就会更清楚我的代码中是否有刹车。也许有。我不是在争论。我需要检查一下。

 
Реter Konow #:

我不是在辩解)。哈哈。只是解释一下。))

好吧我先做一个简单的测试。我会用一种颜色填充一个全屏画布,然后测量时间。你对你的渲染功能进行测量,然后就会更清楚我的代码中是否有错误。也许有。我不是在争论。我需要检查一下。

我想,也许你从未使用过剖析工具。你也不会调试。


 
Nikolai Semko #:

我想,也许你从来没做过剖析。你也不会调试。


不调试。因为有俄罗斯代码,我做不了。我做过剖析但那是很久以前的事了。我喜欢用老方法编码。就是这样

我明天再来最近几天,我从早上 6 点工作到晚上 10 点到 11 点。断断续续的我有点累了
 
速度也许可以放在后面再优化,并且优化速度不是很快可以完成的,目前还是先完善功能吧。
 
hini #:
速度也许可以退居次要位置,优化速度也不是一蹴而就的事,目前最好还是先提高功能。
对于程序员来说,提高速度总是件好事。总的来说,我同意。这是合理的。在开发过程中合理安排优先级是非常重要的。尤其是在大型项目中。了解速度对用户的重要性对我来说非常重要。可以说,获得反馈是非常重要的。提速本身并不是我最初计划的一部分。我只是希望用户在查看界面时不会因为延迟而感到痛苦。:)

当然,元素的功能性仍然是我的首要任务。引擎、元素、错误。这才是最主要的。
 

@ 尼古拉- 塞姆科

尼古拉,现在我意外地找到了"为什么画一张 画布要花这么长时间"这个问题的答案。

窗户由两块 画布组成 这两块画布的大小几乎相等。因此,绘画面积应该乘以 2。但这只是开始。

在窗口空间中还有大型滚动元素 (V_BOX),这些元素在绘制时也会完全填充原色。也就是说,如果 V_BOX 占据了窗口的主要部分,则绘制区域应乘以 3。但是!它有一个额外的画布。图像在画布上滚动。元素的底部只是一个滚动条。简而言之,绘图区域应该乘以四(尤其是如果滚动条很长的话)。 只有这样,才能绘制元素。

这似乎就是全部了......我们可以将窗口面积乘以 3 或 4,再加上一个点。 但事实并非如此!

元素本身也是多层的。每个元素都有一个底座。底座总是 从头开始绘制,填充原色。 然后在基底上绘制边框。接着,在已绘制的元素部分上绘制图标。最后,在所有内容之上绘制文本。

因此,用户只能在每个像素上看到最终的颜色。 但是,随着整个窗口的绘制,这个像素上的颜色会发生多次变化。


现在将其乘以 15 个窗口....很明显,代码中并没有特殊的错误--我专门测量了部分绘制块的执行速度,全屏 50 毫秒对我来说也是可行的。只是我最终得到了更多的屏幕。


我知道如何修改代码,将绘制速度提高 2 或 3 倍。 但我会在完成主要工作后再做。

感谢您坚持检查代码。您说得没错。批评是有帮助的。

此外,还要感谢@AndreyBarinov 提供 的文字提示。也许我能想出一些办法。

Nikolai Semko - BeeXXI Corporation
Nikolai Semko - BeeXXI Corporation
  • 2024.07.15
  • www.mql5.com
Профиль трейдера
 
Реter Konow #:

@Nikolai Semko

......50毫秒全屏对我也有效。....

测试结果是近似值。我测量了打开一个有三个大小几乎相等的画布(图标窗口)的窗口的速度,结果为 70 毫秒。如果将所有画布的面积相加(不含元素),那么正好相当于 17 英寸笔记本电脑屏幕的面积。这还不包括绘制在画布顶部的元素基底和图标本身的面积。所以是的,大约 50ms 的时间就能将颜色填充到一个名义上的全屏区域。我还没有精确测量过。为什么呢,因为 "大象 "就在房间的正中央?:)