小米屏幕录制怎么删除手机视屏前几天小孩子玩删除了视频可以找回嘛 自己拍摄的

跟客户也达成了一致的意见,我心里还想,就这么简单的东西,三下两下就搞定不就可以了吗?还是偷偷乐了一下,很久没玩过这样的小项目,做小项目有成就感,而且比较简单,也算是一个成果物。
价格都商定好了,网络中心的老师,带我到那个部门了解客户的真实情况,客户给我演示了一下老系统,哇靠,功能哪里那么容易啊,粗略的数一下有【收文功能、督办件功能、强大的收文查询功能、收文轮阅读功能、轮阅提醒功能、发文功能、强大的发文查询功能排序功能、公文序号产生功能、发文有发文类别、收文有收文类别、公文抄送列表功能】看到这里,我心里有些虚了,这么多功能,而且那个平时使用这个软件的人,操作简直是飞速一样,全键盘操作,功能非常连贯,需求也比较明确。好了就这么些功能,想升级一下。
话也说出去了,牛也吹了,总不能现在就跑了吧?我狠了一下心,算是自己栽了吧,反正平时的积累也很多,晚上加班什么的,弄弄出来算了,本来是想给公司弄个小项目,蛤蟆也是肉,赚点儿算点儿。
我把一些屏幕用人工记录的方式,都记录好,都有哪些单据等,都需要输入什么数据,都需要什么功能等,心里想了,辛苦一些就辛苦一些吧,弄弄好算了,少一些休息时间而已。
一下所说的每轮,不只是跑了一次的意思,是至少跑了一次的意思,政府单位的人,懒得跟你邮件沟通来沟通去,人家需要的是周到的服务,当面交流效率才高,交流的误差比较小,而且项目在本地,跑一趟也容易。
[第一轮]回到公司,跟公司的领导汇报了一下,说教育局要一个很简单的小软件,半个不到就可以做好了,客户也不愿意掏多少钱,我就八千元答应给他们做一个了,我们领导人好,说那就弄弄吧,反正是一个小项目,功能也不多,其实这时候我是不敢说其实功能蛮多的,那怎么就谈这么点儿钱了是吧?
我想,数据库用SQLServer吧,项目也不大,就做个Web版本的,经过一周,我把客户需要的功能都做出来了,给客户去演示,客户比较满意,开始对我的印象好了很多,比上次去态度好了很多,然后,他们说以前的软件打印功能没有,用起来不舒服,他们和想有打印功能,那不加钱不行了,这个功能是当时没提过的,而且在Web里弄打印还是很折腾的事情,要加钱,也可以,他们说,会想领导提,只要用得舒服钱都好说,有这句话,我心里舒服多了,毕竟是堂堂的宁波市教育局应该不会差这么点儿小钱吧?
[第二轮]又回去弄了3天,把他们需要的3个打印功能弄好了,我自己也测试打印了10来次,打印还是很舒服,而且我还干了一个通宵把Web直接打印的问题解决了,打印功能实现好了,我又给他们去演示了,他们又提了很多细节功能,我想他们都同意加钱了应该没啥问题,就把他们提的很多细节后来都解决了。
[第三轮]这时候,他们终于说实话了,以前那个FoxPro的软件是,教育局内部的人编写的,当时那个人经常到那个部门,跟他们进行沟通,那个小软件,前后修改完善了3年,才到了现在的程度,然后现在操作这个软件的人,是用了这个小软件已经有5年了,所以任何操作的细节,都有很多要求,要符合他的习惯,例如快捷键的设置,光标的停留位置,回车的处理,页面的跳转,查询的优化,具体要求等,提了很多很多,我再我搞开发10年了,而且几乎是天天搞,他的这些东西,我都折腾好,已经半个月过去了,超出我的预计已经是1倍了。
[第四轮]这下他们看看程序,也不错了,就真的想用新的软件了,他们就说,要把以前的十年录入的数据都需要导入进去,我想这个需求也是合理的,否则人家那个旧电脑报废了,数据怎么查?新系统上线就是为了淘汰那个旧电脑啊,我反正FoxPro也熟悉,好弄吧,我自己的电脑里安装了VisualFoxPro分析了数据库结构,数据,我头大了,里面的数据多得要命啊,有30万条,而且数据的严谨性不搞,导入SQLServer根本不是想象的那么简单,好在我数据库的水平是一定的高度,折腾了3天,写了N多脚本,终于把老数据库导入问题解决了。
[第五轮]他们采购了新电脑,里面啥都没有,安装IIS, .NET运行环境,配置好网络,再把数据库安装好,再把程序部署好,又解决了很多权限配置问题等相关问题,还调试了打印机等,总之足足折腾了一天,能把老系统的数据都导入好,新的系统能跑起来了,已经到下班时间了,教育局的老师说了,新系统还要测试用一段时间,才能正式上线使用,老的系统还需要用,过些日子需要正式上线时,数据需要重新导入一下,因为新系统还不能确认是否真的好用,然后又提了一个功能,以前是单机版,现在想要网络版本,平时这个软件是有一个老师操作,另一个老师也偶尔操作,经常也需要查询数据,以前是用复制软件的方式,现在想直接在这个上用,晕倒了不是说单机版本嘛? 现在又变成网络版本了?又说了,楼下也有一个部门的老师经常需要查询数据,但是不能增加修改,只能查询,哇靠,那还需要权限控制了?这个跟开发一个大型应用一模一样了,我又强调了,这个是需要加钱的。客户说没问题,他们会向领导反馈,需要我把工作量打个报告过来,给领导审核。
其实说到这里,来回跑的已经不止5轮了,还好项目在宁波市区,平时做公交车就可以了,说得夸张一些,要是平时自己开车去,油钱也要上千元了,我继续说开发。
[第六轮]客户试用了一段时间后,提了很多细节问题,其中有些问题是,简直是要人命的,就是一些细节上的处理,还有键盘的细节操作,还好我JavaScript的能力也很强,经过死去活来的改进,终于把细节问题都修改好了,我就去给客户正式上线去了,客户的日常工作处理,几乎是不能间断的,他给了我1个小时时间,说4点半开始会很忙碌,你必须在4点半前把事情全部搞定,哎呀,真的不是吹的,我的动手能力是超级强大,但是在1-2个小时内,把几十万条记录都处理好导入好,新旧系统都衔接好,好几台电脑中折腾来折腾去,还真不是开玩笑的,我自己的开发的电脑,客户的老系统,客户的新系统,心都要累死了一样争取了每一秒钟时间,几乎没犯一个错误,把系统过去过来了,升级好了,客户用用还可以,他们每天要收到几十个公文,要在1个小时不到的时间里,把这些都处理好,所以对软件的操作细节要求非常高,什么叫专家? 就是收文发文的工作,做了5年以上,天天操作几十个文件的收发,给接近10个领导有条有理的把文件抄送工作做好,这就叫做专家,给专家做软件?容易嘛?为什么这个软件能用10年,为什么升级好几次都失败?因为客户有很多细节的处理要求,一般人是达不到的。[第七轮]这下总算可以结项目了吧?客户又说了,还需要统计功能,晕倒了,统计的方法有接近10种,我能不能谈一下项目的价格问题啊?我已经快搞了1个月多月了,你们到底给我多少钱啊?让我心里有个数啊,我怎么向领导交代啊?我工作一天,都是有成本的,我们公司正常的每天是800元,像我这个级别的是1200元以上样的报价,我再干几天,就要满满工作2个月了,2个月用1200元/天算,这个费用好好几万了。8千的东西,已经不是一个数量级别了,客户说了,你把功能都做好了再来谈加钱,我晕了,政府部门就是牛B啊,我只能硬着头皮了。
[第八轮]又折腾了1周,把统计功能都做出来了,然后列出了一个工作量清单,就这么3个功能延伸出来不知道几倍的工作量了。客户的一句话,能让我们折腾几天啊。&
详细功能部分
工作量(天)
初步需求分析
发文查询功能
发文修改功能
发文编号产生方法
发文断号检查功能
发文附件功能
收文查询功能
收文修改功能
收文编号产生方法
收文断号检查功能
收文附件功能
收文编辑轮阅状态维护
详细功能确认
分析原数据库结构
将原数据导入到数据库中
讲原数据导入到新系统中
打印督办单功能
打印承办单功能
重新导入最新的数据
软件功能测试、性能测试
工作量小计
安装最新软件
测试最新软件
最新数据库导入
自动归档功能改进
按分类搜索功能改进
按分类输入关键字功能改进
按回车进行查询功能改进
导入数据有重复显示问题解决
开设只有查看权限的账户
重新安装系统、查询优化
数据整理维护、编号产生方式优化
发文按发文类别查询、收文发文按顺序倒序编号排序
不按签发人查询、收文急件能直接归档
工作量小计
打印领导批示单
按收文份数统计
按每一类文件数量统计
按全部文件数量统计
未归还文件列表打印(按处室为单位)
发文未归档文件列表打印(按处室为单位)
工作量小计
工作量总计
&说白了,半天就能搞定一个功能,或者一天就能把一个难题解决了,也真不是那么简单的,我平时处了睡觉,吃饭,几乎都是在研究软件了,还有积累,否则,哎,完蛋了这个项目。
&我平时还做一些其他大项目的技术支持,否则2个月光做这个项目,真的丢死人了,干了个月给公司毛利8000元,哎亏死的买卖了,破产了。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:920885次
积分:17119
积分:17119
排名:第545名
原创:578篇
转载:355篇
评论:2705条
(211)(280)(156)(16)(10)(9)(37)(23)(5)(1)(7)(8)(11)(2)(17)(10)(17)(24)(20)(9)(1)(14)(1)(1)(9)(6)(4)(3)(1)(20)一个项目开发具体流程是什么? - 知乎177被浏览18093分享邀请回答412 条评论分享收藏感谢收起61 条评论分享收藏感谢收起更多中文(简体)
中文(繁體)
中文(台灣)
中文(新加坡)
中文(香港)
头脑风暴,想出好点子。 一个好的程序的目标是让人们的生活更方便。可以看一下现在已有的帮你完成工作的程序,是否有可以简化或优化的地方?一个成功的程序一定是能让用户感到非常实用的。
检查一下你每天用电脑完成的工作, 是否有一些任务是可以让程序自动帮你完成的?
把每个想法都写下来。即使这么做会显得有点傻。说不准哪天这些想法就变成了伟大的创新。
分析其他程序。它们做了什么事?怎样才能做的更好?它们是否错过了什么?回答这些问题可以帮你更好的提出自己的想法。
编写设计文档。设计文档应当勾画出产品的主要功能和你完成它的方式,而且它能使你在开发过程中保持专注并更有计划。你可以查阅一些关于如何写设计文档的资料。此外设计文档还能帮你找出最适合你的项目的编程语言。
从最简单的部分做起。如果你是刚开始接触计算机编程的话, 你应该从最简单的东西做起并不断进步。如果你用一段简单的程序实现一个具体的目标,你将会学到很多东西。
下载一个好用的文本编辑器。几乎所有的程序都是在文本编辑器中写好然后被编译和运行的。你可以使用像是记事本、TextEdit这样的程序来写代码,但我更建议你下载一个支持语法高亮的编辑器,比如Notepad++, JEdit或Sublime Text。这样的编辑器会让你的代码看起来一目了然。
有些语言,比如说Visual Basic,自己的安装包中就带有编辑器和编译器。
学习一门编程语言。 所有的程序都是通过编码实现的。如果你想要开发自己的程序,那么你必须熟悉至少一种编程语言。哪种语言更适合你取决于你想要实现的程序的类型,然而最常用和重要的语言有以下几种:
C语言 - C语言是一门低级语言,这意味着它和计算机硬件的交互更为紧密。C语言已经有很长的历史了,但它仍然被广泛使用。
C++ - C语言最大的弊端是它不是面向对象的,因此产生了C++。 C++是现在世界上最流行的变成语言了。许多常用程序,比如Chrome,Firefox,Photoshop都是用C++开发的。在视频游戏领域C++也非常流行。
Java - Java可以说是C++的进化版, 同时它的可移植性极强。绝大部分计算机,不论安装了什么操作系统,都可以运行Java虚拟机,因此Java程序几乎可以在所有计算机上运行。它在视频游戏和商务软件中被广泛使用,因此被很多人视为必不可少的语言。
C# - C#是一门基于Windows平台的语言,也是Windows程序开发中用到的主要语言之一。他和Java和C++的关系很紧密,如果你对Java已经很熟悉了那么学习C#会很简单。如果你要开发Windows或Windows Phone程序,你需要好好学习下这门语言。
Objective-C - 这是C语言家族中的又一成员, 它被专门设计用于苹果系统的开发。如果你想要开发iPhone或iPad应用,学习这门语言就对了。
下载编译器或解释器。 对于像C++和Java这样的高级语言,你需要有一个编译器来把你的代码翻译成计算机可以直接使用的格式。根据你使用的语言的不同,有许多不同的编译器可供选择。
有一些语言是解释性语言,它们不需要编译器。作为替代,它们需要计算机上安装一个解释器, 然后这样的程序就可以直接运行了。Perl和Python都是解释性语言的代表。
学习基本的编程概念。 无论你选择了哪种语言,你都需要了解一些基本和通用的变成规范。弄清楚语言的语法规范能帮助你创建更为强大的程序。这些通用的概念包括:
声明变量 - 变量是用于存储你程序中的数据的。这些数据可以被存储,修改,操作和再被读取。
使用条件语句(诸如if, else, when等) - 这些语句是程序的基本功能之一,他们决定了程序的逻辑。条件语句是以”true”和”false”为中心的。
使用循环。 循环让你可以一直重复一段过程直到收到结束指令为止。
使用转义符 - 这些指令可以让你创建新行、空白、引号等。
添加注释 - 注释对于帮你记住代码的功能、帮其他程序员理解你的代码以及暂时屏蔽代码片段都很有用。
理解正则表达式。
看一些编程语言相关的书籍。无论你是编程新手还是大牛,总有适合你看的书。你可以在附近的实体书店或者网上书店找到这样的书。手边有一本书以便工作的时候翻一翻是非常有用的。
除了实体书之外,别忘了网络上还有数不清的指南和教程,那都是你的宝贵财富。你可以在51CTO, CSDN, 网易云课堂等网站上找到许多有用的指南。
参加一些课程。 虽说只要用心每个人都可以自学编程, 但如果能有老师和教室这种环境也是大有裨益的。一位计算机专家一对一的辅导将会大幅度加快你掌握编程基础知识和概念的速度。这些课程还能帮你进一步学习数学和逻辑等只是,这对于复杂的程序来讲也是很有必要的。
上课是要花钱的,所以你要确保你上的课能让你学到想学的东西。
多提问题。 互联网可以让你很方便的和其他开发者去的联系。 如果你在项目中遇到了棘手的问题,不妨到诸如StackOverflow这样的网站上去寻求帮助。不过请确保你在提问之前已经尝试了一些解决方法,并且你的问题描述应当清晰明确。
先写一段简单的程序,包含最基本的功能即可。 这就是你的程序原型,它表明了你最终想要实现的程序的功能。原型应当快速迭代,直到你找到了有效的设计模型。比如说,如果你想要开发一个日历程序,那么你的原型应该是一个简单的日历(带有正确的日期)并能向其添加事件。
在开发过程中你的原型会经常变化,因为你常会想到更好的解决问题的办法或是想要添加新的功能。
原型不需要很完美。事实上,艺术和设计上的工作是你最不需要关心的。还拿日历的例子来说,你的原型看起来就像是纯文本的也没关系。
如果你要做一款游戏,你的原型一定要有趣。如果原型都不有趣的话,很可能最终的结果也不会有趣。
如果你的原型无法体现你真正的想法,那么也许你需要重新设计一个了。
建立一个团队。 如果你只靠自己一人开发程序,你不妨用程序原型帮你组建一个团队。团队合作能帮你更快的追踪bug,迭代功能,和设计视觉效果等。
对于小项目来说团队并没有什么必要,但也能显著的减少开发耗时。
要管理好一个团队是个复杂和困难的过程,需要有高超的管理技巧和合理的团队架构。你可以查阅一些关于如何领导一个团队的指南。
必要时从零做起。 一旦你掌握了一门语言,你就可以在短短几天内建立你的原型并让它运行起来了。 因为原型是用于快速迭代的,所以如果你觉得它不能让你满意,就请大胆的推翻自己的想法重新开始吧。
多写注释。 除了程序中最基本的部分都尽量写上注释吧!这能帮你在不得不把你的项目搁置一段时间之后想起来你写了什么,还能帮其他开发者理解你的代码。当你在一个团队中工作时这一点尤为重要。
在测试代码时你还可以用注释暂时屏蔽掉代码中的一部分。只需简单的在你想屏蔽的代码周围加上注释符号它们就不会再被编译了。当你把注释符号删除时他们马上就恢复了。
在阿尔法测试阶段(阿尔法测试阶段是指软件开发过程中最早的阶段,这时产品还没有发布给用户,由开发团队内部进行测试并修复bug——译者注),测试团队可以很小。一个小的团队可以让你获得更有用的反馈,并让你和测试人员一对一的交流。每次你对程序原型作出改进时,新的程序版本都要发送给阿尔法测试人员。测试人员会测试全部的功能并尽全力把程序搞崩溃,并记录下所有的结果。
如果你在开发商业软件,你最好保证你的测试人员都签署了保密协议。这能防止他们把你的程序泄露给其他人、用户或媒体。
抽出时间建立一个良好的测试计划。要确保你的测试人员能够很方便的汇报问题和获得最新的程序版本。GitHub或其他代码仓库都是好用而且简单的处理这个问题的工具。
一遍又一遍的测试你的原型。 Bug是所有开发者都会有的烦恼。错误的代码和不正确的用法都会导致各式各样的问题,即使你的产品已经快完成了。所以你应当继续修改你的原型,一遍又一遍的测试它。尝试各种可能的办法把它搞崩溃,然后再想办法修复,让它在将来不会再崩溃。
如果你的程序要处理日期,就尝试输入一些古怪的日期。因为很久以前或很久以后的日期都可能让程序出现奇怪的问题。
输入错误类型的变量。比如说如果你有一个表格是让用户填写年龄的,就填几个字进去看看程序会如何处理。
如果你的程序有图形界面,就把每个地方都点一遍。看看当你回退到上一个界面,或者点击的顺序错误时会发生什么。
按照重要性处理问题。 当修正一个阿尔法版本的程序时,你要花许多时间修改有问题的功能点。当你处理来自测试人员的问题报告时,它们应当按照两个标准排序:严重性和优先级。
问题的严重性是衡量一个问题所能造成的危害的大小的标准。那些能让程序崩溃、写入错误数据、让程序终止运行的bug是阻碍性的,必须第一时间被修复。那些不能正常工作或返回了错误结果的功能点是很严重的问题,然后那些让程序很难看或者很难用的问题也是重要问题。除此之外还有一般、小问题和微不足道的问题几个标准,这些问题影响的是小模块或不重要的部分。
问题的优先级决定了当你解决bug时下手的顺序。软件开发中修复bug是很耗时的一个过程,会占用你开发新功能和优化现有功能的时间。因此,你必须考虑bug的优先级以便在最后的截止时间前完工。所有阻碍性和严重级别的问题都必须是最高优先级的, 有时会被叫做P1级。 P2级的bug则是指已计划要修复但不会阻碍产品发布的重要问题。P3和P4级的bug不一定会被修复,属于"如果有了会更好"的范畴。
增加更多功能。 在阿尔法阶段,你需要为你的产品增加更多的功能以使它更加接近你的设计文档描绘的样子。阿尔法阶段是你的程序原型不断进化为完整的程序的过程。当这一阶段结束时,你的程序应当实现了所有的功能。
不要偏离你最初的设计文档太远。软件开发中的一个常见问题是"功能狂",就是说把太多新的想法加入到产品中,导致最开始的关注点已经丢失了,把开发时间浪费在太多不同的功能上。你的程序应该把它要做的事情做到最好,而不是变成一锅大杂烩。
测试你添加的每个功能。在阿尔法阶段,每当你添加新功能时,都要把最新的程序版本发给测试人员。版本更新的频率完全取决于你的团队的规模以及功能完成的进度。
阿尔法阶段结束后不要再添加新功能。 一旦你完成了你程序所需的所有功能,你就可以结束阿尔法阶段了。这时不应该再加入任何新的功能了,并且要保证已有的功能可以正常工作。然后你就可以进行进一步的测试和优化,或者叫贝塔阶段。
扩大测试人员的人数。在贝塔阶段,程序将被分发给更多的测试者。 有些开发者会将贝塔阶段公开,或称为公开贝塔阶段。这将允许任何人注册和参加产品的测试。
你可以采用公开贝塔测试,也可以不用,这取决于产品的需求。
连接性能测试。随着程序被越来越多的人使用,可能你的程序的性能将取决于到服务器的连接数。贝塔测试让你可以确认你的程序在很大的负载下是否还能正常工作,从而确保程序发布时是可用的。
优化你的软件。 在贝塔阶段,也不应该增加新的功能。所以你应该把注意力放在提高程序的美感和可用性上。在这个阶段, 用户界面的设计变的十分重要。要保证用户在浏览程序和使用各项功能时没有障碍。
用户界面设计和功能的结合是非常困难和复杂的。有些人就是全职做用户界面设计的。只要保证你自己的工程是简单易用、看起来舒服就行了,毕竟专业的用户界面是需要资金和团队的支持的。
如果你有相应预算,还是有许多从事图形设计的自由职业者可以为你设计一个用户界面的。如果你有一个很棒的项目并期待它取得巨大成功,那就找一个用户界面设计师加入你的团队吧!
继续找问题。 在整个贝塔阶段,你都应该给用户汇报的问题做归类和定优先级。因为有更多的测试者测试了产品,很可能会发现新的问题。牢记项目的最终截止日期,按照问题的重要性把他们干掉吧。
做好市场规划。 如果你想要获取用户,你就得保证他们能知道你的程序的存在。就好像任何其他产品一样,你需要做一点广告,好让人们知道有这回事。市场推广活动的广度和深度取决于你程序的功能(你的程序是专业性的还是大众性的?)和你可用的预算。下面有一些简便的提高你的程序的知名度的方法:
在相关的论坛上发帖子。要保证你遵守了发帖的论坛的规定以防你的帖子被屏蔽。
给一些科技媒体发送你的程序样例。找一些适合你的程序的博客或网站,给他们的编辑发一个样例程序详细介绍一下你的程序。别忘了带上几张截图。
在视频网站上上传一些视频。如果你的程序是用来完成某种特定工作的,就做一些视频来演示一下它是怎么工作的,上传到视频网站上,并把他们标记为"如何做。。。"类的视频。
在社交媒体上创建主页。你可以在微信、人人网上免费创建一个账号或主页来介绍你的程序,也可以在微博上发布一些跟你的程序或公司相关的新闻。
把你的程序放在你的网站上。对于小的程序,你大可以把程序文件放在你的个人网站上。如果你想要对用户收费的话你还需要引入一个付费系统。如果你的程序开始流行,你可能需要把程序文件放在服务器上以便让更多用户下载。
创立支持服务。一旦你的程序公之于众,你总是会收到来自用户的各种技术性问题,比如不知道该如何使用你的程序等。你的网站应当有全面的文档和某种形式的支持服务,比如说论坛、电子邮件、人工服务或它们的组合。当然了,你能提供的服务取决于你的预算。
一直保持更新。几乎所有的程序在最初发布一段时间之后都要打补丁和更新。这些更新可能会修复一些严重的或不严重的问题,升级安全协议,提高稳定性,或者添加新功能,甚至重制用户界面。不断更新你的程序能帮你提高竞争力。
本页面已经被访问过1,856次。> 【转】程序开发中版本管理之命名规则及格式
【转】程序开发中版本管理之命名规则及格式
本测试主要目的是考察Erlang文件I/O同C标准I/O之间具体的性能差异。
Erlang中有普通文件I/O和裸文件I/O两类操作,其中普通文件I/O的文件句柄是一个进程ID,因此可以从Erlang节点网络的任意位置访问该句柄;而裸文件I/O的文件句柄是一个tuple结构,只在同一节点上打开该文件的进程内有效,无法跨进程跨节点访问。一般来说裸文件I/O速度要远高于普通文件I/O。
此外Erlang RTS还有一些选项能够改善大I/O流量情况下的进程响应速度,这里主要使用的是如下2个选项:
+K true|false - 该选项用于打开(true)或关闭(false,默认)Erlang RTS的Kernel poll功能。当Kernel poll被关闭时,RTS使用普通的用户态事件轮询接口select/poll进行进程和I/O调度,调度开销较大;打开Kernel poll时,RTS将使用内核级事件轮询接口(如Linux上的epoll等)进行调度,开销较小,可以提高存在大量进程时的响应速度。
+A integer - 该选项用于调整Erlang RTS用于异步I/O的异步线程池大小。目前可以设置为0(不使用异步I/O,默认)至1024之间的整数。当不使用异步I/O时,RTS会把对于较大数据块的I/O操作切分为多个小数据块的I/O,以避免单个大I/O操作阻塞RTS的消息循环导致其他进程无法继续响应;当使用异步I/O时,RTS会把I/O操作派发到异步线程池中的某个worker线程的任务队列里,由独立于RTS消息循环的worker线程来处理耗时很长的I/O操作(Leader-Follower模式)。这两种对大I/O操作的处理方式都存在一定开销:不使用异步I/O时单个I/O操作变成多次I/O操作,让I/O操作调用开销增加了N倍(N为平均切分出的I/O操作次数);使用异步I/O时,OS需要在RTS调度线程和异步I/O线程之间进行上下文切换,这也是相对较为耗时的操作。
为此,评测时也进行了默认状态(+K false +A 0 )和调整后状态(+K true +A 32 )的I/O性能比较。
评测环境及用例
评测环境为公司发放的笔记本HP nx6320,Intel Duo TGHz(2 cores),1GB RAM,60G SATA HD。
测试用例分为顺序读写和随机读写2种,每种类型下分别进行参数调整前后的读和写时间测试:
顺序读算法:按照指定的块大小逐块读取测试数据文件,直至全部读取完毕为止,测量全部用时;
顺序写算法:按照指定的块大小逐块将随机数据写入测试数据文件,直至写入大小满足要求为止,测量全部用时;
随机读算法:随机移动到测试数据文件内某处,按照指定的块大小读取1块,直至累计读取长度满足要求为止,测量全部用时;
随机写算法:将测试数据文件预先truncate到指定大小,然后随机移动到文件内某处,按照指定的块大小写入1块随机数据,直至累计写入长度满足要求为止,测量写入过程全部用时。
测试数据文件大小为100MB,I/O块大小从1KB、2KB开始按2的倍数递增至1024KB,以测试不同I/O块大小对性能的影响。
使用Erlang默认参数进行读操作时,C标准I/O速度是Erlang普通文件I/O速度的~5076%,是Erlang裸文件I/O速度的~191%;增加上述的RTS选项后Erlang I/O速度基本没有变化。图表如下:
使用Erlang默认参数进行写操作时,C标准I/O速度是Erlang普通文件I/O速度的~92%,是Erlang裸文件I/O速度的~194%;增加上述的RTS选项后,普通文件I/O速度降低,裸文件I/O速度提高,此时C标准I/O速度是Erlang普通文件I/O速度的~192%,是Erlang裸文件I/O速度的~124%。图表如下:
使用Erlang默认参数进行读操作时,C标准I/O速度是Erlang普通文件I/O速度的~2556%,是Erlang裸文件I/O速度的125%;增加上述的RTS选项后Erlang I/O速度基本没有变化。图表如下:
& 使用Erlang默认参数进行写操作时,C标准I/O速度是Erlang普通文件I/O速度的~128%,是Erlang裸文件I/O速度的~62%;增加上述的RTS选项后普通文件I/O速度有所提高,但裸文件I/O速度有所降低,此时C标准I/O速度是Erlang普通文件I/O速度的~125%,是Erlang裸文件I/O速度的~107%。图表如下:
C标准I/O顺序读写代码
见附件中的 seq_rw.c.zip。
C标准I/O随机读写代码
见附件中的rand_rw.c.zip。
Erlang顺序读写代码
见附件中的 seq_rw.erl.zip。
Erlang随机读写代码
见附件中的 rand_rw.erl.zip。
从网上找到的有关软件发布时候,如何命名的相关规则。虽然你可以对自己发布的软件随便起名,但尊循一定规则,还是非常有交流。第一篇文章:1 版本类型1.1 正式版本Enhance
------分隔线----------------------------
相关阅读排行
相关最新文章
Copyright 2012- ( Coin163 ) All Rights Reserved &&

我要回帖

更多关于 小米全面屏 的文章

 

随机推荐