34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
import csv
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def plot_from_csv(filename, save_plot=False):
|
|
durations = []
|
|
sleep_errors = []
|
|
busy_sleep_errors = []
|
|
|
|
with open(filename, 'r') as csvfile:
|
|
reader = csv.DictReader(csvfile)
|
|
for row in reader:
|
|
durations.append(float(row['duration']))
|
|
sleep_errors.append(float(row['sleep_error']))
|
|
busy_sleep_errors.append(float(row['busy_sleep_error']))
|
|
|
|
plt.figure(figsize=(10, 5))
|
|
plt.plot(durations, sleep_errors, label='time.sleep()', marker='o')
|
|
plt.plot(durations, busy_sleep_errors, label='busy_sleep()', marker='x')
|
|
plt.xlabel('Desired Delay (ms)')
|
|
plt.ylabel('Average Error (ms)')
|
|
plt.title('Sleep Accuracy: time.sleep() vs Busy-Wait Loop (macOS)')
|
|
plt.legend()
|
|
plt.grid(True)
|
|
|
|
if save_plot:
|
|
plt.savefig('sleep_accuracy_plot.png', dpi=300)
|
|
print("Plot saved as sleep_accuracy_plot.png")
|
|
|
|
plt.show()
|
|
|
|
plot_from_csv('sleep_data.csv', save_plot=True)
|