如何判断计算机的快慢?

参考《算法导论》 p 6 p_6 p6~ p 7 p_7 p7

为什么要学算法?就是想设计出的算法让计算机跑的更快嘛,那怎么判断计算机运行的快慢?或者不同算法在同一台计算机上的运行时间如何比较?

判断CPU运行快慢(CPU快慢也即计算机快慢)的一个单位是MIPS(Million Instruction Per Seconds),每秒百万条执行,此值肯定是越大则表示CPU运行越快。

另外一个评价标准是,某个算法在某台计算机上执行了多长时间,在理论计算的时候,前提是知道CPU每秒能执行多少条指令,或者每条指令需要多少时间。

算法导论 p 6 p_6 p6~ p 7 p_7 p7上有一个例子,对比两种算法分别在两台计算机上执行的时间。现有一个大小为 n = 100 n=100 n=100万个数的数组,假设计算机A每秒能执行10亿条指令,计算机B每秒能执行1000万条指令,如果在A上运行需要 c 1 n 2 c_1n^2 c1n2条指令的排序程序( c 1 = 2 c_1=2 c1=2),即 2 n 2 2n^2 2n2;在B上运行需要 c 2 n lg ⁡ n c_2n\lg n c2nlgn条指令的排序程序(c2=50),即 50 n lg ⁡ n 50n\lg n 50nlgn。为了完成这n=100万个数的排序,

A需要花费的时间为:
2 ∗ ( 1 0 6 ) 2 条 指 令 1 0 9 条 指 令 / 秒 = 2000 秒 \frac {2*(10^6)^2条指令}{10^9条指令/秒}=2000秒 109/2(106)2=2000
B需要花费的时间为:
50 ∗ ( 1 0 6 ) lg ⁡ 1 0 6 条 指 令 1 0 7 条 指 令 / 秒 ≈ 100 秒 \frac {50*(10^6)\lg 10^6条指令}{10^7条指令/秒} \approx 100秒 107/50(106)lg106100
每秒执行慢的计算机反而耗费时间少,体现了算法设计的重要性!

你可能感兴趣的:(算法)