错误、漏洞、问题 - 页 2163 1...215621572158215921602161216221632164216521662167216821692170...3184 新评论 Renat Fatkhullin 2018.03.10 10:21 #21621 Комбинатор: 我相信你在优化方面要好得多,但从一个普通用户的角度来看,这看起来很奇怪--你声称MQL编译器生成的代码可以与C++相媲美,但后来发现MQL中的数组根本就不快。管理/被管理的语言显然意味着数组必须被严格控制。没有这一点,语言就不可能是安全的。 对于静态数 组,控制是比较简单的,在代码优化阶段可以部分简化。对于动态阵列,有更多的控制,而且很难简化。 代码是以C++的质量水平生成的,但在管理的事情上肯定有开销。数学、循环和其他一切都处于C++水平。 Renat Fatkhullin 2018.03.10 10:26 #21622 Комбинатор:数组索引 充其量也只是一个直接的单一汇编命令,所以问题仍然存在在托管语言中,只在静态 数组中使用恒定 索引。也就是说,如果优化器100%确定不需要检查边界和缓冲区的可用性。 如果条件被违反,就会出现缓冲区和边界[s]检查。 这是编程时需要掌握的基本知识。 A100 2018.03.10 14:05 #21623 Vladimir Pastushak: 如果一个重载函数有一个enumToString,那么在为一个整数调用它时就会出现问题...我一直在关注这个https://www.mql5.com/ru/forum/1111/page1297#comment_1382986 但他们没有改变任何东西,所以模板中的::EnumToString在很多情况下是没有用的。 Ошибки, баги, вопросы 2015.02.16www.mql5.com Общее обсуждение: Ошибки, баги, вопросы Vladimir Pastushak 2018.03.10 17:21 #21624 继续探索项目,偶然发现 #resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp" resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1 如果我们的能力有限,为什么还需要项目? 一个项目是PROJECT!!!!!,它可能有1000张图片、声音、帮助文件,我们必须把所有东西放在一个文件夹里? 我不喜欢在目录中乱七八糟的东西,要写出大量的质量,不仅要在你的头脑中,也要在各处都有秩序...... Artyom Trishkin 2018.03.10 18:32 #21625 A100:我在关注这个https://www.mql5.com/ru/forum/1111/page1297#comment_1382986 但是没有任何改变,所以模板中的::EnumToString在很多情况下是无用的fxsaber你好。 // Для enum-ов template <typename T> string EnumToString2( T Value ) { return(EnumToString(Value)); } // Для кастомных типов template <typename T> string EnumToString2( const T& ) { return(NULL); } // Для стандартных типов #define ENUMTOSTRING(A) string EnumToString2( A ) { return(NULL); } ENUMTOSTRING(int) ENUMTOSTRING(string) // ..... #undef ENUMTOSTRING #define EnumToString EnumToString2 template<typename T> string ETS( T t ) { return ( typename( t ) == "int" ? "OK" : ::EnumToString( t ) ); } enum ENUM { ENUM__ }; void OnStart() { ENUM i1 = ENUM__; Print( ETS( i1 )); //нормально int i2 = 0; Print( ETS( i2 )); //"ошибка компиляции" string i3 = NULL; Print( ETS( i3 )); //"ошибка компиляции" } Vladimir 2018.03.10 21:15 #21626 Комбинатор:因此,从一个简单的数组中按索引提取一个元素应该是一个非常快的操作,不是吗? 但非检索的速度更快。不知何故,我注意到,如果我使用浮点数而不是整数,我的程序工作起来就会快一倍半。我对自己的解释是,我的FPU协处理器大部分时间是闲置的,大部分时间使用整数。 在我的情况下,你也可以考虑到这一点:SQRT在FPU中执行,ALU腾出时间,它们在很大程度上开始并行工作。 Renat Fatkhullin 2018.03.10 21:39 #21627 Vladimir Pastushak:继续探索项目,偶然发现 #resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp" resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1 如果我们的能力有限,为什么还需要项目? 一个项目是PROJECT!!!!!,它可能有1000张图片、声音、帮助文件,我们必须把所有东西放在一个文件夹里? 我不喜欢在目录中乱七八糟的东西,要写出大量的质量,不仅要在你的头脑中,也要在各处都有秩序...... 对于在编译时包含的对象,不作为命名的对象进入代码,部分地进行了纠正。问题是,在EX文件中,命名资源有64个字符的物理限制。 A100 2018.03.10 22:38 #21628 Artyom Trishkin:fxsaber你好。 上述代码是基于一个编译器的缺陷 void f( int ) { Print( 1 ); } //(1) void f( const int& ) { Print( 2 ); } //(2) void OnStart() { int i = 0; f( i ); //нормально ??? } 结果:1...为什么不是2? 因为C++在编译过程中报告了一个错误,因为这两个函数显然都适合,而且在MQL中的当前顺序根本不允许明确地调用函数(2)。 如果这个错误被消除了,给定的代码在大部分情况下将变得无法操作。 A100 2018.03.11 14:11 #21629 编译错误:树形优化错误 class A { public: void f() {} }; typedef A* (*fn)(); #import "Test.ex5" fn g(); #import void OnStart() { g()().f(); } Vladimir Pastushak 2018.03.11 21:27 #21630 Renat Fatkhullin: 我们将对对象进行部分修正,这些对象是在编译时包含的,并没有作为一个命名的对象进入代码。问题是,在EX文件中命名的资源有一个64个字符的物理限制。产品描述 中的空间非常小。 3600个字符对于大型和严肃的程序来说太少了。 我想很多人都会同意我的看法。 要描述程序,你需要不少于5000-10000个字符。或者至少有一个带有程序设置名称的标签 主持人可以随时要求清除水。 现在我在写程序描述,我把所有的3600个字符只用于描述设置,甚至没有描述一半的功能...... 1...215621572158215921602161216221632164216521662167216821692170...3184 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我相信你在优化方面要好得多,但从一个普通用户的角度来看,这看起来很奇怪--你声称MQL编译器生成的代码可以与C++相媲美,但后来发现MQL中的数组根本就不快。管理/被管理的语言显然意味着数组必须被严格控制。没有这一点,语言就不可能是安全的。
对于静态数 组,控制是比较简单的,在代码优化阶段可以部分简化。对于动态阵列,有更多的控制,而且很难简化。
代码是以C++的质量水平生成的,但在管理的事情上肯定有开销。数学、循环和其他一切都处于C++水平。
数组索引 充其量也只是一个直接的单一汇编命令,所以问题仍然存在
在托管语言中,只在静态 数组中使用恒定 索引。也就是说,如果优化器100%确定不需要检查边界和缓冲区的可用性。
如果条件被违反,就会出现缓冲区和边界[s]检查。
这是编程时需要掌握的基本知识。
如果一个重载函数有一个enumToString,那么在为一个整数调用它时就会出现问题...
我一直在关注这个https://www.mql5.com/ru/forum/1111/page1297#comment_1382986
但他们没有改变任何东西,所以模板中的::EnumToString在很多情况下是没有用的。
继续探索项目,偶然发现
#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"
resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1
如果我们的能力有限,为什么还需要项目?
一个项目是PROJECT!!!!!,它可能有1000张图片、声音、帮助文件,我们必须把所有东西放在一个文件夹里?
我不喜欢在目录中乱七八糟的东西,要写出大量的质量,不仅要在你的头脑中,也要在各处都有秩序......
我在关注这个https://www.mql5.com/ru/forum/1111/page1297#comment_1382986
但是没有任何改变,所以模板中的::EnumToString在很多情况下是无用的
fxsaber你好。
因此,从一个简单的数组中按索引提取一个元素应该是一个非常快的操作,不是吗?
继续探索项目,偶然发现
#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"
resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1
如果我们的能力有限,为什么还需要项目?
一个项目是PROJECT!!!!!,它可能有1000张图片、声音、帮助文件,我们必须把所有东西放在一个文件夹里?
我不喜欢在目录中乱七八糟的东西,要写出大量的质量,不仅要在你的头脑中,也要在各处都有秩序......
fxsaber你好。
上述代码是基于一个编译器的缺陷
结果:1...为什么不是2?
因为C++在编译过程中报告了一个错误,因为这两个函数显然都适合,而且在MQL中的当前顺序根本不允许明确地调用函数(2)。
如果这个错误被消除了,给定的代码在大部分情况下将变得无法操作。
编译错误:树形优化错误
我们将对对象进行部分修正,这些对象是在编译时包含的,并没有作为一个命名的对象进入代码。
产品描述 中的空间非常小。
3600个字符对于大型和严肃的程序来说太少了。
我想很多人都会同意我的看法。
要描述程序,你需要不少于5000-10000个字符。或者至少有一个带有程序设置名称的标签
主持人可以随时要求清除水。
现在我在写程序描述,我把所有的3600个字符只用于描述设置,甚至没有描述一半的功能......