对OOP的帮助 - 页 5 123456789 新评论 Aliaksandr Hryshyn 2021.09.29 15:45 #41 我也需要在这里写点东西...... 我的代码中就有这样的东西。 union u_Data_t { T value; ulong data[sizeof(T)/8+1]; } data_t; T是int类型。 调试下函数10*1024*1024次的执行时间:214.659毫秒。 没有调试:13190.941毫秒 这里没有错误,发布版本的速度要慢得多。 让我们改变一下变量的声明。 static union u_Data_t { T value; ulong data[sizeof(T)/8+1]; } data_t; 它看起来是静态的。 调试下。213.045毫秒。 没有:70.237毫秒 Dmitry Fedoseev 2021.09.29 16:11 #42 Vasiliy Sokolov #: Dmitry,不好意思,除了mukl,你还会其他的编程语言吗?不,你不知道。而且你仍然没有学会如何使用对象和指针,从你发表的那几段代码甚至文章中可以看出。这就是为什么我甚至不能认真地回复这个无能和坦率的愚蠢评论。最后读读维基百科,了解一下什么是垃圾收集器,以及它是如何组织的,最后至少读一遍你想参考的内容。到目前为止,这一切看起来就像狗对大篷车的吠叫:毫无意义, 毫不留情。 先处理好你自己的蟑螂。这很有趣,你太不够意思了。这是我的谦虚))。 你不能认真地回答任何问题,因为你根本不能认真地回答任何问题,因为你是泥腿子。 瓦西里,你真的不够格。毕竟,这种关于垃圾收集者的谈话是一年前的事,如果不是更久的话。它仍然在那里。 你在一年内还没有弄清楚它是什么。我的意思是,我不知道你是否知道它是什么,但你在这里展示了 你不明白,平庸的,谈话的主题,而且你自相矛盾。而令人惊奇的是,你似乎至少知道 两种语言,其中一种有垃圾收集器,即使如此,你也不知道有垃圾收集器的语言之间的区别。 和一种没有垃圾收集者的语言。 并回答你的话--告诉我,我怎么不知道如何与对象和指针一起工作? fxsaber 2021.09.29 16:12 #43 Aliaksandr Hryshyn #:发行版的速度明显较慢。 准备好播放的代码了吗? Aliaksandr Hryshyn 2021.09.29 16:17 #44 fxsaber #:现成的代码可以玩吗? //+------------------------------------------------------------------+ //| cBool.mqh | //| Aliaksandr Hryshyn | //| https://www.mql5.com/ru/users/greshnik1 | //+------------------------------------------------------------------+ #property copyright "Aliaksandr Hryshyn" #property link "https://www.mql5.com/ru/users/greshnik1" //Битовый поток class cBit_thread { private: ulong _bit_thread[];//Битовый поток данных uint _bit_thread_size;//Количество записанных бит в потоке uint _bit_thread_pos;//Текущя позиция для чтения/записи public: //Запись последовательности бит //Размер увеличивается динамически template<typename T> int Write( const T value,//Простая структура или переменная uint pos_bit_read=0,//С какой позиции начать считывание из структуры/переменной.Указывается в битах int bits_count=-1//Количество бит. -1=все до конца );//Возвращает количество записанных бит -1=ошибка }; template<typename T> int cBit_thread::Write(const T value,uint pos_bit_read=0,int bits_count=-1) { static union u_Data_t { T value; ulong data[sizeof(T)/8+1]; } data_t; ZeroMemory(data_t.data); data_t.value=value; if(pos_bit_read>=sizeof(T)*8) return -1; if(bits_count<0) bits_count=int(sizeof(T)*8-pos_bit_read); else if(pos_bit_read+bits_count>sizeof(T)*8) return -1; uint shift=int(pos_bit_read&63); int read_from=int(pos_bit_read>>6); int read_end=int(pos_bit_read+bits_count); uint write_to=0; ulong l1=0; for(int i1=read_from; i1<(read_end>>6)+1; i1++,write_to++) { l1=data_t.data[i1]; data_t.data[write_to]=l1>>shift; if(write_to>0) data_t.data[write_to-1]|=l1<<(64-shift); } uint len1=ArrayRange(_bit_thread,0); uint len2b=_bit_thread_pos+bits_count; if(len2b+128>(len1<<6)) { len2b=(len2b>>6)+2; ArrayResize(_bit_thread,len2b+1024); len2b+=1024; for(uint i1=len1; i1<len2b; i1++) _bit_thread[i1]=0; } int pos_end=(bits_count>>6)+((bits_count&63)!=0); shift=_bit_thread_pos&63; write_to=(_bit_thread_pos>>6); if(shift==0) { for(int i1=0; i1<pos_end; i1++) { l1=data_t.data[i1]; _bit_thread[write_to]|=l1; } } else { for(int i1=0; i1<pos_end; i1++) { l1=data_t.data[i1]; _bit_thread[write_to]|=(l1<<shift); _bit_thread[write_to+1]|=l1>>(64-shift); } } _bit_thread_pos+=bits_count; _bit_thread_size=MathMax(_bit_thread_size,_bit_thread_pos); return bits_count; } //+------------------------------------------------------------------+ 还有一个剧本。 #include <cBool.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { cBit_thread thread; ulong mcs=GetMicrosecondCount(); int num=1; for(int i1=0; i1<10*1024*1024; i1++) { thread.Write(num,0,1); } Print((GetMicrosecondCount()-mcs)/1000.0); } Aliaksandr Hryshyn 2021.09.29 16:19 #45 有人这样做吗? fxsaber 2021.09.29 16:20 #46 Aliaksandr Hryshyn #:还有剧本。 Release: 81.003 Debug: 295.312 我看不出有什么问题。 Aliaksandr Hryshyn 2021.09.29 16:22 #47 fxsaber #:我看不出有什么问题。 最新测试版3062 Dmitry Fedoseev 2021.09.29 16:24 #48 我的229和225是完全一样的。 Aliaksandr Hryshyn 2021.09.29 16:26 #49 Dmitry Fedoseev #: 我有229和225,完全一样。 终端的版本是否相同? Dmitry Fedoseev 2021.09.29 16:27 #50 Aliaksandr Hryshyn #:终端的版本是否相同? 3061 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我也需要在这里写点东西......
我的代码中就有这样的东西。
union u_Data_t { T value; ulong data[sizeof(T)/8+1]; } data_t;T是int类型。
调试下函数10*1024*1024次的执行时间:214.659毫秒。
没有调试:13190.941毫秒
这里没有错误,发布版本的速度要慢得多。
让我们改变一下变量的声明。
它看起来是静态的。
调试下。213.045毫秒。
Dmitry,不好意思,除了mukl,你还会其他的编程语言吗?不,你不知道。而且你仍然没有学会如何使用对象和指针,从你发表的那几段代码甚至文章中可以看出。这就是为什么我甚至不能认真地回复这个无能和坦率的愚蠢评论。最后读读维基百科,了解一下什么是垃圾收集器,以及它是如何组织的,最后至少读一遍你想参考的内容。到目前为止,这一切看起来就像狗对大篷车的吠叫:毫无意义, 毫不留情。
先处理好你自己的蟑螂。这很有趣,你太不够意思了。这是我的谦虚))。
你不能认真地回答任何问题,因为你根本不能认真地回答任何问题,因为你是泥腿子。
瓦西里,你真的不够格。毕竟,这种关于垃圾收集者的谈话是一年前的事,如果不是更久的话。它仍然在那里。
你在一年内还没有弄清楚它是什么。我的意思是,我不知道你是否知道它是什么,但你在这里展示了
你不明白,平庸的,谈话的主题,而且你自相矛盾。而令人惊奇的是,你似乎至少知道
两种语言,其中一种有垃圾收集器,即使如此,你也不知道有垃圾收集器的语言之间的区别。
和一种没有垃圾收集者的语言。
并回答你的话--告诉我,我怎么不知道如何与对象和指针一起工作?
发行版的速度明显较慢。
准备好播放的代码了吗?
现成的代码可以玩吗?
还有一个剧本。
还有剧本。
我看不出有什么问题。
我看不出有什么问题。
最新测试版3062
我有229和225,完全一样。
终端的版本是否相同?
终端的版本是否相同?
3061