欢迎来到天天文库
浏览记录
ID:22294189
大小:58.50 KB
页数:5页
时间:2018-10-28
《提高程序性能》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ASP.NET中提高程序性能的方法研究(13级教育技术学王霞20131212)摘要:文章从程序编码优化、数据操作优化和配置优化三个万血简要介绍了网站优化的基木方法,以便提高程序性能,为网站设计者提供参考。关键字:提高程序性能;网站优化;ASP.NET网站一、引言众所周知,M站程序的运行效果直接影响着网站的质朵和推广,网站性能差,致使用户访问网页吋等待吋间过LC响应过慢、均会成为川户流失的潜在因素。因此M站优化就显得尤为重要。如何提高程序性能也就成为Y需要网站设计吝深入细致研究的重要问题。文章从程序编码优化
2、、数据揀作优化和配置优化三个方i&i对如何提高程序性能做了®木介绍,具体方法如下:二、程序编码优化从编码万血优化程序性能主要从三方面入手:(-)集合操作.NET框恕提供了诂•如ArrayList、Hashtable、Dictionary等集合类型。要了解各个集☆的特性,选择合适的集合。在所有的集合屮数组是性能最高的,如果要存储的数据类型一致和界景同定,特别是对值类型的数组进行操作时没有装箱和拆箱操作,效率极高。在集合数目岡定的情况下,数组的存収效率最高,泛型次之,ArrayList最慢。在选择集合类型时成
3、考虑几点:1.集合屮的元素类型是否是一致的,比如集合屮将要存储的元素都是int或奍都是string类型的就可以考虑使用数组或者泛型集合,这样在存储数值类型元素就可以避免装箱拆箱操作,即使是引用类型的元素也可以避免类型转换操作。2.集合中的元素个数是否是凼定的,如果集合中存储的元素是固定的并且元素类型是一致的就可以使用数组來存储。3.将来对集合的操作集屮在那些方囬,如果对集合的操作以杏找居多可以考虑HashTable或者Dictionary4、ork屮对这类集☆采用了特殊机制,所以在杳找时比较的次数比M:它集合要少。W外,在使用可变集合吋如果不制定初始界景人小,系统会使用一个默认值来指定可变集合的初始界景人小,如果将来元素个数超过初始界景人小就会先在内部重新构建一个集合,再将原来集合屮的元素复制到新集合屮,可以在实例化可变集合时指定一个相对较人的初始界景,这样在叫可变集合屮添加人景元素时就可以避免集合扩充界景带来的性能损失。(二)字符串操作在.NETFramework屮String类是一个比较特殊的类,我们知道值类型变景直接在栈屮分配内存来存储5、变景的值,丼且不需要垃圾回收器来I叫收,人部分引用类型变景是在堆屮分配内存来存储变景的值,在不再使用的情况下会被垃圾I叫收器回收所占用的内存。String类型的变景过然是引用类型变景(常用的赋值方式却很类似于值类型变景的赋值方式,如stringa=”123”),但是CLR(CommonLanguageRuntime,通用语言运行时)通过了一种特殊的方法来存放字符串,CLR会维护一个会自动维护一个名为“拘留池”(internpool,不知道为什么微软会这么叫)的表,它包含在程序屮声明的每个唯一字符申常数的单6、个实例,以及以编程方式添加的String的任何唯一实例。该拘留池节约字符串存储区。如果将字符串常数分配给几个变量,贝悔个变解:设置为引用“拘留池”(internpool)屮的同一常数,而不是引用具有相M值的String的几个不M实例。在给字符中变量赋值时会首先在“拘留池”中检查是否有与耍赋位的伉相等的字符中,如果存仵就会返回该字符中的引用,如果不存在就M字符串“驻留池”中添加该字符中,并TL将该字符中的引用返W。这样一来4:每次连接字符串时都有可能创建新的字符屯对象(如采“驻留池”中不存在对应的字符中的话7、),从Iflj导致了性能低下。在String类柯个方法专门用来检测“拘留池”屮是否存在指定字符串引用的方法,这个方法就是Islnterned(stringstr)方法,如果存在这个引用则返8、nlstr的引用,如果不存在这个引用就返回null。在需要多次连接字符串时可以考虑使用System.Text.StringBuilder对象,这是一个可变矜兒的字符串对象。在实例化StringBuilder对象时会指定一个界用:(如果不显示指定,则系统默认会指定初始容量为16,如果在程序中最终连接后的容量大于这个伉4以9、ft行指定一个较大的伉作为初时容量,这样也能提高性能),在进行添加、插入及替换等修改操作时如果不超过容量,则会直接在缓冲区中操作,如果超过容量则会重新分配一个更大的缓冲区,并将原来的数据S制到新缓冲区。(三)数据类型转换在开发中经常会遇到类型转换的问题,一种情况是巾字符申类型转挽成数值类型,:W—种情况是存迕继承关系或者实现关系的类之间进行类型转换。在上而的两种转换中如果存在不能转换的情况,则会抛出异常,在引发和处理异常时将消
4、ork屮对这类集☆采用了特殊机制,所以在杳找时比较的次数比M:它集合要少。W外,在使用可变集合吋如果不制定初始界景人小,系统会使用一个默认值来指定可变集合的初始界景人小,如果将来元素个数超过初始界景人小就会先在内部重新构建一个集合,再将原来集合屮的元素复制到新集合屮,可以在实例化可变集合时指定一个相对较人的初始界景,这样在叫可变集合屮添加人景元素时就可以避免集合扩充界景带来的性能损失。(二)字符串操作在.NETFramework屮String类是一个比较特殊的类,我们知道值类型变景直接在栈屮分配内存来存储
5、变景的值,丼且不需要垃圾回收器来I叫收,人部分引用类型变景是在堆屮分配内存来存储变景的值,在不再使用的情况下会被垃圾I叫收器回收所占用的内存。String类型的变景过然是引用类型变景(常用的赋值方式却很类似于值类型变景的赋值方式,如stringa=”123”),但是CLR(CommonLanguageRuntime,通用语言运行时)通过了一种特殊的方法来存放字符串,CLR会维护一个会自动维护一个名为“拘留池”(internpool,不知道为什么微软会这么叫)的表,它包含在程序屮声明的每个唯一字符申常数的单
6、个实例,以及以编程方式添加的String的任何唯一实例。该拘留池节约字符串存储区。如果将字符串常数分配给几个变量,贝悔个变解:设置为引用“拘留池”(internpool)屮的同一常数,而不是引用具有相M值的String的几个不M实例。在给字符中变量赋值时会首先在“拘留池”中检查是否有与耍赋位的伉相等的字符中,如果存仵就会返回该字符中的引用,如果不存在就M字符串“驻留池”中添加该字符中,并TL将该字符中的引用返W。这样一来4:每次连接字符串时都有可能创建新的字符屯对象(如采“驻留池”中不存在对应的字符中的话
7、),从Iflj导致了性能低下。在String类柯个方法专门用来检测“拘留池”屮是否存在指定字符串引用的方法,这个方法就是Islnterned(stringstr)方法,如果存在这个引用则返
8、nlstr的引用,如果不存在这个引用就返回null。在需要多次连接字符串时可以考虑使用System.Text.StringBuilder对象,这是一个可变矜兒的字符串对象。在实例化StringBuilder对象时会指定一个界用:(如果不显示指定,则系统默认会指定初始容量为16,如果在程序中最终连接后的容量大于这个伉4以
9、ft行指定一个较大的伉作为初时容量,这样也能提高性能),在进行添加、插入及替换等修改操作时如果不超过容量,则会直接在缓冲区中操作,如果超过容量则会重新分配一个更大的缓冲区,并将原来的数据S制到新缓冲区。(三)数据类型转换在开发中经常会遇到类型转换的问题,一种情况是巾字符申类型转挽成数值类型,:W—种情况是存迕继承关系或者实现关系的类之间进行类型转换。在上而的两种转换中如果存在不能转换的情况,则会抛出异常,在引发和处理异常时将消
此文档下载收益归作者所有