如何进行程序优化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在程序界有一个至理名言:“程序的编写很简单,关键看您会不会拷贝、粘贴”。我们程序员在编写代码时“很会”拷贝;但“粘贴”的技术却不行,粘的整个系统的“垃圾代码成灾”,让我们的CPU做了大量的无用功。因此,大家在编写代码时必须时刻注意:您所编写的或者拷贝的每一行代码确实为业务所需,是完成系统功能所“不得不做”的;如果不是必须严格“斩除”。
程序代码的质量的问题是软件系统无法正常运行的主要问题,而代码的“低效性”则是影响系统性能的最核心问题。如何进行程序优化,提高程序代码的质量与运行效率?这个问题是一直困扰我们软件工作者的问题。作者分析大量的软件代码后,认为编写优质高效的运行程序还需要从以下方面下手:
2
软件系统在运行时需要占用各种资源,包括硬件资源和软件资源。硬件资源应该主要考虑CPU的处理时间、线程使用、RAM、I/O、网络等资源。软件资源目前主要突出的是:数据库连接、共享对象等资源。
}
代替
代码段2:
{
//多余声明的VOlist.
ListVOlist = api.findRealDemanList (year, demandStatus) ;
session.setAttribute("list", VOlist) ;
}
7、在声明指针变量时,尽量不赋值。如
代码段3:
{
List Volist = new vector();
3、程序代码的顺序应该遵循“程序金字塔结构”,如图1。尽量让占用CPU、RAM资源较多的方法、语句后面执行,同样因为系统有可能执行不到,比如将数据库查询、文件读写等方法移到“万不得已”时才执行的位置。在代码编写时将参数检查等轻量级代码放前面,越重量级的代码放在越后面。这样如果执行前面轻量级代码时执行到了return语句,后面重量级代码就可不执行了。
如何进行程序优化
葛志春1+
福建省毕业生就业公共网研发服务中心福建省福州市福建人才大厦12F 350001
摘要:
软件的性能问题常常是软件工作者关注的主题,但究竟要如何优化程序使软件系统的性能达到要求却一直以来没有一个系统的解决方案。本文作者从实际经验出发通过如何优化CPU处理时间、RAM、I/O操作、共享软件资源、数据库操作等方面系统的介绍了如何优化运用程序,提升系统运行效率的基本方法。最后还介绍了提高代码质量的一些方法。
图1
4、能不用循环、递归的尽量不要用循环、递归,即使用了也要想办法减少循环、递归次数。
5、能将多条语句并成一条,又不影响程序清晰性的合并成一条,比如可以将声明语句和赋值语句合并。
6、在不影响程序清晰性的情况下,能不声明的变量尽量不要声明,如可采用:
代码段1:
{
session.setAttribute ("list", api.findRealDemanList (year, demandStatus)) ;
2.1.2
RAM资源,对于一个软件系统来说与CPU资源同样的珍贵;节约它的方法同样是:尽量的让RAM少存放对象,或者不存放对象,即使“万不得已”存放了也必须尽量缩短对象在RAM的驻留时间。
对于像内存管理这样的理论“好高骛远”的程序员来说没有什么意义;而对于编写高质量的代码来说确必不可少。Java中内存的使用分为堆和堆栈两部分,在堆中存放指针,在堆栈中存放对象。当堆栈中的对象不再被任何指针引用时,垃圾回收器会将其垃圾收集,否则将一直引用。指针的生命周期是方法体中声明的指针方法运行完之后结束;指向对象的指针指向对象死亡之后死亡;Session指针Session结束后死亡。Session中的指针Remove之后,或者session死亡之后结束。
1、系统中垃圾代码过多,不简洁;导致CPU做了很多无用功;
2、程序算法不合理,比如循环次数过多,随意使用递归等;
3、可以用一条语句实现的,用了多条语句才达到相同的目的;
4、不该放在循环体内部的,放在循环体内部做循环;
5、不该调用递归算法的,调用递归算法;
6、可以选择执行的代码,却每次都让它执行等。
其实对于以上问题的解决没有什么难度。问题的解决在于能否用心去做每件事,能否认真对待、分析所写的每一行代码。“小葛公里之二”:“技术含量的高低在于技术人员的细心程度”。
VOlist = api.findRealDemanList (year, demandStatus) ;
}
其实第一句中new Vector()对象根本没用,这样不但让费了new Vector()的漫长cpu时间,而且还让费了堆栈空间。
8、尽量避免递归或循环调用SQL语句或者其它较占资源的操作。否则循环次数一多,系统必然崩溃。
9、一个方法尽量只做一件事,将一个方法中做多件事的分成多个方法,这样可以删除很多冗余代码。比如:一个方法可能用了上10个if…else…语句,这时应该将其分开处理,让每一if…else…中只调用一个方法。
10、能够用JavaScript实现的尽量不要提交到系统后台执行,这样一方面可以降低网络流量,另一方面可以大大降低服务器端的负荷。
2.1
Fra Baidu bibliotek2.1.1
CPU处理时间资源是最宝贵的资源,在程序编写时我们要时时注意“节约”这一宝贵资源;尽量让CPU少做事,或者不做事;让CPU做的每一件事都是“不得不做的事”。请记住“小葛公理之一”:“最快做完事情的方法就是尽量不做事,什么都不做是最快的”。
在分析系统代码时,我发现我们系统慢的一个重要原因是:我们的程序走了很多的“冤枉路”,我们的CPU做了很多“无聊的事情”。这主要体现在以下几个方面:
关键词:性能共享资源数据库
1
运用程序的性能的问题是最让我们的软件工作者头疼的问题,特别是大型网站的性能问题。我们的软件工作者们常常发现新系统上线后巨慢或者频繁崩溃,但却不知道问题出自那里?!新系统无法正常运行的“可能的问题很多”:可能是硬件的配置问题,可能是网络带宽的问题,可能是防火墙配置的问题,可能是操作系统的问题,可能是数据库的配置问题,可能是Web中间件配置的问题,可能是程序代码的问题,可能是。。。。。。有很多的“可能”,但最有“可能”的却都是来自运行程序代码质量的问题。
算法是否合理、是否高效,对于“软件蓝领”来说可算是高难度的问题;但对于以下几个问题来说就看用心不用心的问题了。只要您细心点,您会发现下面提到的方法其实真的很简单。
1、将不需要在循环中执行的语句尽量放在循环体之外。
2、应该发在IF…Else…语句中的语句,必须发在IF…Else..语句中,因为系统有可能执行不到。
程序代码的质量的问题是软件系统无法正常运行的主要问题,而代码的“低效性”则是影响系统性能的最核心问题。如何进行程序优化,提高程序代码的质量与运行效率?这个问题是一直困扰我们软件工作者的问题。作者分析大量的软件代码后,认为编写优质高效的运行程序还需要从以下方面下手:
2
软件系统在运行时需要占用各种资源,包括硬件资源和软件资源。硬件资源应该主要考虑CPU的处理时间、线程使用、RAM、I/O、网络等资源。软件资源目前主要突出的是:数据库连接、共享对象等资源。
}
代替
代码段2:
{
//多余声明的VOlist.
ListVOlist = api.findRealDemanList (year, demandStatus) ;
session.setAttribute("list", VOlist) ;
}
7、在声明指针变量时,尽量不赋值。如
代码段3:
{
List Volist = new vector();
3、程序代码的顺序应该遵循“程序金字塔结构”,如图1。尽量让占用CPU、RAM资源较多的方法、语句后面执行,同样因为系统有可能执行不到,比如将数据库查询、文件读写等方法移到“万不得已”时才执行的位置。在代码编写时将参数检查等轻量级代码放前面,越重量级的代码放在越后面。这样如果执行前面轻量级代码时执行到了return语句,后面重量级代码就可不执行了。
如何进行程序优化
葛志春1+
福建省毕业生就业公共网研发服务中心福建省福州市福建人才大厦12F 350001
摘要:
软件的性能问题常常是软件工作者关注的主题,但究竟要如何优化程序使软件系统的性能达到要求却一直以来没有一个系统的解决方案。本文作者从实际经验出发通过如何优化CPU处理时间、RAM、I/O操作、共享软件资源、数据库操作等方面系统的介绍了如何优化运用程序,提升系统运行效率的基本方法。最后还介绍了提高代码质量的一些方法。
图1
4、能不用循环、递归的尽量不要用循环、递归,即使用了也要想办法减少循环、递归次数。
5、能将多条语句并成一条,又不影响程序清晰性的合并成一条,比如可以将声明语句和赋值语句合并。
6、在不影响程序清晰性的情况下,能不声明的变量尽量不要声明,如可采用:
代码段1:
{
session.setAttribute ("list", api.findRealDemanList (year, demandStatus)) ;
2.1.2
RAM资源,对于一个软件系统来说与CPU资源同样的珍贵;节约它的方法同样是:尽量的让RAM少存放对象,或者不存放对象,即使“万不得已”存放了也必须尽量缩短对象在RAM的驻留时间。
对于像内存管理这样的理论“好高骛远”的程序员来说没有什么意义;而对于编写高质量的代码来说确必不可少。Java中内存的使用分为堆和堆栈两部分,在堆中存放指针,在堆栈中存放对象。当堆栈中的对象不再被任何指针引用时,垃圾回收器会将其垃圾收集,否则将一直引用。指针的生命周期是方法体中声明的指针方法运行完之后结束;指向对象的指针指向对象死亡之后死亡;Session指针Session结束后死亡。Session中的指针Remove之后,或者session死亡之后结束。
1、系统中垃圾代码过多,不简洁;导致CPU做了很多无用功;
2、程序算法不合理,比如循环次数过多,随意使用递归等;
3、可以用一条语句实现的,用了多条语句才达到相同的目的;
4、不该放在循环体内部的,放在循环体内部做循环;
5、不该调用递归算法的,调用递归算法;
6、可以选择执行的代码,却每次都让它执行等。
其实对于以上问题的解决没有什么难度。问题的解决在于能否用心去做每件事,能否认真对待、分析所写的每一行代码。“小葛公里之二”:“技术含量的高低在于技术人员的细心程度”。
VOlist = api.findRealDemanList (year, demandStatus) ;
}
其实第一句中new Vector()对象根本没用,这样不但让费了new Vector()的漫长cpu时间,而且还让费了堆栈空间。
8、尽量避免递归或循环调用SQL语句或者其它较占资源的操作。否则循环次数一多,系统必然崩溃。
9、一个方法尽量只做一件事,将一个方法中做多件事的分成多个方法,这样可以删除很多冗余代码。比如:一个方法可能用了上10个if…else…语句,这时应该将其分开处理,让每一if…else…中只调用一个方法。
10、能够用JavaScript实现的尽量不要提交到系统后台执行,这样一方面可以降低网络流量,另一方面可以大大降低服务器端的负荷。
2.1
Fra Baidu bibliotek2.1.1
CPU处理时间资源是最宝贵的资源,在程序编写时我们要时时注意“节约”这一宝贵资源;尽量让CPU少做事,或者不做事;让CPU做的每一件事都是“不得不做的事”。请记住“小葛公理之一”:“最快做完事情的方法就是尽量不做事,什么都不做是最快的”。
在分析系统代码时,我发现我们系统慢的一个重要原因是:我们的程序走了很多的“冤枉路”,我们的CPU做了很多“无聊的事情”。这主要体现在以下几个方面:
关键词:性能共享资源数据库
1
运用程序的性能的问题是最让我们的软件工作者头疼的问题,特别是大型网站的性能问题。我们的软件工作者们常常发现新系统上线后巨慢或者频繁崩溃,但却不知道问题出自那里?!新系统无法正常运行的“可能的问题很多”:可能是硬件的配置问题,可能是网络带宽的问题,可能是防火墙配置的问题,可能是操作系统的问题,可能是数据库的配置问题,可能是Web中间件配置的问题,可能是程序代码的问题,可能是。。。。。。有很多的“可能”,但最有“可能”的却都是来自运行程序代码质量的问题。
算法是否合理、是否高效,对于“软件蓝领”来说可算是高难度的问题;但对于以下几个问题来说就看用心不用心的问题了。只要您细心点,您会发现下面提到的方法其实真的很简单。
1、将不需要在循环中执行的语句尽量放在循环体之外。
2、应该发在IF…Else…语句中的语句,必须发在IF…Else..语句中,因为系统有可能执行不到。