Текущее время: Вс, авг 03 2025, 21:59

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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