错误、漏洞、问题 - 页 1573 1...156615671568156915701571157215731574157515761577157815791580...3184 新评论 Alexey Navoykov 2016.05.06 13:02 #15721 Anton Zverev:一个100Kb的源码项目在1325构建中不到一秒钟就能编译完毕。坚实的OOP,大量的虚拟函数 和重载,模板,指针,const修改器(尽可能)。没有DLL和OpenCL。我想找出你滞后的原因。也许这就是帮助编译器快速优化的结构。我从来没有遇到过滞后的情况。请给我提供kodobase的源代码,它正在减慢速度。好吧,100Kb太多,不是吗? 我有差不多1Mb。 所有你有的东西都在这里,加上很多宏。除了const不是到处都设置的。 但这并不是造成如此疯狂的滞后的原因,尤其是在build 1159中,所有的东西几乎都是即时编译的。我无法在Build 1325中进行测试,因为项目根本无法编译,而且出现了一大堆bug,都是在晚上出现的。 A100同志也报告了新Build中的一大堆bug。 我没有兴趣把时间浪费在探究这些bug上,我会等到他们发布工作Build。这就是为什么我告诉你1241版本的滞后性。 如果你有机会测试它,试着与最新的版本进行比较。 但我怀疑新的版本能明显加快速度。恰恰相反,MT开发者并不真正关心编译速度,他们只想在运行时间中挤出额外的纳秒,以便在市场上宣称MQL程序的速度可以与C++相媲美(尽管只是在抽象的例子上)。据我所知,他们并不关心优化效率,也就是说,游戏是否值得花费。我会尝试在代码库中搜索源代码,但不一定能找到类似的代码。 这一定是个大项目,而那里大多是公开的小项目。 Alexey Navoykov 2016.05.06 13:56 #15722 Renat Fatkhullin:他可能有以文本卷轴形式存在的巨大功能。优化器必须对这样的代码片段进行大量的处理,一遍又一遍地改进代码。对于优化器来说,减少函数的大小就足以大幅提高速度。 好吧,你必须切换到最新的构建,因为我们正在不断提高其中的质量和速度。没有巨大的函数。最多只有150行(或被认为是巨大的? 如果你这样想,为什么一个函数的大小与编译器尝试一堆小函数有关? 让我们假设它把大函数过了10次。所以我把它分解成5个小的,每个都要经过2次。 我们得到的结果是一样的。 所以,整个代码量是很重要的,对吗? 但是,即使在分解大的函数时,结果加快了一些,那又怎么样呢? 我们在谈论的是10(!)倍慢的编译。很明显,你想尽可能地加快程序的执行 速度,所以你做了大量的传递,试图改善一些东西。 而你越是把语言复杂化,这些传递就越长,这将消耗程序员的时间。还有一个自然的问题是关于所有这些的效率。 与程序员等待优化完成的空闲时间相比,你的优化使程序的速度提高了多少?当然,你可以尝试寻找一些折中的办法,但是像我上面写的那样,做不同的编译模式会更有效率。 带有所有优化的程序发布只有在最后才需要--99%的程序员的时间都花在编写和调试代码上,而他们根本就不需要你的优化。 Vasiliy Sokolov 2016.05.06 14:06 #15723 Alexey Navoykov:每次构建更新后,代码停止编译,这将持续多久!即使它们被编译,它们的工作方式也与以前不同(这更糟糕)。 谁需要这样一种编程语言?... 我不知道你是什么意思。我在MQL中有几个非常复杂的项目,有超过20000行的代码。新的构建可能在任何时候都会被编译出来。在整个期间,只有两个问题。一次是因为我的错误,另一次是由于开发商的错误。 Vasiliy Sokolov 2016.05.06 14:07 #15724 Alexey Navoykov:最多150行 这是一个非常大的、不正确的功能。 Alexey Navoykov 2016.05.06 14:21 #15725 Vasiliy Sokolov: 我不知道你是什么意思。我有几个非常复杂的MQL项目,代码大小超过20000行。新的构建在任何时候都会被编译出来。在整个期间,只有两个问题。一次是因为我的错误,另一次是由于开发商的错误。好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?翻开上面的人几页,在那里他也抓到了新构建中的很多bug,其中有些是很难抓到的。 你认为他是故意在找这些东西吗? Renat Fatkhullin 2016.05.06 14:29 #15726 Alexey Navoykov:好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?翻开上面的几页,那里的人也抓到了新构建中的一堆bug,其中有些是很难抓到的。 你认为他是故意找的吗?请展示一个可重玩的刹车的例子。不幸的是,到目前为止,你正在发表未经证实的声明,包括对开发者的直接攻击。你对函数的大小和程序的整体大小的看法是错误的。由于语法树的增加和多通道优化,单个函数的大小直接和非线性地影响到每个特定函数的优化。较小的功能在飞行中被优化。 Vasiliy Sokolov 2016.05.06 14:34 #15727 Alexey Navoykov:好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?翻开上面几页,那里的人也抓到了新造的一堆虫子,其中有些是很难抓到的。 你认为他是故意在找这些东西吗?1)我想知道你用了什么结构,我的代码中没有这些结构。我的代码大小有好几千行,而你的构造却不存在?当然,它一定是超级独特的东西?2)实际上,在之前的构建中,有一个内部编译器错误,当类之间相互链接时就会发生。这是开发人员的一个错误,但他们修复了它。我想不起还有什么其他错误。 A100 2016.05.06 14:49 #15728 Vasiliy Sokolov:2)事实上,之前的构建实际上有一个内部编译器错误,当类之间相互链接时就会出现。这是开发团队的一个错误,但它被修复了。我想不起还有什么其他错误。https://www.mql5.com/ru/forum/1111/page1591#comment_2463820而班级之间的相互联系又在哪里呢?我在这里把它简化得更多,以方便你搜索相互的参考资料,了解你没有使用的构造 Ошибки, баги, вопросы www.mql5.com Форум трейдеров 附加的文件: Test114.mq5 2 kb Vasiliy Sokolov 2016.05.06 15:19 #15729 A100:https://www.mql5.com/ru/forum/1111/page1591#comment_2463820而这里的阶级之间的相互参照在哪里?在此,我将其进一步简化,以方便你搜索相互参照,并了解你没有使用哪些结构。你在做逆向工程。这项工作对改进编译器很有帮助,但在实际编程方面却不适用。我不知道有哪个程序员会在实践中使用你所引用的代码。//+------------------------------------------------------------------+ //| Test116.mq5 | //| | //+------------------------------------------------------------------+ bool is( const string type, bool ) { return ( type == "1" || type == "2" || type == "3" || type == NULL ); } bool _is( string type ) { return is( type, false ); } //+------------------------------------------------------------------+ template<typename T> bool __is( T ) { return _is( typename( T )); } //+------------------------------------------------------------------+ #define IS( T ) __is( T(0)) //+------------------------------------------------------------------+ template<typename T> int sh( T t ) { T tt = 0x1; for ( int i = 0; i < 4; i++, tt <<= 1 ) if ( (t & tt) == tt ) return i; return -1; } //+------------------------------------------------------------------+ class D { public: template<typename T1, typename T2> T2 g( T1 t1, T2, int sh = -1 ); }; template<typename T1, typename T2> T2 D::g( T1 t1, T2, int sh ) { sh = sh( t1 ); T2 t2 = T2(t1) >> 1; return (sh( t1 ) & sh) == sh( t1 ) && IS( T2 ) ? 1 : 0; } //+------------------------------------------------------------------+ class M : public D { virtual void f1() { g( 0, 0 ); } }; //+------------------------------------------------------------------+ class A {}; void g( A* ) export {} class B { public: void h() { A a; g( &a ); } }; class C { public: void f() {} }; void OnStart() { C c; c.f(); } //+------------------------------------------------------------------+ Alexey Navoykov 2016.05.06 15:21 #15730 Renat Fatkhullin:请示范一个可重复的刹车的例子。不幸的是,到目前为止,你正在发表未经证实的声明,包括直接攻击开发者...我告诉你,这是一个大项目,所有源代码的总大小约为1Mb。 你怎么能演示刹车? 发送所有的代码还是什么? 你明白这是不可能的。 而单个片段的编译,当然会更快。你说的 "未经证实的说法 "是什么意思? 你的优化编译器要慢得多? 而且你对它不太关心? 这里有什么未经证实的?这里有一个链接,是去年10月的讨论,当时你刚刚介绍了这个全球优化:https://www.mql5.com/ru/forum/1111/page1424#comment_1981722这名男子写道。另一个代码--注意时间--它肯定已经上升了20倍然后你回应。这是MQL5的一个新的优化编译器(MQL4中没有)。 你必须为更好的目标代码和更长的编译时间付费。然后还有几个人,包括我自己,也抱怨编译速度慢。 但是你的回答似乎表明,你只关心 "更好的目标代码质量 "和一些神话般的 "2到10倍的速度提升",尽管我在实际工作的项目中没有看到这样的速度提升。正如我在上面所说的,我没能在最新的版本(4月22日)上进行测试,因为我在编译过程中遇到了一些错误。 但我认为编译速度在那里是一样慢的,因为你从未宣布在新版本中对编译器进行加速。 Ошибки, баги, вопросы 评论: 2www.mql5.com Форум трейдеров 1...156615671568156915701571157215731574157515761577157815791580...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一个100Kb的源码项目在1325构建中不到一秒钟就能编译完毕。坚实的OOP,大量的虚拟函数 和重载,模板,指针,const修改器(尽可能)。没有DLL和OpenCL。
我想找出你滞后的原因。也许这就是帮助编译器快速优化的结构。我从来没有遇到过滞后的情况。请给我提供kodobase的源代码,它正在减慢速度。
好吧,100Kb太多,不是吗? 我有差不多1Mb。 所有你有的东西都在这里,加上很多宏。除了const不是到处都设置的。 但这并不是造成如此疯狂的滞后的原因,尤其是在build 1159中,所有的东西几乎都是即时编译的。
我无法在Build 1325中进行测试,因为项目根本无法编译,而且出现了一大堆bug,都是在晚上出现的。 A100同志也报告了新Build中的一大堆bug。 我没有兴趣把时间浪费在探究这些bug上,我会等到他们发布工作Build。
这就是为什么我告诉你1241版本的滞后性。 如果你有机会测试它,试着与最新的版本进行比较。 但我怀疑新的版本能明显加快速度。恰恰相反,MT开发者并不真正关心编译速度,他们只想在运行时间中挤出额外的纳秒,以便在市场上宣称MQL程序的速度可以与C++相媲美(尽管只是在抽象的例子上)。据我所知,他们并不关心优化效率,也就是说,游戏是否值得花费。
我会尝试在代码库中搜索源代码,但不一定能找到类似的代码。 这一定是个大项目,而那里大多是公开的小项目。
他可能有以文本卷轴形式存在的巨大功能。
优化器必须对这样的代码片段进行大量的处理,一遍又一遍地改进代码。对于优化器来说,减少函数的大小就足以大幅提高速度。
好吧,你必须切换到最新的构建,因为我们正在不断提高其中的质量和速度。
没有巨大的函数。最多只有150行(或被认为是巨大的? 如果你这样想,为什么一个函数的大小与编译器尝试一堆小函数有关? 让我们假设它把大函数过了10次。所以我把它分解成5个小的,每个都要经过2次。 我们得到的结果是一样的。 所以,整个代码量是很重要的,对吗? 但是,即使在分解大的函数时,结果加快了一些,那又怎么样呢? 我们在谈论的是10(!)倍慢的编译。
很明显,你想尽可能地加快程序的执行 速度,所以你做了大量的传递,试图改善一些东西。 而你越是把语言复杂化,这些传递就越长,这将消耗程序员的时间。还有一个自然的问题是关于所有这些的效率。 与程序员等待优化完成的空闲时间相比,你的优化使程序的速度提高了多少?
当然,你可以尝试寻找一些折中的办法,但是像我上面写的那样,做不同的编译模式会更有效率。 带有所有优化的程序发布只有在最后才需要--99%的程序员的时间都花在编写和调试代码上,而他们根本就不需要你的优化。
每次构建更新后,代码停止编译,这将持续多久!即使它们被编译,它们的工作方式也与以前不同(这更糟糕)。 谁需要这样一种编程语言?
...
最多150行
我不知道你是什么意思。我有几个非常复杂的MQL项目,代码大小超过20000行。新的构建在任何时候都会被编译出来。在整个期间,只有两个问题。一次是因为我的错误,另一次是由于开发商的错误。
好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?
翻开上面的人几页,在那里他也抓到了新构建中的很多bug,其中有些是很难抓到的。 你认为他是故意在找这些东西吗?
好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?
翻开上面的几页,那里的人也抓到了新构建中的一堆bug,其中有些是很难抓到的。 你认为他是故意找的吗?
请展示一个可重玩的刹车的例子。
不幸的是,到目前为止,你正在发表未经证实的声明,包括对开发者的直接攻击。
你对函数的大小和程序的整体大小的看法是错误的。由于语法树的增加和多通道优化,单个函数的大小直接和非线性地影响到每个特定函数的优化。较小的功能在飞行中被优化。
好吧,那么你很幸运。你的代码中没有我代码中的任何结构,这有什么好奇怪的?
翻开上面几页,那里的人也抓到了新造的一堆虫子,其中有些是很难抓到的。 你认为他是故意在找这些东西吗?
1)我想知道你用了什么结构,我的代码中没有这些结构。我的代码大小有好几千行,而你的构造却不存在?当然,它一定是超级独特的东西?
2)实际上,在之前的构建中,有一个内部编译器错误,当类之间相互链接时就会发生。这是开发人员的一个错误,但他们修复了它。我想不起还有什么其他错误。
2)事实上,之前的构建实际上有一个内部编译器错误,当类之间相互链接时就会出现。这是开发团队的一个错误,但它被修复了。我想不起还有什么其他错误。
https://www.mql5.com/ru/forum/1111/page1591#comment_2463820
而班级之间的相互联系又在哪里呢?
我在这里把它简化得更多,以方便你搜索相互的参考资料,了解你没有使用的构造
https://www.mql5.com/ru/forum/1111/page1591#comment_2463820
而这里的阶级之间的相互参照在哪里?
在此,我将其进一步简化,以方便你搜索相互参照,并了解你没有使用哪些结构。
你在做逆向工程。这项工作对改进编译器很有帮助,但在实际编程方面却不适用。我不知道有哪个程序员会在实践中使用你所引用的代码。
请示范一个可重复的刹车的例子。
不幸的是,到目前为止,你正在发表未经证实的声明,包括直接攻击开发者...
我告诉你,这是一个大项目,所有源代码的总大小约为1Mb。 你怎么能演示刹车? 发送所有的代码还是什么? 你明白这是不可能的。 而单个片段的编译,当然会更快。
你说的 "未经证实的说法 "是什么意思? 你的优化编译器要慢得多? 而且你对它不太关心? 这里有什么未经证实的?
这里有一个链接,是去年10月的讨论,当时你刚刚介绍了这个全球优化:https://www.mql5.com/ru/forum/1111/page1424#comment_1981722
这名男子写道。
另一个代码--注意时间--它肯定已经上升了20倍
然后你回应。
这是MQL5的一个新的优化编译器(MQL4中没有)。
你必须为更好的目标代码和更长的编译时间付费。
然后还有几个人,包括我自己,也抱怨编译速度慢。 但是你的回答似乎表明,你只关心 "更好的目标代码质量 "和一些神话般的 "2到10倍的速度提升",尽管我在实际工作的项目中没有看到这样的速度提升。
正如我在上面所说的,我没能在最新的版本(4月22日)上进行测试,因为我在编译过程中遇到了一些错误。 但我认为编译速度在那里是一样慢的,因为你从未宣布在新版本中对编译器进行加速。