我测试了150个todos到我的表中的插入。我在工作区中用循环做了一次,然后用引用做了一次。我以为使用引用会更快,但不知何故,它是167.333的引用和类似143.431的东西(我假设它的毫秒?)使用引用。我是ABAP的新手,我做错了什么或者为什么?我的代码:
TYPES: BEGIN OF ty_todo,
mandt TYPE mandt,
id TYPE int4,
userId TYPE int4,
todo TYPE string,
completed TYPE abap_bool,
END OF ty_todo.
DATA lv_dauer TYPE i.
DATA: lt_todo TYPE STANDARD TABLE OF ty_todo WITH DEFAULT KEY.
DATA wa_todo TYPE ty_todo.
DATA: lv_json TYPE string.
FIELD-SYMBOLS: <fs_todo> type ty_todo.
lv_json = `[{"id":1,"todo":"Do something nice for someone I care about","completed":true,"userId":26},...]
* JSON -> ABAP (iTab)
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_json
* jsonx =
pretty_name = /ui2/cl_json=>pretty_mode-camel_case
* assoc_arrays =
* assoc_arrays_opt =
* name_mappings =
* conversion_exits =
* hex_as_base64 =
CHANGING
data = lt_todo
).
DELETE FROM zalm_fs_todos.
get run time field lv_dauer.
*Loop in Workarea
LOOP AT lt_todo into DATA(lv_todo).
INSERT zalm_fs_todos from lv_todo.
ENDLOOP.
*Loop mit Field-Symbol
* loop at lt_todo assigning <fs_todo>.
* INSERT zalm_fs_todos from <fs_todo>.
*endloop.
get run time field lv_dauer.
Write lv_dauer.
1条答案
按热度按时间yhxst69z1#
使用变量INSERT... FROM TABLE,还可以一次插入内部表格中的所有元素:
这应该会快很多,因为它只对数据库执行一次往返。
也就是说,这里做的基准测试是没有意义的。要得到一个合适的基准测试,请执行以下操作:
一般来说,* 字段符号 * 和 * 变量 * 在阅读时应该具有相同的特性,并且字段符号应该比编写更大的结构更好,但是考虑到字段符号是一个相当奇特的构造,我宁愿选择变量,除非有显著的区别。