|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
||||||||||||||||
Массив из ссылок19.07.2017, 15:05. Показов 9495. Ответов 38
Метки нет (Все метки)
Здравствуйте!
Допустим, есть 2 массива:
0
|
||||||||||||||||
| 19.07.2017, 15:05 | |
|
Ответы с готовыми решениями:
38
Массив ссылок Массив из ссылок
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|
| 20.07.2017, 19:58 [ТС] | |
|
Так нет же - я как раз обновляю лишь один набор индикаторов, который является массивом all_ma, а потом составляю из них комбинации.
Проблема в том, чтобы рационально составлять комбинации.
0
|
|
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|
| 20.07.2017, 20:07 | |
|
Ваш вариант тестера имеет очень сложное состояние (state) - ну, потому что он пытается прожевать больше, чем в рот входит.
Из этого вытекают такие проблемы: сложность в сопровождении (трудно разом следить за всеми комбинациями); невозможность остановить тестер раньше срока, промежуточные данные будут потеряны (из-за сложности сохранения состояния тестера); неоправданный расход памяти;
0
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|
| 20.07.2017, 20:11 [ТС] | |
|
Fleder,
Следить за всеми комбинациями нет надобности, тк опираться будем на отчёт по окончании теста С остановкой нет проблем, зачем сохранять состояние тестера, если оно определенно на текущий момент? Неоправданный расход в памяти - поясните?) Каждый индикатор удаляет за собой значения, которые уже не нужны, поэтому если период MA равен 2, то для 60 версий данного индикатора будет занято максимум 120 значений для корректной работы.
0
|
|
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|
| 20.07.2017, 20:26 | |
|
Дело в том, что отчёт будет получен по окончании теста. А если тест будет длиться, скажем, сутки? И рубанут свет? И что? Всё заново!!!
Добавлено через 9 минут Расход памяти: Вы оптимизируете параметры индикаторов? Предположим, что в ТС всего одна машка, и оптимизация идёт по периоду сглаживания и по сдвигу. Например, получилось 100 вариантов этой машки. И зачем держать в памяти сразу 100 разных буферов, если можно держать только один буфер для одного прохода?
0
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|||
| 20.07.2017, 20:48 [ТС] | |||
|
Fleder, 100 буферов быстрее прогонятся, чем 100 проходов. Самая тормознутость - в симуляции дня. При чистых параметрах, просто при формировании свечек, уходит 15 секунд одного дня.
По моим подсчётам, 10000 вариантов будет тестироваться не больше 30 минут для одного дня. Не по теме: Почему одни оффтопы от Вас? Мне лишь нужно оптимизировать составление комбинаций - вот и всё! На счёт того,
0
|
|||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|||
| 21.07.2017, 04:06 | |||
|
Вам же этот массив, насколько я понял, всё равно не нужен никак кроме как для прогона тестов. Почему бы не сделать это заместо формирования этого массива? Вот это и будет экономия памяти, о которой вы так печётесь (тут не то, что лишних объектов классов не будет, тут даже массива ссылок не будет). Заверните "генератор комбинаций" в итератор (настоящий IEnumerable<T> или в метод возвращающий IEnumerable<T> с помощью yield return. И уже этот итератор скормите прогонщику тестов.Профит будет явный - нет даже массива мутного (со всем мутным же кодом, который понадобился бы для работы с этим массивом).
1
|
|||
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
||||||
| 21.07.2017, 11:51 [ТС] | ||||||
|
Usaga, смотрите, в чем смысл
Есть много так называемых ТаймФреймов, где хранятся некие индикаторы. Есть функция Process_Candle, которая вызывается очень много раз, в начале которой обновляются значения всех индикаторов. Так как значения у индикаторов новые, то необходимо обновлять массив, с которым столько раз, сколько комбинаций можно составить из индикаторов. И так происходит каждый вызов функции Process_Candle Как я понимаю, вы хотите создать один массив, где будут уже хранится готовые комбинации. Допустим, у нас есть N ТаймФреймов, где находится M индикаторов: Ind1, Ind2, ..., Ind_m. (у меня индикатор называется MA) У каждого индикатора есть по K версий, то есть они аналогичные индикаторы, только 1-ый считает среднеарифметическое, 2-ой среднее геометрическое и тд. Всего комбинаций у нас N * K ^ M. Если делать 1 массив, в котором будут хранится все комбинации, то у нас будет K ^ M одинаковых таймреймов для каждого n таймрейма, M * K одинаковых индикаторов для каждой версии (хм, точно не знаю, но лишние точно будут) ТаймФреймов у меня 2, примерно по 5 индикаторов в каждом ТаймФрейме и примерно по 5 версий индикаторов - 6250 вариаций, комбинаций. Представьте, как это хранить столько данных в одном массиве?) Причём еще обновлять их Но! Если не создавать лишних версий индикаторов, то так как число версий M каждого индикатора, то обновлять нужно будет N * K * M версий. (50 версий!! не 6250) Либо я не понимаю Вас, и Вы мне говорите то же самое) Либо, я плохо объясняю ситуацию) (хотя с последним всегда были проблемы )Вот рабочий код для моего случая. Но я не считаю его рациональным, так как заново создавать каждую комбинацию не очень хочется. Если бы можно было создать одну комбинацию, в которой хранились бы ссылки на экземпляры, а не сами экземпляры, то всё было бы идеально, по идее. Та самая MyLovelyFunc: Пока-что она использует только 4 варианта для Par1, 8 вариантов для tf[0].all_ma[0] и 10 вариантов для tf[0].ma[1]: 240 комбинаций (считает 1 неделю за 5 минут; раньше бы считало за день при параллельном тестировании)
0
|
||||||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 21.07.2017, 12:24 | |
|
Rodion2703, я как раз предлагаю НЕ создавать массив. Итератор у вас с массивом ассоциируется, что ли? Я предлагаю создать генератор комбинаций, который будет их (комбинации) выдавать по одной, по запросу. Код этого генератора уже выше привели, осталось его переработать, что бы он не брал данные из того же источника, куда сам данные записывает и готово.
1
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|||||||||||
| 21.07.2017, 12:33 [ТС] | |||||||||||
|
Usaga, то есть, реализация итератора будет выглядеть примерно вот так:
0
|
|||||||||||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
||||||
| 21.07.2017, 12:37 | ||||||
Сообщение было отмечено Rodion2703 как решение
Решение
Rodion2703, примерно да. Только скорее так:
1
|
||||||
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
||||||
| 22.07.2017, 12:46 [ТС] | ||||||
|
Usaga, большое спасибо! Не до конца понимал, что мне хотят донести)
Добавлено через 23 часа 58 минут !!!!!!!!!!! Оказалось всё намного проще, чем я думал...
Это и было то, что я имел ввиду (массив ссылок) ![]() Вначале просто создаём массив из комбинаций, но главное не создавая новые экземпляры.
0
|
||||||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 22.07.2017, 15:25 | |
|
Rodion2703, это называется "ссылочный тип данных". Вам об этом во втором или третьем посте сказали...
0
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|
| 22.07.2017, 15:27 [ТС] | |
|
Usaga, да, уже почитал) reference тип..
Извините за беспокойство) Добавлено через 14 секунд Usaga, да, уже почитал) reference тип.. Извините за беспокойство)
0
|
|
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 22.07.2017, 15:31 | |
|
Rodion2703, кстати, вариант с генератором комбинаций всё равно свою силу не утрачивает.
0
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
||||||
| 22.07.2017, 15:35 [ТС] | ||||||
|
Usaga, а в чём его польза?) Сейчас делаю так перед тестированием:
Если же делать итератор, то он пригодится только 1 раз) Пропала необходимость одного и того же перечисления несколько раз) Или для чего он еще полезен?
0
|
||||||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 22.07.2017, 15:43 | |
|
Rodion2703, польза итератора в том, что не требуется промежуточный массив, данные выгребаются только по мере надобности. Особенно это полезно, когда данные "бесконечные" или их ну очень много. Можно одновременно (если нужно) создавать множество итераторов над одними и теми же данными или сбрасывать (если предусмотрено итератором) уже имеющийся.
В принципе, я не настаиваю. Если вас ваше текущее решение устраивает, то ладно
1
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|
| 22.07.2017, 15:47 [ТС] | |
|
Usaga, разве итератор не возвращает как раз таки промежуточный массив?
Мне кажется, итератор здесь будет лишним, но всё равно спасибо)
0
|
|
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 22.07.2017, 15:50 | |
|
Rodion2703, итератор возвращает данные по запросу, по одной штуке\классу, а не весь возможный набор. В этом его фишка.
0
|
|
|
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
|
|
| 22.07.2017, 16:02 [ТС] | |
|
Usaga, да, я понимаю) Неправильно выразился: возвращает не промежуточный массив, а текущие данные, признаю.
В моём случае, думаю, надобности в создании отдельного итератора для создания комбинаций нету, т.к. если его и использовать по назначению, то только напрямую в функции. Просто, легче вызвать нужный массив по уже составленной комбинации под i`ым номером combo[i], чем каждый раз создавать в функции одни и те же комбинации) Reference тип - прям то, что было нужно)
0
|
|
| 22.07.2017, 16:02 | |
|
Помогаю со студенческими работами здесь
39
Редактировать массив ссылок Массив ссылок на функции
Массив ссылок на TEdit Задача на указатели. Массив ссылок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|