Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
среднее время О(1) худшее O(n) и перформанс сильно зависит от хеша.
O(n) - это если в лоб совсем.
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранения и извлечения данных. Данная ветка создана для описания этих классов, примеров работы с ними а также для предложений по улучшению их работы.
Что такое Generic? Generic это специальные шаблонные классы, которые могут хранить пользовательские типы данных. При этом идентификация типа происходит в момент компиляции, за счет чего достигается высокая производительность.
Почему именно Generic? Как правило, начинающие программисты знакомы только с одним типом коллекции: массивом. Но есть множество задач, где работа с массивом неэффективна. Представьте себе, что у нас есть массив, состоящий из миллиона уникальных идентификаторов, например тысяча ордеров. Как проверить, есть ли в этой тысячи ордеров, один орден с номером N? Если использовать один из generic-классов эту задачу можно выполнить почти мгновенно, за константное время, которое не будет зависеть от количества элементов среди которых будет происходить поиск. Есть и другие задачи, где правильный алгоритм из коллекции generic может оказаться быстрее алгоритма придуманного программистом.
Тема интересная.
Лично мое мнение по этому вопросу, что не может быть ничего эффективней в программировании, чем умение правильно организовывать данные внутри массивов и правильно работать с этими массивами в циклах. Это - основа основ. Все остальные решения производные, которые забирают дополнительное время компьютера и создают оверхед.
Глобальные массивы, локальные массивы, циклы и функции. Все.
Кто может виртуозно владеть этими инструментами, тот будет впереди всех по эффективности.
имхо.
Предлагаю упростить названия - сделать их более логичными. Пример, CArrayList всё таки Array или List в mql5 есть имплементация и того и другого?
Это всё провоцирует вопросы и непонятки. ИМХО, надо косить под stl, а не под C# или Java. Или убрать тогда впереди C, пусть будет просто ArrayList.
...
А мне наоборот очень нравиться закос под C#.
Написал же очень четко
Посмотрите, что выделено.
Если можно примеры, например про поиск среди тысячи сделок.
Ок.
Тема интересная.
Лично мое мнение по этому вопросу, что не может быть ничего эффективней в программировании, чем умение правильно организовывать данные внутри массивов и правильно работать с этими массивами в циклах. Это - основа основ. Все остальные решения производные, которые забирают дополнительное время компьютера и создают оверхед.
Глобальные массивы, локальные массивы, циклы и функции. Все.
Кто может виртуозно владеть этими инструментами, тот будет впереди всех по эффективности.
имхо.
Пётр, притормозите пожалуйста. Тут будут обсуждать новые классы СБ, а не ваши абстрактные заявления. Не уводите пожалуйста тему в сторону. Спасибо.
Пётр, притормозите пожалуйста. Тут будут обсуждать новые классы СБ, а не ваши абстрактные заявления. Не уводите пожалуйста тему в сторону. Спасибо.
Я имею право высказать свое мнение? Или оно нетерпимо для вас?
Я имею право высказать свое мнение? Или оно нетерпимо для вас?
Ваше мнение - это как правило трактат "Война и мир" в трёх томах. Поэтому лучше воздержитесь.
Обратите внимание - это вторая просьба от модератора.
O(n) - это если в лоб совсем.
Нет. O(n) получается из-за коллизий хеша в очень редких случаях. Эти оценки сложности для оптимального алгоритма. Количество коллизий связано с оверхедом по памяти
В обычном случае искать по сути не надо, т.к. вычислив хеш мы по сути уже знаем расположение нужного элемента