- 浏览: 103669 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
估算的数据主要依赖于所能获得的数据和常识,有时还包括实践而不仅仅是理论。它常常作为一个大问题中的子问题,恰当地估算可以省去精确计算的时间和开销。在计算机领域,所谓常识的内容很宽泛,比如硬盘的传输速度、CPU每秒能执行多少指令、各种数据结构的大小甚至每分钟录入的单词数。有些数据是能够从各种资料中查得的,但仅仅靠记忆总难免遗漏;如果有经过学习而建立起的系统的知识结构,那便能很方便地把这些常识组织起来,除此以外,还可以靠平时经验的积累和一些面试题上的启发了。这里将进行一个收集,随时更新。
Little定律深入了估算所依赖的法则的细节:总花费等于各个部分的花费再乘以总的部分数,它在计算机系统方面的一些计算中十分有用。
计算机方面的估算问题:
1.硬盘文件读写速度的小问题:是否能超过10MB/s?(笔者某次面试中被问到的的一个关于服务器的问题的子问题)
分析:根据以往拷贝文件的经验,对于不是多个零散小文件的情况,读写速度比这个值要快得多,因此做出了肯定的答案。
2.确定一个空循环for(i=0;i<n;i++)在一秒钟执行的次数n,使其为CPU在1秒钟内执行总指令数目的一半(《编程之美》第一章的子问题)
分析:先把空循环化为汇编指令:
mov dx i
inc dx
mov i dx
cmp i n
jl loop
一共5条指令,假设使用的CPU是单核2.4GHz即每秒2.4G个时钟周期,(常识)现代CPU每个时钟周期执行两条以上的代码,那么一秒钟可以执行空循环(2 400 000 000 *2)/5 = 960 000 000次。
(为了提高精度而进行降低数量级的优化不再讨论)
3.struct node {int i; struct node *p}是否可以将这样的2 000 000个结点装入128MB内存的计算机中?(《编程珠玑》7.2性能估计)
分析:为了简化讨论,假定在32位机上int和指针都是32位的,共用了8B,直接计算的结果是只需16MB空间,而《编程珠玑》作者的128MB的计算机通常有85MB空闲,看上去是够用的。然而使用malloc()为结点分配空间时会额外占用空间(原因:malloc的机制,Linux的malloc()有一个每次分配的最小大小,小于这个值也会分配这么多;struct的对齐),这个值在作者计算机上是40B,导致了一共占用了96MB空间,事实上是不够用的。
4.运算的实际消耗时间:使用for(i=0;i<n;i++) fa =sqrt(10.0);计算单次sqrt()的运行时间是否准确?(《编程珠玑》7.2性能估计)
实际的单次运算时间可能慢得多,因为sqrt()可能保存了最近参数作为起始值。
(更多待补充……)
估算常用法则:
1.“72法则”:以年利率r%进行投资y年,如果r * y = 72,那么投资差不多会翻倍。
如果以t = (1+r/100)y,并把r代换成72/y,即t = (1+72/(100y))y,进行作图,会发现这一段t的值都在2附近,符合这条法则。
应用:假设一个指数程序解决n=40的问题需要10s,且n每增加1运行时间就增加12%,那么根据72法则,n每增加6,运行时间就加倍。进一步地,n每增加60,运行时间就为原来的1000倍(210的近似数)。
2.(记忆常识)π秒是一个纳世纪。
注:一年有3.155 * 107秒,而π取3.14、纳世纪为100年 * 10-9 ,这时两者的积与这个值近似。
3.Little定律:队列中物体的平均数量为进入速率与平均停留时间的乘积。
注:显而易见的法则是,总开销等于每个开销乘以单元的个数;而Litte定律描述的是一个动态系统。如果想了解定律的证明,需要随机过程与排队论的相关知识。
应用:多用户系统的响应时间公式,思考时间z的n个用户登录到响应时间r的系统,每个用户周期都为用户的思考和系统响应,即z+r;作业总数为n,那么对一个时间点来看,平均负荷为n、平均响应时间为z+r,吞吐量为x(每个时间单位处理的作业数),根据Little定律,n = x*(z+r),这样就可以求解r = n/x -z。
例1:(编程珠玑(续),7.4节)一个计算机系统,包括磁盘、处理器、操作系统和20个思考时间为20秒的终端,通过观察,它的磁盘每处理一个作业就要处理100个数据请求,而磁盘每秒钟可以处理25个请求。那么系统的吞吐量和响应时间各为多少?
解答:吞吐量直接计算,为25/100=0.25个作业/秒,响应时间r = 20/0.25 -20 = 60秒。这在流平衡下就是精确解。
例2:(编程珠玑(续),习题7.8)假设一个作业在某机器上执行时间是20秒,该机器一次可能同时执行10个作业,而你的作业是100等待执行的作业中的最后一个,作业以先进先出方式执行。大概需要等多久才能等到作业执行结束?
解答:这里要考虑两个排队系统:待执行任务队列和计算机系统本身。根据Little定律,第二个系统任务输出率X=L/R,L=10个任务,R=20秒,因此X=0.5个任务/秒。这也是第二个系统的任务到达率。因此最后一个任务会在前99个任务在198秒后完成时进入,再加上20秒的执行时间,总的时间是218秒。
往期回顾:
“珠玑之椟”系列简介与索引位向量/位图的定义和应用
本文链接:http://www.cnblogs.com/wuyuegb2312/p/3133633.html,转载请注明。
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 392原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1665原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 601原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 710原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 870原帖地址:http://www.cnblogs.com/r01 ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 972原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 594原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 489原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 578原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 829原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 567原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 500原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 661原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 751原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 533原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1392原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 649原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 751原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 492原帖地址:http://www.cnblogs.com/cod ... -
证书打印《二》
2013-06-17 10:47 492原帖地址:http://www.cnblogs.com/bin ...
相关推荐
ASP.NET.2.0.编程-------珠玑ASP.NET.2.0.编程-------珠玑ASP.NET.2.0.编程-------珠玑ASP.NET.2.0.编程-------珠玑
编程珠玑编程珠玑
编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码
我觉得不错,和大家分享! 编程珠玑 编程珠玑 编程珠玑
编程珠玑番外篇-G. 程序员心底的小声音 与编程珠玑相辅相成
本书针对程序设计人员探讨了一系列的实际问题,这些问题是对现实中常见问题的归纳总结。作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨程序员的实际问题展开讨论,从而引导...
《编程珠玑(第 2版·修订版)》是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者JonBentley以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员...
编程珠玑和编程珠玑续两本,上传赚点分,填充填充填充
编程珠玑--软件开发者阅读计划-入门级 书目之一,内含中文版和英文版。
编程中的一本关于算法的好书。
编程珠玑.英文第二版-Programming.Pearls.pdf
《编程珠玑(续)》是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,...
本资源只是“编程珠玑之第二章questionC: 求变位词问题”的简单的测试数据。
编程珠玑(含源码 )
编程珠玑-英文版+中文版+source code
ASP.NET 2.0编程珠玑--来自MVP的权威开发指南
编程珠玑-[美]乔恩美特利.mobi、kindle文档、第二版修订版
《编程珠玑(第2版)》的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。《编程珠玑(第2版)》对各个...
没有其他数据与该整数关联。 输出:按升序排列的输入整数列表。 约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。
编程珠玑续、编程珠玑续本、编程珠玑续本、编程珠玑续本