Текущее время: Пн, авг 04 2025, 00:40

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: occurs
СообщениеДобавлено: Пт, июл 25 2008, 14:15 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Здравствуйте, мне очень интересно, чем отличаются occurs 0 от скажем occurs 10, при объявлении внутренней таблицы. Я слышал что это резервирование памяти для таблицы, и что влияет на быстродействие, может кто-нибудь по подробнее объяснит, что то я не замечал разницы...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пт, июл 25 2008, 14:43 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
Besa написал:
Здравствуйте, мне очень интересно, чем отличаются occurs 0 от скажем occurs 10, при объявлении внутренней таблицы. Я слышал что это резервирование памяти для таблицы, и что влияет на быстродействие, может кто-нибудь по подробнее объяснит, что то я не замечал разницы...

Насколько я помню, если вы напишете occurs 10, то когда понадобиться записать 11 строку, выделится памяти еще на 10 (всего 20) строк
Далее написал неправду, :oops: , не судете строго
, но тут есть вот какая штука
Code:
DATA: tab TYPE bseg OCCURS 10.

IF tab[] IS INITIAL.
break-point.
ENDIF.

вы попадете в if, если же напишите OCCURS 0 то нет

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Последний раз редактировалось XXX_:) Пт, июл 25 2008, 17:09, всего редактировалось 3 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пт, июл 25 2008, 14:46 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Besa написал:
Здравствуйте, мне очень интересно, чем отличаются occurs 0 от скажем occurs 10, при объявлении внутренней таблицы. Я слышал что это резервирование памяти для таблицы, и что влияет на быстродействие, может кто-нибудь по подробнее объяснит, что то я не замечал разницы...
Ничем в плане того, что OCCURS - устаревшая конструкция.

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 25 2008, 14:47 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Спасибо, интересно, я этого не знал... Может кто еще что знает по этому поводу, в частности интересует быстродействие...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 25 2008, 14:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
DATA: it like T001 OCCURS n.

Быстродействие повышается очень незначительно за чет того, что выделение памяти осуществляется не каждый раз при добавлении записи, а один раз для n добавлений.

На самом деле выделение памяти для записей внутренней таблицы не является узким местом при оптимизации работы программы.
Гораздо более важным является оптимизация чтения из БД и поиск записей в больших внутренних таблицах. :D

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пт, июл 25 2008, 16:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
XXX_:) написал:
Code:
DATA: tab TYPE bseg OCCURS 10.

IF tab[] IS INITIAL.
break-point.
ENDIF.

вы попадете в if, если же напишите OCCURS 0 то нет

Бред, и в том и в другом случае попадаешь в if


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пт, июл 25 2008, 17:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
matel написал(а):
XXX_:) написал:
Code:
DATA: tab TYPE bseg OCCURS 10.

IF tab[] IS INITIAL.
break-point.
ENDIF.

вы попадете в if, если же напишите OCCURS 0 то нет

Бред, и в том и в другом случае попадаешь в if

Согласен ошибся :(, что то к концу недели лажаю.
Sorry

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пн, июл 28 2008, 07:25 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
matel написал(а):
XXX_:) написал:
Code:
DATA: tab TYPE bseg OCCURS 10.

IF tab[] IS INITIAL.
break-point.
ENDIF.

вы попадете в if, если же напишите OCCURS 0 то нет

Бред, и в том и в другом случае попадаешь в if

+1
Ибо эта конструкция возвращает число строк
Code:
line_count = itab[].

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Последний раз редактировалось lynx_oemk Пн, июл 28 2008, 07:32, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пн, июл 28 2008, 07:31 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Alex80 написал:
Besa написал:
Здравствуйте, мне очень интересно, чем отличаются occurs 0 от скажем occurs 10, при объявлении внутренней таблицы. Я слышал что это резервирование памяти для таблицы, и что влияет на быстродействие, может кто-нибудь по подробнее объяснит, что то я не замечал разницы...
Ничем в плане того, что OCCURS - устаревшая конструкция.

Нет, разница есть,

OCCURS N - Сначала резервируется память на N записей таблицы, когда они заполняются выделяется еще Н потом еще раз Н и потом уже не по Н а порциями по сколько-то Кб, кароче прочтите хелп, встроенный такм все это описано,

ЗЫ: для Н = 10 выделяется не когда записали 10-ю, а когда записали 9-ю
ЗЫ2: для 0 - система выбирает число Н как-то автоматически
ЗЫ3: если интересуетесь в отладчике есть кнопка про распределение памяти - не помню название, там видно для внутр.табл, не тольок актуальное число строк и размер их в памяти, но и размер зарезервированной для таблицы памяти, очень интересно по баловаться и посмотреть как система выделяет память.

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Пн, июл 28 2008, 09:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
попробуйте - без рукоприкладства быстрее работает


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пн, июл 28 2008, 10:01 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
lynx_oemk написал(а):
Ибо эта конструкция возвращает число строк
Code:
line_count = itab[].


Это начиная с какой версии?

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пн, июл 28 2008, 10:14 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Code:
line_count = LINES( itab[] ).

А не так?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: occurs
СообщениеДобавлено: Пн, июл 28 2008, 12:41 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Konstantin Anikeev написал:
Code:
line_count = LINES( itab[] ).

А не так?

))))
Туплю.
причем жжжостка

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB