powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность доступа к многомерному массиву
63 сообщений из 63, показаны все 3 страниц
Производительность доступа к многомерному массиву
    #34274694
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Cache' есть прекрасная вещь – многомерные массивы.
Они мне прекасно подходят для хранения кэшированных расчетных данных в таком варианте:
^Data(dim1,dim2,dim3,….dim10)
Массив разряженный, кол-во возможных елементов по "первым" трем-четырем размерностям около 1000, еще нескольким размерностям - несколько сотен, оставшиеся - несколько десятков.
В массиве предполагается хранить double+int+int

Чего можно ожидать от доступа к такому массиву? Приличной производительности или полных тормозов?
Может быть есть рекомендации для таких случаев? Например не более X размерностей если кол-во елементов >Y или чтото еще?
Спасибо,Стас
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34274747
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или это случай когда надо брать обычный Persistent класс и строить bitmap индексы?
Если да какой порядок разницы в производительности ожидать по сравнению с массивом?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275087
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StplВ Cache' есть прекрасная вещь – многомерные массивы.
Они мне прекасно подходят для хранения кэшированных расчетных данных в таком варианте:
^Data(dim1,dim2,dim3,….dim10)
Массив разряженный, кол-во возможных елементов по "первым" трем-четырем размерностям около 1000, еще нескольким размерностям - несколько сотен, оставшиеся - несколько десятков.
В массиве предполагается хранить double+int+int

Чего можно ожидать от доступа к такому массиву? Приличной производительности или полных тормозов?
Может быть есть рекомендации для таких случаев? Например не более X размерностей если кол-во елементов >Y или чтото еще?
Спасибо,Стас
Сомнительно, что необходима такая глубина. Обычно 4-5 - уже предел, глубже лезть нет смысла.
Не забывай, что добираться до нижних уровней придется через верхние, а это ненавидимые всеми
р-субдшниками (sic!) вложенные циклы, не очень удобно. :) Неплохо было бы посмотреть что за данные,
может подсказал бы другой вариант. Что то double, int и прочего, нет в M типизации,
и в объектах она ложная, можно конечно паковать через $zl, $zw, но ведь и распаковывать
придется. :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275243
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovСомнительно, что необходима такая глубина. Обычно 4-5 - уже предел, глубже лезть нет смысла.
Не забывай, что добираться до нижних уровней придется через верхние, а это ненавидимые всеми
р-субдшниками (sic!) вложенные циклы, не очень удобно. :)

имхо у меня не совсем так: логика построения значений индекса для доступа к массиву всеравно отдельная. Т.е. вызывать ^Data(1000,500,1) или ^Data(33,800,999) определяется отдельной "бизнес:)логикой" и какими средствами она расчитывает индексы сейчас не так важно.
меня больше интересует эффективность доступа к тому что я записал в массив т.е.
set ^Data(1000,500,1)=DataItem
...
$Data(^Data(1000,500,1),DataItem)

Или такой подход совсем неверный?

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

не хочется загружать конкретными проблемами, это скорее задача для пилота от Intersystems :)
с OLAP вы знакомы на уровне общих представлений? Если да то могу попробовать описать в их "терминах", это наверное немного удобнее.

Sergei Obrastsov
Что то double, int и прочего, нет в M типизации,
и в объектах она ложная, можно конечно паковать через $zl, $zw, но ведь и распаковывать
придется. :)
сорри: %Double, %Integer
я планировал писать в массив объекты простого класса например:

Код: plaintext
1.
2.
3.
4.
Class My.DataItem Extends (%SerialObject)
{
  Property dValue As %Double;
  Property iValue As %Integer;
}

Доступа к ^Data "извне" не будет. бизнес-слой будет спрашивать значение у другого класса, который:
- определяет индексы для запрошенных данных
- провереяет наличие их в ^Data
- если их еще нет, или они помечены как устаревшие то считывает их "перебирая" ^Data() для зависимых данных и записывает результат тудаже в ^Data.

При изменении исходных данных (в другом классе) срабатывает или триггер или например %OnAfterSave которые для всех данных зависящих от измененных и существующих в ^Data выставляют флажок Dirty (моя пропертя) и записывает изменный DataItem в ^Data

Это совсем криво или не очень?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275311
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl
имхо у меня не совсем так: логика построения значений индекса для доступа к массиву всеравно отдельная. Т.е. вызывать ^Data(1000,500,1) или ^Data(33,800,999) определяется отдельной "бизнес:)логикой" и какими средствами она расчитывает индексы сейчас не так важно.


автор
Они мне прекасно подходят для хранения кэшированных расчетных данных в таком варианте:
^Data(dim1,dim2,dim3,….dim10)

Это кто писал? :) В данном варианте получается 10 уровней, что несколько пугает.

Stpl
меня больше интересует эффективность доступа к тому что я записал в массив т.е.
set ^Data(1000,500,1)=DataItem
...
$Data(^Data(1000,500,1),DataItem)

Или такой подход совсем неверный?

Почему "неверный"? Нормальный подход. Тем более я не знаю что и зачем хранится.

Stpl
не хочется загружать конкретными проблемами, это скорее задача для пилота от Intersystems :)
с OLAP вы знакомы на уровне общих представлений? Если да то могу попробовать описать в их "терминах", это наверное немного удобнее.

Пиши, попробуем разобраться.

Stpl
Sergei Obrastsov
Что то double, int и прочего, нет в M типизации,
и в объектах она ложная, можно конечно паковать через $zl, $zw, но ведь и распаковывать
придется. :)
сорри: %Double, %Integer

За что "сорри"-то? :) Я же говорю, это "ложная" типизация. На самом деле все пишется
символьной строкой.

Stpl
При изменении исходных данных (в другом классе) срабатывает или триггер или например %OnAfterSave которые для всех данных зависящих от измененных и существующих в ^Data выставляют флажок Dirty (моя пропертя) и записывает изменный DataItem в ^Data
Это совсем криво или не очень?
Да нормально это. Все-таки интересно было бы посмотреть на предполагаемые структуры.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275320
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество размерностей на скорость доступа особой роли не играет - вот количество узлов да.

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

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

Лично я такого не держу. У меня вообще весь расчет во времянке - зато легко реализуется предварительный расчет.

А рекомендуем сильнее использовать косвенную адресацию - она позволяет обходить кол-во размерностей.

>>set ^Data(1000,500,1)=DataItem ... $Data(^Data(1000,500,1),DataItem)

Наверное всё таки $Get а не $Data - скажем так - это максимально достижимая на Каше эффективность.

>>сорри: %Double, %Integer

Но уровне прямого доступа это один фиг.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275375
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnКоличество размерностей на скорость доступа особой роли не играет - вот количество узлов да.

Ну, конечно. Я посмотрю как Вы будете до 10-го уровня добираться.
Или "лихим наскоком", через $Query? А ежели данные на каждом уровне? :)

Ptn
А рекомендуем сильнее использовать косвенную адресацию - она позволяет обходить кол-во размерностей.

Точно-точно. При этом достигается сразу 2 цели: программа просаживается по скорости, что
очень радует окружающих и становится абсолютно нечитаемой, что очень радует сопровождающих.

Ptn
>>set ^Data(1000,500,1)=DataItem ... $Data(^Data(1000,500,1),DataItem)
Наверное всё таки $Get а не $Data - скажем так - это максимально достижимая на Каше эффективность.
Не факт.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275857
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stpl
Это совсем криво или не очень?

совет кашиста - рецидивиста

быстро сделайте основу программы без деталей и бантиков как угодно
но на рабочих реальных данных и запустите

затем вносите поправки уточнения по скорости
в узких местах

часто тормоз не там где думали
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275868
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov автор
Они мне прекасно подходят для хранения кэшированных расчетных данных в таком варианте:
^Data(dim1,dim2,dim3,….dim10)

Это кто писал? :) В данном варианте получается 10 уровней, что несколько пугает.

я писал:)
Да, в этом примере 10 уровней для организации глобала ^Data.

Sergei ObrastsovЯ же говорю, это "ложная" типизация. На самом деле все пишется символьной строкой.
а, ну да... не привык еще.

Sergei Obrastsov
Все-таки интересно было бы посмотреть на предполагаемые структуры.

CASE средствами увы не пользуюсь, а ч.б. выслать как-есть... пока еще нечего...
полные классы пока еще не рисовал т.к. борюсь с азами и синтаксисом.
Если вкратце "на словах". Объекты справочники - они же размерности в терминах olap:
OrgTree, AcountsTee,ProductsTree,BusinessTree,UserTree,... - это деревья по структуре: классы вероятно с parent-child Relationship "на себя" (обычное SQL решение, похоже в каше готовой поддержки нету. Наверное сделаю для них базовый классик с поддержкой нужных функций дерева)
Currencies,DataLevels,AccountingPeriods,...- классы для "обычных плоских" таблицы со своими пропертями
Основная таблица данных или фактов: класс с пропертями ID для каждой размерности (например OrgID, AccountID, Date, ….) и данными Value,Currency,…
ну и вспомогательные таблички типа ExchangeRates.
Если бы это было на олап моторчике то былабы еще размерность времени с несколькими иерархиями: Year-HalfYear-…. Year-Week-…. И т.п. Здесь встрою ее как есть внутрь расчетной части

^Data я предполагал как массив с доступом по полной комбинации всех ключевых размерностей, например ^Data(OrgID,AccountID,Date,….).

Это конечно не ответ на заданный вопрос но словесное описание нижнего слоя, надеюсь это обясняет почему в ^Data хочется много уровней. Дальше я еще не готов.... освоение целины продолжается
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34275871
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MX -- ALEX Stpl
Это совсем криво или не очень?

совет кашиста - рецидивиста

быстро сделайте основу программы без деталей и бантиков как угодно
но на рабочих реальных данных и запустите

затем вносите поправки уточнения по скорости
в узких местах

часто тормоз не там где думали
пытаюсь.... медленно получается ;) в смысле не пишется очень медленно :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276071
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl^Data я предполагал как массив с доступом по полной комбинации всех ключевых размерностей, например ^Data(OrgID,AccountID,Date,….).

Это конечно не ответ на заданный вопрос но словесное описание нижнего слоя, надеюсь это обясняет почему в ^Data хочется много уровней. Дальше я еще не готов.... освоение целины продолжаетсяОбъяснять-то объясняет... И все-таки я советовал бы задуматься над структурой. Совершенно не обязательно делать
^Data(OrgID,AccountID,Date,...), когда можно сделать:

Код: plaintext
1.
2.
3.
^Data("d",Date,OrgID,AccountID)
^Data("o",OrgID,AccoutnID)
^Data("a",AccountID)

Это конечно всего лишь вариант "развешивания по веткам", но принцип надеюсь понятен.
Конечно хочется реализовать то, что видишь сразу, но обычно приходится либо возвращаться
и переписывать все структуры, либо мучиться с промежуточными массивами, делая то же
самое, что предлагаю я, только на единственной "узкой" структуре и только на время конкретного
запроса. Выигрыша понятное дело никакого.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276097
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX -- ALEX Stpl
Это совсем криво или не очень?

совет кашиста - рецидивиста

быстро сделайте основу программы без деталей и бантиков как угодно
но на рабочих реальных данных и запустите

затем вносите поправки уточнения по скорости
в узких местах

часто тормоз не там где думали
Плохой совет. :(
Обычно это приводит к неуклюжей программе/комплексу, который больше половины своего
времени тратит на создание промежуточных массивов, только из-за того, что структуры
не были продуманы изначально. Не надо давать такие советы новичкам, плохих программ
и без этого полным-полно.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276168
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovЭто конечно всего лишь вариант "развешивания по веткам", но принцип надеюсь понятен.

конечно понятен но не подходит. Данные в ^Data мне нужны на пересечении всех размерностей. Т.е. данные за AccountID=1 сами по себе не имеют смысла, они появляются только когда определены все остальные размерности Date,OrgID и т.д.
А этот вариант подошелбы например для реализации олаповских запросов по неполным размерностям, там действительно можно спросить данные например только по одной размерности, при этом для всех остальных будет принято некоторое дефолтное значение. Но мне это сейчас не нужно, я подбираю хранение результата на пересечении всех размерностей/индексов.

Например HyperIndex из этой области, но я думал попытаться обойтись глобалом т.к. данных не так уж и много. и я полагал что простой глобал быстрее таблицы пусть даже с bitmap индексами
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276192
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovПлохой совет. :(
Обычно это приводит к неуклюжей программе/комплексу, который больше половины своего
времени тратит на создание промежуточных массивов, только из-за того, что структуры
не были продуманы изначально. Не надо давать такие советы новичкам, плохих программ
и без этого полным-полно.
Я в защиту MX -- ALEX! Я сейчас "плохо видеть и говорить на M, COS и т.п." и одним теоретическим проектированием тут мне не обойтись, нужны эксперименты, и как раз именно сейчас. потом будет поздно потому что их небыло вначале :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276348
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovНу, конечно. Я посмотрю как Вы будете до 10-го уровня добираться.
Или "лихим наскоком", через $Query? А ежели данные на каждом уровне? :)

Ну зачем же так жестоко - данные они ж с определенным умыслом так зафигачены. У меня правда всего 8-мь уровней

Sergei Obrastsov
Точно-точно. При этом достигается сразу 2 цели: программа просаживается по скорости, что
очень радует окружающих и становится абсолютно нечитаемой, что очень радует сопровождающих.

насчет скорости - чем то всё равно придётся жертвовать а вот насчет читабельности резко не соглашусь - косвенность позволяет выделить обработу отдельных кусков - в нормальню запись.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CalcSubNode(pos) {
new sum,i,tmp
set sum= 0 ,i="" for { set i=$o(@pos@(i), 1 ,tmp) quit:i=""  
     set sum=sum+tmp
}
quit sum
}
#;А для удобства обычно пишут маркос и всего делов
#define index1(%pos,%a)  @%pos@(%a)

set sum= 0 ,i="" for { set i=$o($$$index(pos,i), 1 ,tmp) quit:i=""  
И потом кому кукое дело где реально этот узел лежит - хоть запереносись его по реальной структуре

>>Не факт.

Поясните ?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276860
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn Sergei ObrastsovНу, конечно. Я посмотрю как Вы будете до 10-го уровня добираться.
Или "лихим наскоком", через $Query? А ежели данные на каждом уровне? :)

Ну зачем же так жестоко - данные они ж с определенным умыслом так зафигачены. У меня правда всего 8-мь уровней

Странный ответ. Так как ходим до 8-го уровня-то, через $Query или 8 вложенных циклов?

Ptn Sergei Obrastsov
Точно-точно. При этом достигается сразу 2 цели: программа просаживается по скорости, что
очень радует окружающих и становится абсолютно нечитаемой, что очень радует сопровождающих.

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

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

Ptn
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CalcSubNode(pos) {
new sum,i,tmp
set sum= 0 ,i="" for { set i=$o(@pos@(i), 1 ,tmp) quit:i=""  
     set sum=sum+tmp
}
quit sum
}

Не разумнее ли было бы переписать так:

Код: plaintext
1.
2.
3.
4.
i $d(@pos@(i))
set sum= 0 ,i="" for { set i=$o(^(i), 1 ,tmp) quit:i=""  
     set sum=sum+tmp
}

а еще разумнее

Код: plaintext
1.
2.
3.
4.
i $d(@pos@(i))
set sum= 0 ,i="" for { set i=$o(^(i)) quit:i=""  
     set sum=sum+^(i)
}

Ptn
Код: plaintext
1.
2.
3.
4.
#;А для удобства обычно пишут маркос и всего делов
#define index1(%pos,%a)  @%pos@(%a)

set sum= 0 ,i="" for { set i=$o($$$index(pos,i), 1 ,tmp) quit:i=""  

Ага. Именно поэтому смущенно отводят глаза в сторону при вопросах о производительности SQL
и объектов в Cache.

Ptn
И потом кому кукое дело где реально этот узел лежит - хоть запереносись его по реальной структуре

Замечательный подход. :)

Ptn
>>Не факт.
Поясните ?
На пальцах? Давайте конкретные примеры, посмотрим.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276869
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StplЯ в защиту MX -- ALEX! Я сейчас "плохо видеть и говорить на M, COS и т.п." и одним теоретическим проектированием тут мне не обойтись, нужны эксперименты, и как раз именно сейчас. потом будет поздно потому что их небыло вначале :)
Эксперименты конечно нужны, но нельзя подходить к программе таким способом, дескать главное
начать, а потом поправим. К сожалению, на практике оказывается, что поправлять бывает поздно
и приходится уже идти начатым путем. Сколько раз на вопрос "А почему через ж...?" приходилось
слышать грустный ответ "Ну вот, так получилось, возвращаться уже поздно было". Посему совет:
лучше просидеть на старте больше положенного, зато получить удобные структуры.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276882
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovЭксперименты конечно нужны, но нельзя подходить к программе таким способом, дескать главное начать, а потом поправим. К сожалению, на практике оказывается, что поправлять бывает поздно и приходится уже идти начатым путем. Сколько раз на вопрос "А почему через ж...?" приходилось слышать грустный ответ "Ну вот, так получилось, возвращаться уже поздно было". Посему совет: лучше просидеть на старте больше положенного, зато получить удобные структуры.
абсолютно согласен. только я как раз на старте и сижу. причем похоже еще гдето в раздевалке :| но это мои проблемы...
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276888
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StplНо мне это сейчас не нужно, я подбираю хранение результата на пересечении всех размерностей/индексов.

Нда... Ну ладно, смотрим:

Код: plaintext
1.
^Data(OrgID,AccountID,Date,….). 

Получить данные по Date (я правильно полагаю что это дата?) можно только уже имея OrgID и
AccoutID. Ну а если необходима разбивка по датам? А если нужен конкретный диапазон дат?

Stpl
Например HyperIndex из этой области, но я думал попытаться обойтись глобалом т.к. данных не так уж и много. и я полагал что простой глобал быстрее таблицы пусть даже с bitmap индексами
HyperIndex - вещь конечно хорошая, но не стоит забывать об объемах. Особенно на больших массивах данных и уж тем более
при bit-slicing. Ну вот такой пример: при 200,000,000 записей в БД получаем 3125 chunks
по 64,000 бит на одно значение. Я не уверен, что это разумный подход.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276930
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stpl Sergei ObrastsovЭксперименты конечно нужны, но нельзя подходить к программе таким способом, дескать главное начать, а потом поправим. К сожалению, на практике оказывается, что поправлять бывает поздно и приходится уже идти начатым путем. Сколько раз на вопрос "А почему через ж...?" приходилось слышать грустный ответ "Ну вот, так получилось, возвращаться уже поздно было". Посему совет: лучше просидеть на старте больше положенного, зато получить удобные структуры.
абсолютно согласен. только я как раз на старте и сижу. причем похоже еще гдето в раздевалке :| но это мои проблемы...

Сергей
мне кажется в данной конкретной ситуации нашему уважаемому коллеге
все же надо ввязаться в драку и получить материал для размышлений

естественно опытный образец программы затем весь переписать заново
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34276934
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX -- ALEX Stpl Sergei ObrastsovЭксперименты конечно нужны, но нельзя подходить к программе таким способом, дескать главное начать, а потом поправим. К сожалению, на практике оказывается, что поправлять бывает поздно и приходится уже идти начатым путем. Сколько раз на вопрос "А почему через ж...?" приходилось слышать грустный ответ "Ну вот, так получилось, возвращаться уже поздно было". Посему совет: лучше просидеть на старте больше положенного, зато получить удобные структуры.
абсолютно согласен. только я как раз на старте и сижу. причем похоже еще гдето в раздевалке :| но это мои проблемы...

Сергей
мне кажется в данной конкретной ситуации нашему уважаемому коллеге
все же надо ввязаться в драку и получить материал для размышлений
естественно опытный образец программы затем весь переписать заново
Дык, Алекс, разве я спорю? :) Только вот кто ему скажет, что надо все переписать заново?
Работает, да работает. А плохие привычки приживаются влет.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34277268
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov
Код: plaintext
1.
^Data(OrgID,AccountID,Date,….). 
Получить данные по Date (я правильно полагаю что это дата?) можно только уже имея OrgID и
AccoutID. Ну а если необходима разбивка по датам? А если нужен конкретный диапазон дат?

тогда мы работаем с датами спустившись к ним по Org и Account.
А ^Data("d",Date) вроде мне ничего не даст т.к. мне туда и записать то ничего.
Можно конечно пойти по пути ^Data("OrgID,AccountID",Date) но это тогда скорее обычная таблица с составным ключем.
Sergei Obrastsov
Stpl
Например HyperIndex из этой области, но я думал попытаться обойтись глобалом т.к. данных не так уж и много. и я полагал что простой глобал быстрее таблицы пусть даже с bitmap индексами
HyperIndex - вещь конечно хорошая, но не стоит забывать об объемах. Особенно на больших массивах данных и уж тем более
при bit-slicing. Ну вот такой пример: при 200,000,000 записей в БД получаем 3125 chunks
по 64,000 бит на одно значение. Я не уверен, что это разумный подход.
наверное, но для таких количеств говорить о глобалах наверное тоже неразумно?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34277331
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stplтогда мы работаем с датами спустившись к ним по Org и Account.

А потом группируем по датам в другом массиве? :)

Stpl
А ^Data("d",Date) вроде мне ничего не даст т.к. мне туда и записать то ничего.

Да ну? А ^Data("d",Date,Org,Account) не получится? :)

Stpl
Sergei Obrastsov
HyperIndex - вещь конечно хорошая, но не стоит забывать об объемах. Особенно на больших массивах данных и уж тем более
при bit-slicing. Ну вот такой пример: при 200,000,000 записей в БД получаем 3125 chunks
по 64,000 бит на одно значение. Я не уверен, что это разумный подход.
наверное, но для таких количеств говорить о глобалах наверное тоже неразумно?
Серьезно?! Это еще почему?! Прекрасно все работает и для больших количеств :)
Просто использование bitmap должно быть разумным.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34277429
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov Stplтогда мы работаем с датами спустившись к ним по Org и Account.

А потом группируем по датам в другом массиве? :)
Stpl
А ^Data("d",Date) вроде мне ничего не даст т.к. мне туда и записать то ничего.

Да ну? А ^Data("d",Date,Org,Account) не получится? :)

а в чем тогда выигрыш по адресации к отдельным элементам?
если я правильно понял это нам дает возможность легко пройти по всем Date+Org или по Date независимо то Org и Account. Т.е. первыми вершинами дерева взять даты и использовать это при нарезке по датам. но дальше мне ведь надо искать нужные Org и Account.
Т.е. как я понимаю ^Data("d", ^Data("o"... могут понадобится как дополнительные глобалы а не как замена ^Data(Org,Account,Date)
Или я никак не пойму чтото главное?

Sergei ObrastsovСерьезно?! Это еще почему?! Прекрасно все работает и для больших количеств :)
Просто использование bitmap должно быть разумным.
у.... кофе мало выпил, ерунду написал. Глобал, таблица, здесь же они близнецы братья.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34277648
Зет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov >>Странный ответ. Так как ходим до 8-го уровня-то, через $Query или 8 вложенных циклов?
Нет никакого смысла обрабатывать всё уровни одновременно. Так что конечно циклы - но они разнесены - каждый кусок кода работает со своей частью.

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

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

>>На пальцах? Давайте конкретные примеры, посмотрим.
Не понял .... возьмите $d - в языке есть нечто более эффективное для её функции ?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #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
Производительность доступа к многомерному массиву
    #34292335
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stplимхо скрипт это то что не компилируется в выполнимый код. Одна из побочных проблем скриптов и COS в частности это невозможность полного синтаксического контроля при компиляции. Думаю список может быть длинным, а я про наболевшее :)
Нет ничего невозможного, когда речь идет о M :)

Stpl
в целом у меня серьезных вычислений нет. Взамен стоит задача расчета/аггрегации данных многомерном массиве. Это можно описать примерно так:
[...]
Т.е. арифметика то простая, а все остальное обычное программирование.
Ах, вкусная задачка, завидую :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292906
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hampster-MumpsterСтанислав, предложение посетить "подвальчик на В.О." остается в силе :) Возможно, Вы найдете здесь недостающую вам готовую поддержку.как насчет завтра? сейчас отпишусь Алексею мылом.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34292944
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovПросто ради интереса можно поинтересоваться у окружающих, кто и чего на нем
писал. Что насчет "поспрашивать", так никто ведь и не против помочь. Я так завсегда. :)
мне пока не притянуть чужой опыт. Я пытался поднять эту тему здесь но там обсуждались отдельные вопросы, мне этого оказалось недостаточно. Не отрицаю что виноват м.б. сам.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34293665
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stplкак насчет завтра?
ОК. Все же проверьте почту - там некоторые подробности :)
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34293785
Stpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hampster-MumpsterОК. Все же проверьте почту - там некоторые подробности :)Последнее ваше письмо было в 14:52 (я сразу ответил "ОК") а последний пост здесь в 16:50. похоже я остался без каких то подробностей? :) или просто несинхронность переписки? Если все без изменений то можно не отвечать.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34294571
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stpl Sergei ObrastsovПросто ради интереса можно поинтересоваться у окружающих, кто и чего на нем
писал. Что насчет "поспрашивать", так никто ведь и не против помочь. Я так завсегда. :)
мне пока не притянуть чужой опыт. Я пытался поднять эту тему здесь но там обсуждались отдельные вопросы, мне этого оказалось недостаточно. Не отрицаю что виноват м.б. сам.
Вины здесь никакой нет, конечно. Желательно все-таки разбить задачу на независимые куски и
рассматривать их по отдельности, так будет гораздо удобнее и намного проще спрашивать советы.
Скажем: фрагмент 1 - "структуры хранения данных", фрагмент 2 - "выборка данных для расчета",
фрагмент 3 - "непосредственный расчет" и т.д.
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34322568
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi!

Ptn
Вместо локальных переменных свыше 1000 узлов рекомендуеться использовать глобалы.
И не просто рекомендуется, а обязательно требуется.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34325576
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратите внимание на
Process-private Globals .

Вадим
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34343595
-Serg-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VadimFОбратите внимание на
Process-private Globals .

Вадим

И что, быстрей работает?
Начиная с какой версии это применимо?
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34344687
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Примерно" с Cache' 5.2

Ответы на такие вопросы стоит искать в Release Notes:

http://docs.intersystems.com/cache52/csp/docbook/DocBook.UI.Page.cls?KEY=GRN2


Вадим
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34345034
-Serg-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VadimF"Примерно" с Cache' 5.2

Ответы на такие вопросы стоит искать в Release Notes:

http://docs.intersystems.com/cache52/csp/docbook/DocBook.UI.Page.cls?KEY=GRN2


Вадим

Спасибо.
1. "Не каждая птица долетит до "_ 5.2
2. По указанному урл у меня форум с бразилии грузится, но понятно, что смотри docs.intersystems.com
т.е. пара общих слов ни о чем.
:(
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34345848
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Производительность доступа к многомерному массиву
    #34345854
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность доступа к многомерному массиву
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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