Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения - страница 2

 
Комбинатор:
среднее время О(1) худшее O(n) и перформанс сильно зависит от хеша.

O(n) - это если в лоб совсем.

 
Vasiliy Sokolov:


С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранения и извлечения данных. Данная ветка создана для описания этих классов, примеров работы с ними а также для предложений по улучшению их работы.

Что такое Generic?  Generic это специальные шаблонные классы, которые могут хранить пользовательские типы данных. При этом идентификация типа происходит в момент компиляции, за счет чего достигается высокая производительность.

Почему именно Generic? Как правило, начинающие программисты знакомы только с одним типом коллекции: массивом. Но есть множество задач, где работа с массивом неэффективна. Представьте себе, что у нас есть массив, состоящий из миллиона уникальных идентификаторов, например тысяча ордеров. Как проверить, есть ли в этой тысячи ордеров, один орден с номером N? Если использовать один из generic-классов эту задачу можно выполнить почти мгновенно, за константное время, которое не будет зависеть от количества элементов среди которых будет происходить поиск. Есть и другие задачи, где правильный алгоритм из коллекции generic может оказаться быстрее алгоритма придуманного программистом.

Тема интересная.

Лично мое мнение по этому вопросу, что не может быть ничего эффективней в программировании, чем умение правильно организовывать данные внутри массивов и правильно работать с этими массивами в циклах. Это - основа основ. Все остальные решения производные, которые забирают дополнительное время компьютера и создают оверхед.

Глобальные массивы, локальные массивы, циклы и функции. Все.

Кто может виртуозно владеть этими инструментами, тот будет впереди всех по эффективности.

имхо.

 
Ivan Gurov:

Предлагаю упростить названия - сделать их более логичными. Пример, CArrayList всё таки Array или List в mql5 есть имплементация и того и другого?

Это всё провоцирует вопросы и непонятки. ИМХО, надо косить под stl, а не под C# или Java. Или убрать тогда впереди C, пусть будет просто ArrayList.

...

А мне наоборот очень нравиться закос под C#.

 
fxsaber:

Написал же очень четко

Посмотрите, что выделено.

Посмотрел. Все правильно написано. Вам же ответили, поиск элемента в словаре осуществляется за среднее время O(1), т.е мгновенно.
 
Vladimir Karputov:
Если можно примеры, например про поиск среди тысячи сделок.

Ок.

 
Реter Konow:

Тема интересная.

Лично мое мнение по этому вопросу, что не может быть ничего эффективней в программировании, чем умение правильно организовывать данные внутри массивов и правильно работать с этими массивами в циклах. Это - основа основ. Все остальные решения производные, которые забирают дополнительное время компьютера и создают оверхед.

Глобальные массивы, локальные массивы, циклы и функции. Все.

Кто может виртуозно владеть этими инструментами, тот будет впереди всех по эффективности.

имхо.

Пётр, притормозите пожалуйста. Тут будут обсуждать новые классы СБ, а не ваши абстрактные заявления. Не уводите пожалуйста тему в сторону. Спасибо.

 
Artyom Trishkin:

Пётр, притормозите пожалуйста. Тут будут обсуждать новые классы СБ, а не ваши абстрактные заявления. Не уводите пожалуйста тему в сторону. Спасибо.

Я имею право высказать свое мнение? Или оно нетерпимо для вас?
 
Реter Konow:
Я имею право высказать свое мнение? Или оно нетерпимо для вас?
нет. потому как это мнение уже высказано 100 раз и здесь опять же со своим самоваром типа ооп зло и т.д. наслушались уже, тошнит от этого мнения.
 
Реter Konow:
Я имею право высказать свое мнение? Или оно нетерпимо для вас?

Ваше мнение - это как правило трактат "Война и мир" в трёх томах. Поэтому лучше воздержитесь. 

Обратите внимание - это вторая просьба от модератора.

 
fxsaber:

O(n) - это если в лоб совсем.

Нет. O(n) получается из-за коллизий хеша в очень редких случаях. Эти оценки сложности для оптимального алгоритма. Количество коллизий связано с оверхедом по памяти

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

Причина обращения: