DATA: XLINE TYPE I.
TABLE_INPUT_NEW[] = TABLE_INPUT[].
DELETE TABLE_INPUT_NEW WHERE F_CHK <> 'X'.
DESCRIBE TABLE TABLE_INPUT_NEW LINES XLINE.
Насколько я понимаю - выигрыш тут только в размере и красоте кода, в скорости выиграть не получится. Внутри delete скорее всего будет неявный loop, плюс к этому добавляются затраты памяти на дополнительную таблицу.
Для полной уверенности нужно проверить через SE30
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Wed Mar 19, 2008 11:23 am Post subject:
Armann wrote:
Насколько я понимаю - выигрыш тут только в размере и красоте кода, в скорости выиграть не получится. Внутри delete скорее всего будет неявный loop, плюс к этому добавляются затраты памяти на дополнительную таблицу.
Для полной уверенности нужно проверить через SE30
Привет. Тут фишка в том, что abap - интерпретирующий язык и под каждую итерацию будет вызываться куча базисных функций, которых явно не видно.
В случае же с кодом от John Doe, фактически будет вызвано несколько быстрых C функций для копирования и удаления по областям памяти. В зависимости от количества строк в таблице, разница во времени будет заметно возрастать.
Что во втором примере явно не гуд, так это потребность хранить в памяти еще одну таблицу. Если таблица большая, можно словить дамп из-за нехватки памяти.
Было бы оптимальней, если в исходной таблице поле флага стояло первым, тогда вторую таблицу можно было бы делать не одинаковой структуры, а состоящей из одного поля С(1).
Привет. Тут фишка в том, что abap - интерпретирующий язык и под каждую итерацию будет вызываться куча базисных функций, которых явно не видно.
В случае же с кодом от John Doe, фактически будет вызвано несколько быстрых C функций для копирования и удаления по областям памяти. В зависимости от количества строк в таблице, разница во времени будет заметно возрастать.
DATA: XLINE TYPE I.
TABLE_INPUT_NEW[] = TABLE_INPUT[].
DELETE TABLE_INPUT_NEW WHERE F_CHK <> 'X'.
DESCRIBE TABLE TABLE_INPUT_NEW LINES XLINE.
я бы добавил еще одну строчку:
free TABLE_INPUT_NEW[].
и заменил
DESCRIBE TABLE TABLE_INPUT_NEW LINES XLINE.
на
xline = lines( TABLE TABLE_INPUT_NEW ).
и работает на копейки быстрее и пальцами по клаве стучать меньше.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.