前言
一些同学对计算机运行的速度没有概念,可能就是感觉计算机运行速度应该会很快,但我们在做算法题目的时候为什么会超时呢?我们的计算机究竟1s可以计算多少次呢?接下来我们来探讨一下这几个问题。
超时是怎么回事
大家刷leetcode时候应该都遇到过知一种错误是超时也就是说程序运行的时间超过了规定的时间,而leetcode并没说程序运行了多久超时,也没有说超时时间具体是多少一般现在判题系统的超时时间就是1s,其他OJ呢,例如POJ 或者ZOJ 超时时间都基本上都是1s也就是用例数据输入后最多要1s内得到结果,leetcode 应该也是1s左右(leetcode上可能每道题限制会有所不同)。下文为了方便讲解,暂定超时时间就是1s接下来我们要知道我们的代码为什么会超时的也就是如果我们写出了一个O(n)的算法 ,我们其实可以估算出来n是多大的时候,我们算法的执行之间就会超过1s如果知道n的规模已经足够让O(n)的算法运行时间超过了1s,此时我们就应该考虑log(n)的解法
从硬件配置看计算机的性能
因为我们主要看计算机的运算速度,所以主要看CPU的配置以我自己的Macpro为例 CPU配置:2.7 GHz Dual-Core Intel Core i5
也就是 2.7 GHz 奔腾双核,i5处理器这里在介绍一下 GHz的概念1Hz = 1/s1Hz 就可以理解是cpu单位时间内完成了一次操作,我们称之为为赫兹那么1