Using time() and duration() in DataWeave for performance check
Alex Martinez

Alex Martinez @devalexmartinez

About: Software Engineer with 10 years of experience in IT. I founded ProstDev and became a content creator. I liked it so much that I joined MuleSoft as a Developer Advocate.

Location:
Niagara Falls, Canada
Joined:
Apr 28, 2022

Using time() and duration() in DataWeave for performance check

Publish Date: Mar 21 '23
5 0

You can use duration() to get the total number of milliseconds it took to execute a function.

Script:

%dw 2.0
output application/json
import duration from dw::util::Timer
fun myFunc() = [1, 2, 3] reduce $+$$
---
duration(() -> myFunc())
Enter fullscreen mode Exit fullscreen mode

Output:

{
  "time": 0,
  "result": 6
}
Enter fullscreen mode Exit fullscreen mode

You can use time() to get an even more detailed result of when the function started and ended. This will give you more insight into the total time it took to execute.

Script:

%dw 2.0
output application/json
import time from dw::util::Timer
fun myFunc() = [1, 2, 3] reduce $+$$
---
time(() -> myFunc())
Enter fullscreen mode Exit fullscreen mode

Output:

{
  "start": "2023-03-21T16:00:21.487377Z",
  "result": 6,
  "end": "2023-03-21T16:00:21.487408Z"
}
Enter fullscreen mode Exit fullscreen mode

This way you can use - to get the total number of time.

Script:

%dw 2.0
output application/json
import time from dw::util::Timer
fun myFunc() = [1, 2, 3] reduce $+$$
var funcResult = time(() -> myFunc())
---
funcResult.end - funcResult.start
Enter fullscreen mode Exit fullscreen mode

Output:

"PT0.000024S"
Enter fullscreen mode Exit fullscreen mode

Comments 0 total

    Add comment