评估CPU内核的优化 - 页 11 1...456789101112131415161718...22 新评论 Andrey Khatimlianskii 2019.10.16 13:12 #101 Aleksey Vyazmikin: 问题出现了,效果如何--当然,我从代码中看到,事实上他们已经删除了 "如果"?但我希望得到一个评论,因为不清楚在更快的逻辑方面的收益是什么。 直观的解决方案--将大的代码移到函数中(最好是在单独的include中),去掉if、increment和break。 我对获得要分析的变量的值也非常困惑。在测试例子中,这些是随机的,但在现实中呢?我已经将纯布尔值留在那里,以检查(bool_a>10.0)而不是(double_a)。 Aleksey Vyazmikin 2019.10.16 13:19 #102 Igor Zakharov: 新的构建,新的测试器,新的编译器...汇总表中缺少 "build mt5 "一栏 到目前为止,结果是稳定的--昨天检查过了,所以不要指望在不同的构建中出现性能跳跃。 Aleksey Vyazmikin 2019.10.16 13:28 #103 Andrey Khatimlianskii: 直观的解决方案是把大的代码放到一个函数中(或者更好的是放到一个单独的inlude中),然后摆脱if、increment和break。 事实上,它已经是一个函数了,所以不清楚为什么会有这样的性能提升!"。 我在工作代码中使用了inlude,但这是纯粹的代码迁移,你建议如何组织它?布雷大大增加了性能--我怎样才能摆脱它,使我不至于失去速度? 安德烈-哈蒂姆连斯基。 我对获得被分析变量的值也非常困惑。在测试的例子中,它是随机的,但在现实中呢?我已经将纯布尔值留在那里,所以我可以检查(bool_a>10.0)而不是(double_a)。 实际上,它和double是一样的--数据取自一个外部文件,在初始化时完全读入缓冲区。所以我不明白到底如何把它们变成一个bool。 Pavel Verveyko 2019.10.16 16:14 #104 Maxim Romanov: 3800x在流媒体的性能方面几乎赶上了i7 8700。而且它是从2700型车上下来的。 这可能是由于内存延迟的减少和两倍的高速缓存。 结论:对于mt5来说,决定性因素是内存访问延迟和内存读取速度。 这也可以从2990 wx线程上的低性能得到证明。尽管有4个通道和特定的缓存处理,它们的内存延迟还是很高。 因此,内核本身的速度并不那么重要。 也许这就是它的作用。 而3800X不应该脱离2700? Pavel Verveyko 2019.10.16 16:16 #105 Aleksey Vyazmikin: 那么我将假设在优化过程中,频率仅仅是通过意识形态下降。出于兴趣,对任何EA做一次较长时间的运行--不是16次,而是说160次--我想知道它如何改变通过的时间--差别应该很小--在1秒之内。 F PS 也许你有一个加载RAM的测试? Aleksey Vyazmikin 2019.10.16 17:35 #106 Pavel Verveyko: F PS 也许你有一个加载RAM的测试? 谢谢,平均数与16次传球差不多--我们会认为这是正确的数据。 不幸的是,对于记忆,公共领域中没有合适的东西。 Maxim Romanov 2019.10.16 17:47 #107 Pavel Verveyko: 3800X不是应该脱离2700吗? 它应该有,我提出了一些理由,以便在选择硬件时有所依据。 Pavel Verveyko 2019.10.16 17:59 #108 Maxim Romanov: 我应该这样做,我假设了原因,这样我将来选择铁的时候就有了依据。 明白了,谢谢。 Andrey Khatimlianskii 2019.10.16 23:26 #109 Aleksey Vyazmikin: 布雷大大增加了性能--我怎样才能摆脱它,从而不损失速度? 用回车来代替,就像我的例子中一样。 阿列克谢-维亚兹米 金。 在现实中,它也是双重的--数据来自外部文件,在初始化过程中被完全读入缓冲区。这就是为什么我不明白究竟如何把它变成一个bool。 而不是 int Povtor_High_M1 = X; if ( Povtor_High_M1>=0 ) *** if ( Povtor_High_M1< 0 ) *** 做出 bool Povtor_High_M1 = (X >= 0); if ( Povtor_High_M1 ) *** if ( !Povtor_High_M1 ) *** Aleksey Vyazmikin 2019.10.17 00:04 #110 Andrey Khatimlianskii: 像我的例子一样,用退伍军人代替。 而不是 做出 不幸的是,我并不聪明,但X>=0可能比其他任何数字都大--有许多组合--你不可能预见代码中的一切,代码会因各种组合而增长许多数量级。 1...456789101112131415161718...22 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
问题出现了,效果如何--当然,我从代码中看到,事实上他们已经删除了 "如果"?但我希望得到一个评论,因为不清楚在更快的逻辑方面的收益是什么。
直观的解决方案--将大的代码移到函数中(最好是在单独的include中),去掉if、increment和break。
我对获得要分析的变量的值也非常困惑。在测试例子中,这些是随机的,但在现实中呢?我已经将纯布尔值留在那里,以检查(bool_a>10.0)而不是(double_a)。
新的构建,新的测试器,新的编译器...汇总表中缺少 "build mt5 "一栏
到目前为止,结果是稳定的--昨天检查过了,所以不要指望在不同的构建中出现性能跳跃。
直观的解决方案是把大的代码放到一个函数中(或者更好的是放到一个单独的inlude中),然后摆脱if、increment和break。
事实上,它已经是一个函数了,所以不清楚为什么会有这样的性能提升!"。
我在工作代码中使用了inlude,但这是纯粹的代码迁移,你建议如何组织它?布雷大大增加了性能--我怎样才能摆脱它,使我不至于失去速度?
我对获得被分析变量的值也非常困惑。在测试的例子中,它是随机的,但在现实中呢?我已经将纯布尔值留在那里,所以我可以检查(bool_a>10.0)而不是(double_a)。
实际上,它和double是一样的--数据取自一个外部文件,在初始化时完全读入缓冲区。所以我不明白到底如何把它们变成一个bool。
3800x在流媒体的性能方面几乎赶上了i7 8700。而且它是从2700型车上下来的。
而3800X不应该脱离2700?
那么我将假设在优化过程中,频率仅仅是通过意识形态下降。出于兴趣,对任何EA做一次较长时间的运行--不是16次,而是说160次--我想知道它如何改变通过的时间--差别应该很小--在1秒之内。
F
PS 也许你有一个加载RAM的测试?
F
PS 也许你有一个加载RAM的测试?
谢谢,平均数与16次传球差不多--我们会认为这是正确的数据。
不幸的是,对于记忆,公共领域中没有合适的东西。
3800X不是应该脱离2700吗?
我应该这样做,我假设了原因,这样我将来选择铁的时候就有了依据。
明白了,谢谢。
布雷大大增加了性能--我怎样才能摆脱它,从而不损失速度?
用回车来代替,就像我的例子中一样。
在现实中,它也是双重的--数据来自外部文件,在初始化过程中被完全读入缓冲区。这就是为什么我不明白究竟如何把它变成一个bool。
而不是
做出
像我的例子一样,用退伍军人代替。
而不是
做出
不幸的是,我并不聪明,但X>=0可能比其他任何数字都大--有许多组合--你不可能预见代码中的一切,代码会因各种组合而增长许多数量级。