mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +00:00
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
import json
|
|
import matplotlib.pyplot as plt
|
|
|
|
# Function to load JSON data from a file
|
|
def load_json_data(filepath):
|
|
with open(filepath, 'r') as file:
|
|
data = json.load(file)
|
|
return data
|
|
|
|
# Function to plot two arrays of subarrays with tuples (step_name, duration)
|
|
def plot_two_arrays_of_subarrays(arrays1, arrays2):
|
|
# Function to calculate sum of durations for each step
|
|
def calculate_sums(arrays):
|
|
steps = [step for step, _ in arrays[0]] # Extract steps from the first iteration
|
|
sums = {step: 0 for step in steps} # Initialize sums dictionary with step names
|
|
|
|
# Sum up the durations for each step across all subarrays
|
|
for subarray in arrays:
|
|
for step_name, duration in subarray:
|
|
sums[step_name] += duration
|
|
|
|
# Convert the sums dictionary to two lists (for plotting)
|
|
step_names = list(sums.keys())
|
|
durations = list(sums.values())
|
|
return step_names, durations
|
|
|
|
# Calculate sums for both arrays of subarrays
|
|
step_names1, sums1 = calculate_sums(arrays1)
|
|
step_names2, sums2 = calculate_sums(arrays2)
|
|
|
|
# Create two subplots, one on top of the other
|
|
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
|
|
|
|
# First plot (top) for the first array of subarrays
|
|
ax1.plot(step_names1, sums1, marker='o', linestyle='-', color='b')
|
|
ax1.set_title('Total Duration per Step - Main Loop')
|
|
ax1.set_xlabel('Step Name')
|
|
ax1.set_ylabel('Total Duration')
|
|
ax1.grid(True)
|
|
|
|
# Second plot (bottom) for the second array of subarrays
|
|
ax2.plot(step_names2, sums2, marker='o', linestyle='-', color='r')
|
|
ax2.set_title('Total Duration per Step - Result Processor')
|
|
ax2.set_xlabel('Step Name')
|
|
ax2.set_ylabel('Total Duration')
|
|
ax2.grid(True)
|
|
|
|
# Adjust layout so the plots don't overlap
|
|
plt.tight_layout()
|
|
|
|
# Display the plot
|
|
plt.show()
|
|
|
|
# Load arrays from the JSON files
|
|
arrays1 = load_json_data('/tmp/windmill/profiling_main.json')
|
|
arrays2 = load_json_data('/tmp/windmill/profiling_result_processor.json')
|
|
|
|
# Plot the data
|
|
plot_two_arrays_of_subarrays(arrays1, arrays2) |