每个开发者都必须知道的 14 个数字
2013-04-11 08:49
295 查看
eff Dean , 一位著名的 Google 工程师, 推出了一个 每个人都必须知道的数字 的潜在数字列表。这个列表对设计大型基础架构的系统是一个巨大的资源。 算法及其复杂性总是会在计算机系统的关键部分出现,但我发现很少有工程师对一个O(n!)级算法相较一个 O(n5) 算法会怎样有很好的理解。 在编码比赛世界里,竞争选手一直在考虑这些优化权衡。毫不奇怪,有一组每个算法设计者都应该知道的数字。 下面的表格显示了不同复杂度算法条件下,在几秒钟内它们可以达到的极限,n是输入量大小。我已经为每个复杂的类型增加了一些算法和数据结构的例子。
让我们通过一个实例来继续讲解。 假设你为一家GPS公司工作,你的项目是改善他们的导航功能。在学校,你学会使用Dijkstra’s 算法,在图上计算两点之间的最短距离。了解这些数字,你就会明白,他将耗费几秒钟以计算具有上百万条边的图形,Dijkstra’s 算法实现这些,有 的时间复杂度(m代表边数,n表示节点数)。 现在你面临一个新的问题: 你期望你的代码能执行多块?几秒钟?数百毫秒? 如果它在网络上的响应时间少于500毫秒,就觉得快。因此我们选半秒。 图有多大?你想解决问题是一个城市,一个国家还是一片大陆? 每一个大于其他大小的,将通过不同的方法解决。 比方说,我们要解决整个欧洲的问题。 下面是一些输入集的大小:
英文原文:14 numbers every developer should know 编译 oschina |
相关文章推荐
- 每个开发者都必须知道的 14 个数字
- 每个开发者都必须知道的 14 个数字
- 每个开发者都必须知道的 14 个数字
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的资源集锦
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的内存管理知识
- 每个 Android 开发者必须知道的资源集锦
- 【转载】每个 Android 开发者必须知道的消息机制问题总结
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的内存管理知识
- 每个Android开发者必须知道的资源集锦
- 每个 Android 开发者必须知道的消息机制问题总结
- 每个Android开发者必须知道的资源集锦
- Web 设计与开发者必须知道的 15 个站点
- 每个Java开发者都应该知道的5个JDK工具
- 开发者必须知道的HTML5十五大新特性