Day02:空间复杂度

今天来聊聊,空间复杂度(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/


<<:  计算API所需要的参数: Hash ID

>>:  从设计 docker-compose 开始

[Day-24] - Spring Reactor Mono 一日初探就上手

Abstract 昨日已先行提过Flux,可方便处理一连串指定类型事件,所以说Flux就像瑞凡,被众...

19 首页与开始游戏按钮

先来做个首页好了 首页要有 logo 开始游戏的按钮 来把画面上面的 logo 拿掉吧吧! 预设所有...

Day14 iPhone捷径-媒体Part4

Hello 大家, 再两天就要放假喏! 迫不期待想要当马铃薯。 接着说媒体後续的动作, 下一个分类是...

DAY17聚类演算法

昨天介绍完支持向量机,今天就要来介绍甚麽是分类和聚类: 通过将资料通过分类的方法分成不同的组别或者更...

[Day 30] Reactive Programming - 感想

铁人赛三十天心得 缘起 这次心血来潮想要参加铁人赛,最主要的原因其实是要归功於疫情公司WFH,每天通...