Kristian Bendiksen
30254df9e9
#14683 Avoid building an Opm::Parser per keyword in schedule generation
...
Constructing an Opm::Parser populates the complete keyword database (2774
keywords, measured at 2.4 ms per construction) and this was done once per
keyword event in RifEventKeywordFormatter::buildKeyword, and twice more per
keyword in the column-aligned serialisation in RimKeywordFactory. Schedule
generation was therefore completely dominated by parser construction and grew
directly with the number of events on the timeline. Use a single shared parser
instance instead, since the parser is stateless once constructed.
Also compute the events for a date once in generateDateSection and pass them to
the per-well helpers, instead of calling RimWellEventTimeline::getEventsAtDate
four times per well and date, which scaled as dates x wells x events.
Generating a schedule for a production data set with 1737 events over 490 dates
goes from 4.2 s to 0.1 s, and 21000 events over 14 wells now complete in 0.5 s.
2026-09-07 18:58:05 +02:00
..
2026-08-18 18:40:41 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-08-20 11:48:25 +02:00
2026-06-01 16:41:21 +02:00
2026-08-05 16:03:42 +02:00
2026-08-07 15:05:57 +02:00
2026-09-07 18:58:05 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-03 15:34:10 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-09-04 15:32:09 +02:00
2026-08-12 12:22:40 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-08-24 12:43:44 +02:00
2026-08-07 15:05:57 +02:00
2026-08-28 13:22:33 +02:00
2026-07-27 12:37:59 +02:00
2026-05-26 13:10:20 +02:00
2023-08-11 12:41:40 +02:00
2021-01-11 15:27:45 +01:00
2021-01-11 15:27:45 +01:00
2024-10-28 13:09:18 +01:00
2023-02-26 10:48:40 +01:00
2026-08-28 13:36:02 +02:00
2023-06-26 14:28:46 +02:00
2026-08-10 12:38:41 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-08-14 10:23:34 +02:00
2025-04-09 07:21:54 +02:00
2026-08-07 15:05:57 +02:00
2023-06-26 14:28:46 +02:00
2026-09-07 09:32:04 +02:00
2021-01-11 15:27:45 +01:00
2024-03-07 19:45:43 +01:00
2023-06-26 14:28:46 +02:00
2026-01-21 19:11:41 +01:00
2025-01-19 16:19:55 +01:00
2025-02-24 10:06:06 +01:00
2025-01-19 16:19:55 +01:00
2026-08-07 15:05:57 +02:00
2025-02-24 10:06:06 +01:00
2026-01-21 19:11:41 +01:00
2023-06-26 14:28:46 +02:00
2024-03-07 19:45:43 +01:00
2023-02-26 10:48:40 +01:00
2026-05-08 10:11:09 +02:00
2023-06-26 14:28:46 +02:00
2025-04-11 18:34:32 +02:00
2023-04-13 07:05:53 +02:00
2026-08-31 10:28:10 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2025-03-18 12:55:19 +01:00
2026-08-10 12:38:02 +02:00
2026-08-06 08:06:53 +02:00
2026-08-06 08:06:53 +02:00
2026-08-06 08:06:53 +02:00
2026-05-08 10:11:09 +02:00
2025-11-14 14:44:21 +01:00
2026-08-03 15:34:10 +02:00
2021-02-10 15:08:35 +01:00
2021-01-11 15:27:45 +01:00
2023-02-26 10:48:40 +01:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2026-08-10 12:38:41 +02:00
2024-07-30 08:55:12 +02:00
2024-01-25 10:41:57 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2021-01-11 15:27:45 +01:00
2026-05-08 10:11:09 +02:00
2025-01-19 16:19:55 +01:00
2021-11-14 15:26:09 +01:00
2023-02-26 10:48:40 +01:00
2021-01-11 15:27:45 +01:00
2021-01-11 15:27:45 +01:00
2026-05-08 10:11:09 +02:00
2023-11-10 10:14:59 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-12-04 17:26:44 +01:00
2026-06-10 18:02:07 +02:00
2026-06-10 18:02:07 +02:00
2026-08-07 15:05:57 +02:00
2023-06-26 14:28:46 +02:00
2026-08-07 15:05:57 +02:00
2022-05-09 15:36:27 +02:00
2023-12-04 17:26:44 +01:00
2023-12-04 17:26:44 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-08-13 07:19:18 +02:00
2026-08-13 07:19:18 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-12-21 08:23:37 +01:00
2026-05-28 16:06:39 +02:00
2026-03-09 14:43:02 +01:00
2026-01-21 19:11:41 +01:00
2025-02-28 16:14:55 +01:00
2026-05-08 10:11:09 +02:00
2025-02-28 16:14:55 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-02-25 18:16:03 +01:00
2026-02-25 18:16:03 +01:00
2026-08-27 10:16:06 +02:00
2025-09-26 10:26:43 +02:00
2026-07-29 15:17:05 +02:00
2026-07-29 15:17:05 +02:00
2026-08-06 14:10:49 +02:00
2026-03-19 15:10:26 +01:00
2026-05-08 10:11:09 +02:00
2023-11-10 10:14:59 +01:00
2024-10-16 14:32:36 +02:00
2024-01-25 10:41:57 +01:00
2024-01-25 10:41:57 +01:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2024-07-30 08:55:12 +02:00
2023-06-26 14:28:46 +02:00
2024-07-30 08:55:12 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-12-04 17:26:44 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-01-21 19:11:41 +01:00
2025-07-23 10:34:27 +02:00
2025-05-12 13:04:10 +02:00
2023-06-26 14:28:46 +02:00
2024-06-18 11:49:22 +02:00
2024-05-13 15:45:55 +02:00
2026-05-08 10:11:09 +02:00
2024-01-29 15:05:08 +01:00
2026-05-08 10:11:09 +02:00
2024-06-14 17:31:22 +02:00
2021-01-11 15:27:45 +01:00
2026-08-10 12:38:21 +02:00
2026-08-10 12:38:21 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2024-06-18 11:49:22 +02:00
2024-06-18 11:49:22 +02:00
2026-08-07 08:34:58 +02:00
2026-05-13 14:53:00 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-04-29 13:14:49 +02:00
2026-04-29 13:14:49 +02:00
2026-03-19 15:10:43 +01:00
2026-03-03 07:35:48 +01:00
2025-02-03 15:06:29 +01:00
2025-01-14 21:52:54 +01:00
2025-04-09 07:21:54 +02:00
2024-09-16 09:49:22 +02:00
2025-04-09 07:21:54 +02:00
2024-04-17 14:34:36 +02:00
2026-08-28 13:36:02 +02:00
2026-05-28 16:06:39 +02:00
2026-08-07 15:05:57 +02:00
2025-02-24 10:06:06 +01:00
2025-02-24 10:06:06 +01:00
2026-03-09 14:43:02 +01:00
2026-03-09 14:43:02 +01:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2026-08-05 16:03:42 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2025-11-19 14:30:13 +01:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2025-04-09 07:21:54 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-03-06 12:32:05 +01:00
2023-06-26 14:28:46 +02:00
2026-01-21 19:11:41 +01:00
2022-03-14 09:18:48 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2025-05-20 15:07:27 +02:00
2021-01-11 15:27:45 +01:00
2025-11-19 14:30:13 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-06-26 14:28:46 +02:00
2026-08-07 15:05:57 +02:00
2023-02-26 10:48:40 +01:00
2023-06-26 14:28:46 +02:00
2023-06-26 14:28:46 +02:00
2025-02-03 15:06:29 +01:00
2023-06-26 14:28:46 +02:00
2026-05-08 10:11:09 +02:00
2023-06-26 14:28:46 +02:00
2022-05-09 15:36:27 +02:00
2023-02-26 10:48:40 +01:00
2026-03-04 09:52:17 +01:00
2026-03-04 09:52:17 +01:00
2024-04-15 16:10:43 +02:00
2021-01-11 15:27:45 +01:00
2026-08-10 10:07:32 +02:00
2024-06-14 17:31:22 +02:00
2026-05-08 10:11:09 +02:00
2021-01-11 15:27:45 +01:00