powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
19 сообщений из 19, страница 1 из 1
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38099734
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для сложного отчета генератор составил программу, где в одной из команд
получилось 140 имен в скобках
set (a,b,c,....)=0

Облом : оказалось предел=128 имен

Пришлось дописывать генератор

Возьмите на заметку - это может проявиться по другому поводу
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38099837
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MX-9Для сложного отчета генератор составил программу, где в одной из команд
получилось 140 имен в скобках
set (a,b,c,....)=0
Облом : оказалось предел=128 имен Можно для простоты заменить на for:
Код: plaintext
1.
2.
3.
сгенерировать строку с переменными
USER>set s="" for f = 1:1:200 set s=s_"a"_f_","
потом в цикле обнулить:
USER>for f = 1:1:1000 set sa=$piece(s,",",f) quit:sa=""  set @sa=0
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38099860
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuMX-9Для сложного отчета генератор составил программу, где в одной из команд
получилось 140 имен в скобках
set (a,b,c,....)=0
Облом : оказалось предел=128 имен Можно для простоты заменить на for:
Код: plaintext
1.
2.
3.
сгенерировать строку с переменными
USER>set s="" for f = 1:1:200 set s=s_"a"_f_","
потом в цикле обнулить:
USER>for f = 1:1:1000 set sa=$piece(s,",",f) quit:sa=""  set @sa=0

Так и было - до перестройки

Существенно проигрывает по скорости - пришлось переделать,
и не только это, на один SET

Теперь $$getObject.. идут заметно быстрее,
большие отчеты укладываются в лимитные 10 секунд
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38099889
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 ,

ДокументацияThe maximum number of assignments you can perform with a single invocation of SET is 128.
источник
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38100971
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9Возьмите на заметку ...
Лучше взять на заметку так вообще не делать.
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38100972
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9Существенно проигрывает по скорости ...
Знавал я одного такого спринтера... Он, по его словам, даже учитывал движение считывающей головки жесткого диска!
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101021
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, что krvsa еще не видел больших глобалов :)
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101045
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 , х/з как глобалов... А вот такого количества локальных переменных и к тому же равных нулю не видел точно!
Я даже такой надобности в них представить себе не могу...
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101059
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А безаргументная форма команды set, думаете, что делает?
Правильно, присваивает всем локальным переменным пустую строку.
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101125
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яА безаргументная форма команды set, думаете, что делает?Выдаёт ошибку <SYNTAX>.
В документации ни слова о безаргументной форме SET .
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101137
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa MX-9 , х/з как глобалов... А вот такого количества локальных переменных и к тому же равных нулю не видел точно!
Я даже такой надобности в них представить себе не могу...
каждый из 1 000 000 экземпляров обьекта имеет до 140 характеристик

надо ВСЕ экземпляры поочередно открыть, предварительно обнулив все 140 характеристик (свойств)
(НЕ ВСЕ 140 свойств присутствуют в конкретном экземпляре , остальные подразумеваются нулевыми)

ничего особенного - типичная ситуация


вообще то хотел обратить внимание на самописные ГЕНЕРАТОРЫ ПРОГРАММ
- там вполне могут синтезироваться АВТОМАТИЧЕСКИ строки вида
set (a,b,c,....)=.. с переменным количеством имен в скобках
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38101553
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9типичная ситуация
Ну да, ну да... 140 свойств это практически у каждой таблицы встречается.
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38107281
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit MX-9 ,

ДокументацияThe maximum number of assignments you can perform with a single invocation of SET is 128.
источник
проверил -

например такая команда (128 имен) :
set (Agent1,Art,Art2,CMR,LKW,NN1,NN10,NN11,NN12,NN13,NN14,NN15,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,VK,Zd,adrK,adrL,aufDat,aufNrn,cbm,cbm2,cena1,cena10,cena11,cena12,cena13,cena14,cena15,cena2,cena3,cena4,cena5,cena6,cena7,cena8,cena9,cenaEUR,cenaEUR2,da,graf,invNr,invPiez,kli,klient,klientA,klientN,klientV,liefer,nnMax,noKur,nos1,nos10,nos11,nos12,nos13,nos14,nos15,nos2,nos3,nos4,nos5,nos6,nos7,nos8,nos9,pasutNr,pie,piez,prot1,prot10,prot11,prot12,prot13,prot14,prot15,prot2,prot3,prot4,prot5,prot6,prot7,prot8,prot9,punkts,q1,q10,q11,q12,q13,q14,q15,q2,q3,q4,q5,q6,q7,q8,q9,s1,s10,s11,s12,s13,s14,s15,s2,s3,s4,s5,s6,s7,s8,s9,sumEUR,sumEUR2,sumLVL,sumLVL2,tranSumm,xArt,xF)=""

в CACHE-2009 вызывает ошибку <STACK> ( даже не <SYNTX> )
(хотя если одно имя убрать - 127 имен проходит нормально)


в Cache for Windows (x86-32) 2011.1
- 128 имен работает нормально
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38107509
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 ,

1) ссылку на документацию я привёл, чтобы показать, что предел можно было и не искать экспериментально;
2) в версии 2009 предел равен 127, а не 128, что зафиксировано в документации ;
3) с какой-то версии предел вновь вернули до 128, но не исправили документацию, о чём в WRC уже были проинформированы.
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #38107874
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit MX-9 ,

1) ссылку на документацию я привёл, чтобы показать, что предел можно было и не искать экспериментально;
2) в версии 2009 предел равен 127, а не 128, что зафиксировано в документации ;
3) с какой-то версии предел вновь вернули до 128, но не исправили документацию, о чём в WRC уже были проинформированы.

Спасибо за обстоятельный обзор !

Теперь в каждой новой версии буду сразу искать
и конспектировать текущее состояние команды SET

но и проверять :)

С Новым Старым Годом !
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #39120894
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 ,

set (a,b,c,...)=0 присваивает всем переменным одинаковое значение.

Если же нужно за раз присвоить множеству переменных разные значения - каждой своё (максимум в 128 переменных остаётся в силе), - то можно воспользоваться левосторонней $lb() , например:#dim ex As %Exception.AbstractException
try {
  f i=1:1:5 s $li(list,*+1)=i ; формируем список вида $lb(1,2,3,4,5)
    
  s $lb(a1,a2,a3,a4,a5)=list
  k (a1,a2,a3,a4,a5)
    
  w
} catch ex {
  w ex.DisplayString()
}

Код: plaintext
1.
2.
3.
4.
5.
6.
USER>d ^test
 
a1=1
a2=2
a3=3
a4=4
a5=5
Ею же удобно менять местами значения переменных (типа Swap) без использования дополнительной переменной, например:s $lb(a,b,c)=$lb(11,22,33)
w "До" w
    
s $lb(a,b,c)=$lb(c,a,b)
w !!,"После" w

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
USER>d ^test
До
a=11
b=22
c=33
 
После
a=33
b=11
c=22
PS: ещё больше "хитростей" можно найти в презентации Перевод базы Caché из 8 бит в Unicode (со слайда 12)
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #39121059
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

спасибо за информацию !

проштудируем по скорости и возьмем на вооружение .
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #39122029
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9Так и было - до перестройки

Существенно проигрывает по скорости - пришлось переделать,
и не только это, на один SETВы проверяли скорость одного SET по сравнению с их множеством?
У меня set (a,b,c,....)=0 медленнее чем set a=0,b=0,c=0,....
Или быть может для Вас важна транзакционность обнуления?
Кстати, в случае set a=0,b=0,c=0,.... лимит на количество переменных отсутствует.
...
Рейтинг: 0 / 0
CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
    #39122706
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,
действительно set a=0,b=0,c=0,.... идет быстрее(!) чем set (a,b,c,....)=0

никогда бы не подумал.

спасибо - 20 % скорости на дороге не валяются.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CACHE-2011 : max количество локальных переменных в одном set (a,b,c,....)=128
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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