powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность доступа к многомерному массиву
25 сообщений из 63, страница 2 из 3
Производительность доступа к многомерному массиву
    #34278207
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov[quot Stpl]
HyperIndex - вещь конечно хорошая, но не стоит забывать об объемах. Особенно на больших массивах данных и уж тем более
при bit-slicing. Ну вот такой пример: при 200,000,000 записей в БД получаем 3125 chunks
по 64,000 бит на одно значение. Я не уверен, что это разумный подход.

Не очень понятно, в чем неразумность данного подхода.
Подход может быть разумен или не разумен для каких-то определенных задач.

Объем индексов в Hyperindex будет действительно большой, но зато можно обеспечить очень быстрый поиск.

В MOLAP вообще есть такое понятие как "взрыв данных".
Когда данных очень много и в MOLAP хранятся заранее вычисленные агрегаты.
И все равно для ряда задач (когда данных немного) такая технология используется. Для других используется ROLAP и т.д.

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

Вадим
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34278486
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimFОбъем индексов в Hyperindex будет действительно большой, но зато можно обеспечить очень быстрый поиск.

Ну хорошо, обратимся опять же к моему примеру:
Итак, 200,000,000 записей, bitmap-индекс по одному из данных. Задача: быстрая выборка
соответствующих записей по заданному значению индекса. Реализация: читаем 3,125 chunks
битмапов, по каждому из них "очень быстро" вычисляем номера записей, а потом уже эти записи
читаем. Ну и чего, спрашивается, выигрываем? 3,125 константных чтений, даже если
результатом является только одна запись?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34278576
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зет Sergei Obrastsov >>Странный ответ. Так как ходим до 8-го уровня-то, через $Query или 8 вложенных циклов?
Нет никакого смысла обрабатывать всё уровни одновременно. Так что конечно циклы - но они разнесены - каждый кусок кода работает со своей частью.

Это очень интересно. Я бы очень хотел увидеть как можно добраться до 8-го уровня, минуя
предыдущие 7.

Зет
>>Не разумнее ли было бы переписать так:
Нужно будет взглянуть.... ссылка на последний "глобал" ?
В кирстене такой подход не рассматривается :( хотя встречал его в некоторых %рутинах

Стандартный выход на "неполный синтаксис", для обработки узлов на одном уровне - наиболее
быстрый вариант, вот тут уж точно быстрее не придумаешь, не меняя структуры. Объяснить чем
плохо @pos@(i) в цикле?

Зет
>>Замечательный подход. :)
структур может быть несколько одинаковых в разных узлах или просто в разных глобалах.

Поясните пожалуйста эту фразу, я ничего не понял.

Зет
Лично я использую для переноса расчетов в локальную память.

То есть используем косвенность для выборки данных, потом переносим их в "локальную память",
а уж потом считаем? Я ничего не напутал? А что это за "расчеты в локальной памяти", можно
поподробнее?

Зет
>>На пальцах? Давайте конкретные примеры, посмотрим.
Не понял .... возьмите $d - в языке есть нечто более эффективное для её функции ?
Смотря в каком случае. Я же говорю, на пальцах неудобно, нужно смотреть конкретные примеры.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34278604
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StplТ.е. как я понимаю ^Data("d", ^Data("o"... могут понадобится как дополнительные глобалы а не как замена ^Data(Org,Account,Date)
Или я никак не пойму чтото главное?

Главное здесь - уход от "длинной структуры" вида ^Data(i1,i2,i3...i10)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34278716
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovГлавное здесь - уход от "длинной структуры" вида ^Data(i1,i2,i3...i10)ок, попробуем.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34279239
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov >>Это очень интересно. Я бы очень хотел увидеть как можно добраться до 8-го уровня, минуя предыдущие 7.

Непонятно что тут интересного - я ж такого не писал.
Одна процедура обрабатывает три уровня вторая два - остальные выбираються либо из параметров либо из результатов расчета.
8-мь это максимальный уровень - наиболее часто используемый как был 2-3 так и остался

>>Объяснить чем плохо @pos@(i) в цикле?
Если вы про быстрее то не нужно - объясните лучше - в теле цикла с неполным синтаксисом можно использовать пробег по другим "глабалам" ?

>> Поясните пожалуйста эту фразу, я ничего не понял.
Код: plaintext
1.
2.
3.
w $$CalcSubNode("^data1(1,2,3)")
w $$CalcSubNode("^data2(1,3)")
w $$CalcSubNode("array(5)")

>>То есть используем косвенность для выборки данных, потом переносим их в "локальную память",
а уж потом считаем? Я ничего не напутал? А что это за "расчеты в локальной памяти", можно
поподробнее?

Локалка используется в зависимости от объема данных. А расчеты обычные - не олап.
Отгрузить, разбить на подпериоды, произвести 5-6ть пересечений, тарифицировать, получить план, сделать предвариловку за полгода и т.п.

>>Смотря в каком случае. Я же говорю, на пальцах неудобно, нужно смотреть конкретные примеры.
Боюсь что окончательно вас не понял.... вы про алгоритмически достижимую скорость ?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34280807
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большая просьба от владельца триальной версии (у нее размер кэша 2М если я не ошибаюсь)

Попробуйте пожалуйста запустить на комерческой версии вложенный тест и отпостите (или на stpl@mail.ru) пожалуйста строку со временем выполения и желательно с некоторыми параметрами железа, по крайней мере память,процессор.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281462
ГР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
%SYS>w $zv
Cache for Windows NT (Intel) 5.0.21 (Build 6408) Tue Jan 3 2006 13:28:20 EST
%SYS>zn "test"

TEST>d ^test
assign global: 1000x500x100...
50000000values assigned in 50.218sec and read in 52.829sec

TEST>

-----
Процессор - AuthenticAMD ~1809 МГц
объем памяти 1 048 048 КБ
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281527
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! а результаты любопытные. Я думал на коммерческой версии будет быстрее за счет большего кэша (а так результаты эквивалентные видимо за счет более быстрого процессора) и странно что чтение получилось дольше записи. (У меня на триале существенно быстрее записи)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281586
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl Спасибо! а результаты любопытные. Я думал на коммерческой версии будет быстрее за счет большего кэша (а так результаты эквивалентные видимо за счет более быстрого процессора) и странно что чтение получилось дольше записи. (У меня на триале существенно быстрее записи)
Это из-за увеличения файла cache.dat при записи. :) Потому как разницы быть не должно,
все ссылки не совпадающие, от кэша толк минимальный. Я, честно говоря, не понял смысл
этого теста.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281670
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думал что обращение к "соседним" элементам массива будет покрываться кэшем и поэтому расчитывал на более быстрое чтение из массива.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281687
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stplя думал что обращение к "соседним" элементам массива будет покрываться кэшем и поэтому расчитывал на более быстрое чтение из массива.
Только не в случае большого количества ссылок. В этом случае кэш обновляется гораздо раньше, чем успевает сработать. :)
Конечно, какой-то выигрыш из-за размера кэша есть, но он маленький очень. В такой ситуации неплохо спросить себя, а чего
собственно нужно-то? Быстрый fullscan? Это несерьезно. Значит надо искать другие пути. Потому и дана свобода работы со с массивами, чтобы не перебирать их тупо от начала до конца. :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281708
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, спасибо
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34281995
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большой кэш дал бы эффект, если бы глобал ^Data полностью в него поместился. Для данного конкретного примера потребуется 700-800Мб кэша. Эффект проявился бы на последующих проходах по глобалу (если не килять его в конце, как в примере :). Но с кэшем 800Мб легко уходит в своп даже 1Гб PC...
Оценивать производительность, имея под рукой лишь триал, ИМХО, несерьезно. ISC временные ключи вроде бы выдает без проблем...
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34282117
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hampster-MumpsterБольшой кэш дал бы эффект, если бы глобал ^Data полностью в него поместился. Для данного конкретного примера потребуется 700-800Мб кэша. Эффект проявился бы на последующих проходах по глобалу (если не килять его в конце, как в примере :). Но с кэшем 800Мб легко уходит в своп даже 1Гб PC...
Ну засунул я его в кэш полностью, 700Mb, i/o отсутствует напрочь, выигрыш - 68%.
Даже не в разы. Не знаю, что у Вас там "уходит в своп", у меня как раз 1Gb PC. :)
Вывод: система действует с кэшем в 30Mb при работе с таким массивом , почти одинаково
как и с 300Mb, сиречь на максимуме возможностей. Ну а чему удивляться-то?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34282167
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovНу засунул я его в кэш полностью, 700Mb, i/o отсутствует напрочь, выигрыш - 68%.
Соврал. 32%, совсем разучился считать. :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34282200
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34291645
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StplВсем спасибо!Как успехи в построении БД?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34291688
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
увы, пока отказался от Caché. Возможно я чтото не понимаю в этой жизни, но ч.б. сделать нужную мне "модель" мне придется заниматься обычным программированием на каше. Мне кажется для этого есть более подходящие языки программирования.
А использовать Caché только для хранения многомерных данных довольно накладно.
В общем на мой взгляд Caché и COS в частности это средство не программирования а работы с данными (пусть даже это объекты), и для моих данных я не нашел в каше готовой поддержки, а программировать ее на COS рука не поднимается.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34291902
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stplувы, пока отказался от Caché. Возможно я чтото не понимаю в этой жизни, но ч.б. сделать нужную мне "модель" мне придется заниматься обычным программированием на каше. Мне кажется для этого есть более подходящие языки программирования.
Более подходящие для чего? Для работы с данными? Очень сомневаюсь в этом. :)

Stpl
А использовать Caché только для хранения многомерных данных довольно накладно.
Согласен.

Stpl
В общем на мой взгляд Caché и COS в частности это средство не программирования а работы с данными (пусть даже это объекты), и для моих данных я не нашел в каше готовой поддержки, а программировать ее на COS рука не поднимается.
Ну, что тут скажешь? Каждый привык к чему-то своему. Кому-то готовые решения подавай, а кто-то и сам их создает.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34291991
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov Stplувы, пока отказался от Caché. Возможно я чтото не понимаю в этой жизни, но ч.б. сделать нужную мне "модель" мне придется заниматься обычным программированием на каше. Мне кажется для этого есть более подходящие языки программирования.
Более подходящие для чего? Для работы с данными? Очень сомневаюсь в этом. :)
скорее для вычислений. Например нужен алгоритм для какогото расчета по имеющимся в базе данным. Извелечь данные Caché может лучше всех. А дальше мне надо написать код вычислений. Так вот этот код как раз писать на COS мне и не хочется (а вынести это в другой слой приложения тоже не получится т.к. он д.б. в непосредственной близости к данным изза постоянной работы с ними)

Sergei Obrastsov Stpl
В общем на мой взгляд Caché и COS в частности это средство не программирования а работы с данными (пусть даже это объекты), и для моих данных я не нашел в каше готовой поддержки, а программировать ее на COS рука не поднимается.
Ну, что тут скажешь? Каждый привык к чему-то своему. Кому-то готовые решения подавай, а кто-то и сам их создает.
вот мне и придется самому их создавать. И если это задача для программирования, то и язык имхо должен быть языком программирования а не скриптом.
Впрочем уверен что тот кто много лет работает с Caché скажет что там можно сделать все.
Может он даже будет прав. Но тогда мне в команду нужен такой человек.
хм... поспрашивать чтоли...
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292061
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl
скорее для вычислений. Например нужен алгоритм для какогото расчета по имеющимся в базе данным. Извелечь данные Caché может лучше всех. А дальше мне надо написать код вычислений. Так вот этот код как раз писать на COS мне и не хочется (а вынести это в другой слой приложения тоже не получится т.к. он д.б. в непосредственной близости к данным изза постоянной работы с ними)
На COS действительно можно реализовать любой алгоритм обработки этих данных, и единственное, что может помешать этому - быстродействие полученной программы (подобные системы изначально не предназначались, например, для сложных математических вычислений). Но это преодолимо, есть прекрасный механизм - CallIn, программа обработки может быть написана например на С, и Cache в этом варианте занимается единственным делом, хранит и предоставляет данные.

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

Хотелось бы понять, чем скрипт отличается от языка программирования, чтобы сделать вывод, что такое COS :-)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292196
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автордля моих данных я не нашел в каше готовой поддержки, а программировать ее на COS рука не поднимается.
Станислав, предложение посетить "подвальчик на В.О." остается в силе :) Возможно, Вы найдете здесь недостающую вам готовую поддержку.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292207
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCatНа COS действительно можно реализовать любой алгоритм обработки этих данных, и единственное, что может помешать этому - быстродействие полученной программы (подобные системы изначально не предназначались, например, для сложных математических вычислений). Но это преодолимо, есть прекрасный механизм - CallIn, программа обработки может быть написана например на С, и Cache в этом варианте занимается единственным делом, хранит и предоставляет данные.
ну вот еще один из пробелов ознакомления, я на это не обратил внимания. Посмотрю.

Stpl
Хотелось бы понять, чем скрипт отличается от языка программирования, чтобы сделать вывод, что такое COS :-)
имхо скрипт это то что не компилируется в выполнимый код. Одна из побочных проблем скриптов и COS в частности это невозможность полного синтаксического контроля при компиляции. Думаю список может быть длинным, а я про наболевшее :)

в целом у меня серьезных вычислений нет. Взамен стоит задача расчета/аггрегации данных многомерном массиве. Это можно описать примерно так:
многомерная матрица с деревьями на гранях/размерностях и работа с ней (хранение и быстрый многопотоковый доступ).
Быстрое выявление зависимых и зависящих ячеек. При этом зависимости
строятся комбинацией деревьев размерностей + дополнительными связями отдельно
накладываемыми на матрицу.
Стоит еще учитывать такое свойство дерева как наличие или отсутствие данных в узлах.
Из всего пространства этой матрицы и зависимостей вычисляется непустое
(оптимизированное) на данный момент множество с которым будет вестись основная
работа.
При изменении непустых ячеек "меняются" непустые зависимые.
При добавлении/удалении данных меняется оптимизированное пространство.
Дальше уровень агрегирования данных позволяющий вычислять данные для узлов
на основании дерева зависимостей и свойств узлов/листьев (например унарные операторы) а также заданной степени агрегации (для исключения взрывного роста объемов)

Т.е. арифметика то простая, а все остальное обычное программирование.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292286
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl Sergei Obrastsov Stplувы, пока отказался от Caché. Возможно я чтото не понимаю в этой жизни, но ч.б. сделать нужную мне "модель" мне придется заниматься обычным программированием на каше. Мне кажется для этого есть более подходящие языки программирования.
Более подходящие для чего? Для работы с данными? Очень сомневаюсь в этом. :)
скорее для вычислений. Например нужен алгоритм для какогото расчета по имеющимся в базе данным. Извелечь данные Caché может лучше всех. А дальше мне надо написать код вычислений. Так вот этот код как раз писать на COS мне и не хочется (а вынести это в другой слой приложения тоже не получится т.к. он д.б. в непосредственной близости к данным изза постоянной работы с ними)
M писался именно для работы с данными, а не только для их хранения, что тоже немаловажно конечно.
Если вспомнить, что характеризует медицинские данные, то это статистика в первую очередь.
Что касается расчетов, то это абсолютно не проблема. И совсем не стоит думать о каких-то там
пресловутых "тормозах". Речь ведь не о том, что в каком-то другом языке операция сложения
происходит в 10 раз быстрее, а об удобстве работы с данными. Впрочем не хочу уподобляться
рекламисту, всегда можно сравнить. Я например сравнивал. :)

Stpl
вот мне и придется самому их создавать. И если это задача для программирования, то и язык имхо должен быть языком программирования а не скриптом.
Причем тут "скрипт"? Что ты вообще понимаешь под этим словом в отношении ЯП? Cache Object
Script смущает? Ну так это "маркетинговый ход", чтобы уйти от слова MUMPS, а заодно подчеркнуть
свои фенечки. :)

Stpl
Впрочем уверен что тот кто много лет работает с Caché скажет что там можно сделать все.
Может он даже будет прав. Но тогда мне в команду нужен такой человек.
хм... поспрашивать чтоли...
Так оно и есть. Просто ради интереса можно поинтересоваться у окружающих, кто и чего на нем
писал. Что насчет "поспрашивать", так никто ведь и не против помочь. Я так завсегда. :)
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 2 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность доступа к многомерному массиву
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]