Untitled
unknown
plain_text
a year ago
1.3 kB
11
Indexable
import tracemalloc
import sys
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def profile_reverse(n):
tracemalloc.start()
lst = list(range(n))
lst.reverse()
current, peak = tracemalloc.get_traced_memory()
tracemalloc.stop()
return peak/10**6
def profile_slicing(n):
tracemalloc.start()
lst = list(range(n))
reversed_lst = lst[::-1]
current, peak = tracemalloc.get_traced_memory()
tracemalloc.stop()
return peak/10**6 # Return peak memory usage, size before, size after
list_lengths = [10 ** i for i in range(1, 8)]
reverse_usages = [profile_reverse(n) for n in list_lengths]
slicing_usages = [profile_slicing(n) for n in list_lengths]
df = pd.DataFrame({
'List Length': list_lengths,
'Memory Usage (reverse) (MB)': reverse_usages,
'Memory Usage (slicing) (MB)': slicing_usages
})
plt.figure(figsize=(10, 6))
plt.plot(df['List Length'], df['Memory Usage (reverse) (MB)'], marker='o', label='lst.reverse()')
plt.plot(df['List Length'], df['Memory Usage (slicing) (MB)'], marker='o', label='lst[::-1]')
plt.xscale('log')
plt.xlabel('Array Length')
plt.ylabel('Memory Usage (MB)')
plt.title('Memory Usage Comparison: lst.reverse() vs. lst[::-1]')
plt.legend()
plt.grid(True)
plt.show()
Editor is loading...
Leave a Comment