Обсуждение статьи "Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным" - страница 2

 
Очень хорошая и интересная статья. Спасибо.
[Удален]  
Хорошая статья и помощь новичкам
 

Я извиняюсь! 

Я только разбираюсь со списками и созданием объектов

Когда я начал тестировать и копаться в вашем коде нашел ошибку незначительную, но могу и ошибаться.

замер скорости в сравнении библиотек вашей и стандартной кто быстрей вы в описание говорите про одно, а на графике показываете другое. Это вы не заметили или я неправильно читаю график.?? 

П.П. 4.3 

 
BmC:

Я извиняюсь! 

Я только разбираюсь со списками и созданием объектов

Когда я начал тестировать и копаться в вашем коде нашел ошибку незначительную, но могу и ошибаться.

замер скорости в сравнении библиотек вашей и стандартной кто быстрей вы в описание говорите про одно, а на графике показываете другое. Это вы не заметили или я неправильно читаю график.?? 

П.П. 4.3 

В начале написал, что это действительно ошибка, но потом посмотрел график внимательней: нет, все правильно. На оси Y указано время, чем оно больше - тем медленнее работает добавление элемента. На графике видно, что добавление миллиона элементов в CArrayObj занимает 5 секунд, тогда как добавление этого же количества элементов в CDictionary занимает 1 секунду. Т.е. конкретно в задачах с большим последовательным добавлением элементов, модель перераспределения памяти у CDictionary выигрывает по сравнению со стандартной моделью перераспределения в CArrayObj, что и требовалось показать.

 
Vasiliy Sokolov:

В начале написал, что это действительно ошибка, но потом посмотрел график внимательней: нет, все правильно. На оси Y указано время, чем оно больше - тем медленнее работает добавление элемента. На графике видно, что добавление миллиона элементов в CArrayObj занимает 5 секунд, тогда как добавление этого же количества элементов в CDictionary занимает 1 секунду. Т.е. конкретно в задачах с большим последовательным добавлением элементов, модель перераспределения памяти у CDictionary выигрывает по сравнению со стандартной моделью перераспределения в CArrayObj, что и требовалось показать.

нет все таки ошибка. но это для меня уже не важно, а вот для остальных читателей да. которые также будут разбираться как и я с начала. То должно быть написано очень точно потому как уводит в далекое заблуждение. ))))

цитата:   Он использует макрос TEST_ARRAY. Если он определен, тест выполняет операции над CArrayObj, если нет - над CDictionary. Первый тест на добавление новых элементов выигрывает CDictionary.Его модель перераспределения памяти в данном конкретном случае оказалась лучше:

ДОЛЖНО БЫТЬ: Он использует макрос TEST_ARRAY. Если он "НЕ" определен, тест выполняет операции над CArrayObj, если "ДА" - над CDictionary. Первый тест на добавление новых элементов выигрывает CDictionary.Его модель перераспределения памяти в данном конкретном случае оказалась лучше:

Вся ошибка непосредственно в коде с начало идет заполнение списка через CDictionary, а потом если не определен макрос TEST_ARRAY идет CArrayObj вот здесь и получилась ошибка . Это от усталости над работой над одним материалом.

НО ОТЛИЧНЫМ И ТРУДОЕМКИМ. МНЕ ОЧЕНЬ ПОМОГ РАЗОБРАТЬСЯ. В УКАЗАТЕЛЯХ И СОЗДАНИЯХ ОБЪЕКТОВ. НУ ОЧЕНЬ ТЯЖЕЛО ВЪЕЗЖАЛ. А НУЖНО ЗА КОРОТКИЙ СРОК......

 

BmC:

МНЕ ОЧЕНЬ ПОМОГ РАЗОБРАТЬСЯ. В УКАЗАТЕЛЯХ И СОЗДАНИЯХ ОБЪЕКТОВ.

В MQL4 и MQL5 нет указателей, есть дескрипторы, это совсем другой компот.
 
Alexey Volchanskiy:
В MQL4 и MQL5 нет указателей, есть дескрипторы, это совсем другой компот.
Alexey Volchanskiy
:

В MQL4 и MQL5 нет указателей, есть дескрипторы, это совсем другой компот.

 Вы хотите сойти за умного или просто набираете себе рейтинг. Если у Вас нет времени прочитать и статью и то что я написал, то прошу Вас так больше не делать, а писать создателям MetaQuotes Software Corp., что у них есть или что должно быть, Но не сюда умным людям. Для таких будущих желающих как вы: www.mql5.com/ru/docs/basis/types/object_pointers. 

У вас наверно рейтинг только на таких глупых высказываниях набран. То тогда чем вы занимаетесь писать чушь 3000 раз. не устали. пройдите по ссылке если вам все ровно делать нечего прочитайте еще раз справку по MQL . Еслт вам так нужен рейтинг на глупых высказываниях то пишите создателям свои ГЛУПЫЕ идеи они там деньги за вас получают. 

Если вы не поняли, что я хотел сказать этим, то для примера Вам сообщаю, что вы еще глупого можете написать создателям: "Прошу Вас разработчиков MetaQuotes переименовать главу про "Указатели объектов" в главу "Дескрипторы объектов""

Дальше вы указываете причину тому: "Так как я на столько глуп и хочу что бы все мое глупое стало правдой и разумным высказыванием спаси меня "создатель".

на месте "создателя", а  бы вам посоветовал достать цветок "цветик семи-цветик". Но вам это не важно вы уже написали аж 3 высказывания. 3093+3=3096. Я вам помог теперь помогите мне не пишите больше здесь.

Я на форуме уже давно и ваши высказывания вижу они как всегда глупы и постоянны. Вы по теме пишите всегда отрывками и всегда поправляете всех, вот такими глупыми высказываниями. Я почему на вас так зол, потому-что, я тоже такой же пользователь начинающий который лезет на форум для пополнения знаний и когда такой "гуру" с 3000 рейтингом, что то пишет ему прислушиваешься. А ОН просто глупец который задался целью набить рейтинг себе. Он даже не задумывается, что своим высказыванием направляет читателя ветки в другую сторону.

еще раз извините. Если вы еще раз будете попадаться в моих ответах, то я буду настаивать на блокировку Вас и вы потеряете свой глупо набитый рейтинг. Тем более доказать вашу глупость модератору нечего не стоит, Ваши ответы всегда коротки по теме и глупы. 

[Удален]  

Уже сентябрь, а данного класса в стандартной библиотеке нет :)

Кстати вопрос по коду самого класса. Какой смысл был в конце кода дефайнить 

#define FOREACH_DICT(dict) for(CObject* node = (dict).GetFirstNode(); node != NULL; node = (dict).GetNextNode())
ведь ни где в примерах он даже не используется...
 
Konstantin Karpov:

Уже сентябрь, а данного класса в стандартной библиотеке нет :)

Кстати вопрос по коду самого класса. Какой смысл был в конце кода дефайнить 

ведь ни где в примерах он даже не используется...
Используется. В параграфе 5.3: "Методы для перебора элементов в словаре". Перебор словаря скорее напоминает перебор списка, поэтому операция перебора не совсем стандартная и содержимое for отличается от содержимого при классическом переборе массива. Дабы облегчить себе и пользователям жизнь и не вспоминать мучительно перебор узлов и был введен данный макрос. 
 
Вызываю господина советника