|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
вылечить этот недуг может такая модификация алгоритма: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
которая, кстати, приведёт к заметному увеличению потока сущностей, сбрасываемых на диск: 1001-я сущность, например, будет сброшена полюбасу, потому что для неё (countOfBest >= runningCounter / 1000) перестанет выполняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 08:09 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Часть лучших потеряется, т.к. при добавлении элемента к результату по-хорошему надо заново пересмотреть весь поток. Например в первой тысяче были значения 100 и 99. Ячейка результата одна, поэтому сохранил только 100, а 99 пришлось пропустить. Поэтому размер результата надо выбрать на старте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 08:45 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
в цикле потока сразу же заполняется буфер из 1000 любыми значениями а уже потом из них вытаскивается самое мелкое, по которому ориентируется весь остальной поток до тех пор, пока в буфере не сменится это "самое мелкое" ТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 08:51 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
бабушкин зайчикТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем? Довольно очевидно, что он хочет в любой момент времени иметь ≈1/1000 лучших от полученных из потока. Иван FXS, сколько сущностей нужно оценить, прежде чем лучшие будут иметь хоть какой-то смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 09:41 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Ы2, ну тогда эта задача была решена ещё на 1-2 странице, в т.ч. и мной а далее ТС въезжал в очевидное и подбрасывал костыли. Динамический буфер тут идеальное решение, которое в конце потока выдаст 1000 самых-самых высоких значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 09:56 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
бабушкин зайчик ТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем? бабушкин зайчик которое в конце потока выдаст 1000 самых-самых высоких значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 13:27 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Иван FXS приведёт к заметному увеличению потока сущностей, сбрасываемых на диск: А ты не вызывай flush() и они останутся в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 13:49 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А ты не вызывай flush() и они останутся в памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 13:51 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Ы2 сколько сущностей нужно оценить, прежде чем лучшие будут иметь хоть какой-то смысл? Я уже писал вчера, что у меня, на самом деле, "пакетная" обработка данных, то есть мне необходимо осуществлять не один "поток записи на диск (типа, со скважностью 1/1000)", а как минимум 100 таких потоков одновременно. Но публика же на слове ловит: раз на вопрос "Тысяча? Десть тысяч? Миллион?" ( 22321305 ) ответил "миллиард" -- значит все, лапка завязла, птичке конец -- 1/1000 от миллиарда это миллион -- "ха-ха, всего-то". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 13:54 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Иван FXS доктор сказал "в морг", значит в морг. Вот поэтому-то выше я и говорил о программистах, которые в курсе работы кэша (который cache, а не cash). Но да, с диагнозом согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 14:21 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
бабушкин зайчик Динамический буфер тут идеальное решение, которое в конце потока выдаст 1000 самых-самых высоких значений И я не буду накапливать их в "динамическом буфере" -- посмотрите четвертую реплику в обсуждении (сейчас какая по счёту, черт, сколько тут реплик на странице помещается?!): Иван FXS каждая сущность " большая ", много больше, чем числовой параметр Q сам по себе, так что хранить их в памяти нельзя , можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 14:33 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Стандартное решение многократно предложено на первой странице, ТС его знает, но почему-то не приемлет. Смею предположить что он его отсек этим пунктом ТЗ: Иван FXS Также не желательно решение, предполагающее накопление (по ходу работы) всех числовых значений самого Q. Хотя бы потому, что оно является тривиальным. Только ты пойми что никто не предлагает хранить 100% сущностей. На всякий случай алгоритм хранения добавлю: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Просто последовательно пишешь нужные на текущий момент (!!! не все) сущности в файл, а в памяти хранишь значение Q и смещение в файле где эта сущность записана. При необходимости получения сущности открываешь файл сдвигаешь указатель на нужное смещение и читаешь. Дальше тюнинг работы с файлом с промежуточным кэшем в памяти частоиспользуемых значений и т.д. и т.п. Хотя за тебя ОС это сделает не хуже. Да, часть сущностей в какой-то момент станет ненужными, но повторяю что это далеко не все. Чтобы оценить точнее надо просто проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 15:15 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Иван FXS на шестой странице топика вы всё ещё не поняли, что мне не нужны ни 1000, ни даже 1/1000 (будем считать, что вы просто описАлись) "самых-самых высоких значений". Мне нужны сущности с "самыми высокими значениями", а не сами эти значения. До тебя так и не дошло, что разница между ними всего лишь в ссылке на саму сущность? Или это Визуальный Бейсик так людей портит?.. Иван FXS вы понимаете, что означают слова " большая " и " нельзя "? Вы, наверное, думаете, что если нельзя, но очень хочется, то можно?? Таки да, даже если большой дяденька запретил, "закон - как столб, можно и обойти". Способы-то обхода большинства ограничений и запретов самоочевидны или общеизвестны. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 15:33 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Dima T Стандартное решение многократно предложено на первой странице, ТС его знает Dima T Смею предположить что он его отсек этим пунктом ТЗ: Иван FXS Также не желательно решение, предполагающее накопление (по ходу работы) всех числовых значений самого Q . Хотя бы потому, что оно является тривиальным. Только ты пойми что никто не предлагает хранить 100% сущностей . А "этим пунктом ТЗ" я отсёк ровно то, что я им отсёк. Вы понимаете, что одобрив код, предложенный Dimitry Sibiryakov, и даже немного его поправив, я уже согласился (скрепя сердце) хранить в памяти всю кучу лучших значений Q? Не "всех числовых значений самого Q", как в том "пункте ТЗ", на который вы сейчас ссылаетесь, а "всех отобранных по критерию лучших числовых значений самого Q". Dima T Просто последовательно пишешь нужные на текущий момент (!!! не все) сущности в файл Dima T При необходимости получения сущности ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 15:35 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov разница ... в ссылке на саму сущность Иван FXS сущность ... хранить их в памяти нельзя, можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет Эта программа занимается "разыгрыванием" по методу Монте-Карло, для чего создаёт эти сущности из ничего, из ДСЧ (на основе контекста Монте-Карлемой задачи, конечно), после чего их --возможно -- сбрасывает на диск и -- точно! -- уничтожает. И никакие ссылки на них после этого указывать не могут. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 15:45 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Модератор: Мне кажется без конкретики (примеров данных, примеров кода) топик можно закрывать. Если за 6 страниц так и не смогли понять что надо ТСу, то наверно нет смысла продолжать в общих словах. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 15:52 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Dima T Если за 6 страниц так и не смогли понять что надо ТСу, то наверно нет смысла продолжать в общих словах ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:09 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Dima T Если за 6 страниц так и не смогли понять что надо ТСу проспаться ему надо. А то 6ю страницу догнать не может, что коли Q привязан к своей сущности, значит сущности можно сложить в БД/файл и дёргать оттуда нужные, когда понадобятся, а вся работа по отсеву идёт именно с Q. Иван FXS вы продолжаете путать Q и сущности -- как мне донести до вас, что это не одно и то же? тут собрались люди очевидно поумнее вас, и путаница вся только у вас в голове. 6ю страницу рассказываете про Q и сущность (из 3х параметров), которая к ней привязана. Уже давно все всё поняли и решение было ещё на 1-2 страницах. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:33 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Мож тогда лучше создать 2й топик, а этот продолжить? И новый (про Порог и Шаг) начать с необходиммой преамбулой (ну, мол, был 1й вариант - туда, в сад, а этот - сюда прошу)? Ну и здесь указатель поставиьть: прямо пойдёшь ..., налево пойдёшь ... Мне только кажется, что сложно с П и Ш ... Да, и нужно хотя бы в этом случае нормальное ТЗ написать, казалось бы, теперь уже возможно. П.с Поскольку пишу из танка, то так и не понял, запрет ли писать в БД часть промежуточных значений Q или других параметров? или это обсуждаемо, а если запрет, надо так и сказать: не обсуждать, или что-то ещё... мало ли кому что тривиально, и что для него из этого следует. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:43 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
бабушкин зайчик коли Q привязан к своей сущности, значит сущности можно сложить в БД /файл и дёргать оттуда нужные, когда понадобятся, а вся работа по отсеву идёт именно с Q Иван FXS Нужно отбирать из потока и сохранять на диске "самые лучшие" из сущностей (Писать в БД миллионы записей, которые точно потом не понадобятся -- это великое программистское искусство!) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:45 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
exp98 Мож тогда лучше создать 2й топик ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:50 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Я предлагаю этот топик закрыть. Вроде все уже высказались. А выборки из бесконечных труб и хранение поднять совершенно отдельной темой с другой формулировкой, если надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:55 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Иван FXS, нет, я не модер, я другой. И как раз самое время, ИМХО, на фоне возросшего понимания задачи (своей же задачи, замечу), переформулировать задачу, устранив выявившиеся умолчания и взаимонепонимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 16:59 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
exp98, я не понимаю, что значит "переформулировать задачу" ... разве что поднять из 4-й реплики в тело поста Иван FXS каждая сущность "большая", много больше, чем числовой параметр Q сам по себе, так что хранить их в памяти нельзя, можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет. Наверное, мне стоило сразу сказать, что речь идет о методе Монте-Карло, так что то, что часть "не самых плохих" сущностей потеряется -- не критично ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 17:07 |
|
Как отбирать из потока 1/1000 лучших экземпляров?
|
|||
---|---|---|---|
#18+
Иван FXS, моё дело предложить. И ещё раз напомнить, что краткость не всегда естть сестра таланта. И снова напомнить, что следствия из умолчаний или неоднозначностей часто отличаются у разных людей, несмотря даже на некую, якобы строгую, терминологию. Банальность, а не все это понимают по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2021, 17:21 |
|
|
start [/forum/topic.php?fid=16&msg=40070963&tid=1339663]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 441ms |
0 / 0 |