iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0

今天來聊聊,空間複雜度(Space Complexity)

空間複雜度,空間指的是在執行程式碼時所耗費的記憶體容量。空間複雜度與時間複雜度的表示方式相同,都用Big O來表示。時間複雜度以執行完成的步數為主,不考慮使用的記憶體大小,同樣的,空間複雜度考慮的是記憶體的大小,而非執行完成的時間。

使用python計算空間複雜度

from memory_profiler import profile

@profile
def my_func():
    a = [2] * (100 ** 6)
    b = [10] * (2 * 10 ** 7)
    del b
    return a

if __name__ == '__main__':
    my_func()

輸出結果

Line #    Mem usage    Increment  Occurences   Line Contents
============================================================
     3     12.7 MiB     12.7 MiB           1   @profile
     4                                         def my_func():
     5     20.3 MiB      7.6 MiB           1       a = [2] * (10 ** 6)
     6    172.9 MiB    152.6 MiB           1       b = [10] * (2 * 10 ** 7)
     7     20.3 MiB   -152.6 MiB           1       del b
     8     20.3 MiB      0.0 MiB           1       return a

在這裡使用的是Python的memory_profiler模組,可以用來計算程序執行所佔的記憶體空間,當然,若是越複雜的程序執行起來,可能會讓電腦都癱瘓了(笑)

若是有興趣進一步了解的人,可以參考下列官方文件

https://pypi.org/project/memory-profiler/


上一篇
Day01:時間複雜度
下一篇
Day03:資料結構 - 列表(List)
系列文
一個月的演算法挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言