当前位置: 首页 > 科技观察

性能分析不一定得用 Profiler,复杂度分析也行

时间:2023-03-22 01:32:00 科技观察

Profiler对于性能分析不是必须的,复杂度分析也是可以的。可以使用chromedevtools的Profiler,包括性能和内存分别获取耗时和内存占用数据,也可以使用火焰图进行可视化分析。比如在性能上,可以看到每个函数的耗时。通过简单的加减法,就可以算出哪个函数耗时最多,然后进行优化。而且可以checkmemory来显示堆内存的变化,可以知道是哪个函数导致了内存的增加,进而进行优化。当然你也可以单独分析内存的时间线,记录一段时间的内存使用情况,然后看看此时内存中有哪些对象,比只知道大小更准确。总之,我们可以通过调试工具的Profiler看到内存和耗时,然后关联到具体的函数,然后开始优化。但是,这些只能在代码运行时才能统计,并且与机器和不同的输入数据有很强的相关性。如果换一台机器,数据看起来会不一样。这就是为什么在测试的时候需要用各种机器进行测试。那么如果想在不运行代码的情况下预估具体的时间和内存占用,有什么思路吗?这就是复杂性分析技术所做的。在本文中,让我们了解复杂性分析如何估算时间。复杂性分析的一些基础知识什么是1,什么是n?如果有这样一行代码:constname='guang';需要多少时间,需要多少内存?你跑一圈看看,可能需要1ms,内存4字节,也可能需要2ms,内存8字节等等,不同的机器和运行环境会有所不同。但是我们都把它看成1,这个1不是ms,不是byte,它只是一个基本的耗时/内存占用单位,即复杂度为1。这样的代码呢?functioncalc(n){for(leti=0;i