ASP.NET编程:利用string.Format必要注重的一本性能成绩仓酷云
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。明天,我在写C#代码时,俄然发明一个最熟习的生疏人——string.Format。在写C#代码的日子里,与它旦夕相伴,却没有真正往懂得它。只晓得在字符串对照多时,用它比用加号举行字符串联接效力更高(固然也更便利)。但是却历来没有问过为何?在生存中也有相似的征象,与你旦夕相处、你最熟习的人,你常常不会进一步往懂得她(他),你已习气了她(他),你以为你已太懂得她(他)了。。。真的是如许吗?这值得往思索。。。
博问中的一个成绩——StringBuilder,String.concat(),String+String哪个效力高?引发了我的猎奇心,想一探string.Format的事实,并且在开辟中也恰好碰到一个字符串联接的成绩。
懂得.NET天下中的工具实在很复杂,只需经由过程工具反编译出响应的.NET类库代码,我们来看看string.Fomat的代码:
publicstaticstringFormat(stringformat,objectarg0,objectarg1,objectarg2){if(format==null)thrownewArgumentNullException("format");returnstring.Format((IFormatProvider)null,format,arg0,arg1,arg2);}
实践挪用的是别的一个署名的string.Format:
publicstaticstringFormat(IFormatProviderprovider,stringformat,paramsobject[]args){if(format==null||args==null)thrownewArgumentNullException(format==null?"format":"args");StringBuilderstringBuilder=newStringBuilder(format.Length+args.Length*8);stringBuilder.AppendFormat(provider,format,args);return((object)stringBuilder).ToString();}
哦,本来用的就是StringBuilder(大概你早就晓得了),string.Format只是StringBuilder的改装精简版。
既然是StringBuilder,它一定没法制止一个影响StringBuilder功能的成绩——初始化容量(capacity)的成绩,string.Format是怎样办理的呢?从下面的代码一眼就能够看出,初始化容量是这么盘算出来的:
format.Length+args.Length*8
从这个盘算公式能够看出,假定必要format的字符串是10个,假如这10字符串累加起来的字符数不凌驾80,就可以发扬StringBuilder的最好功能;不然,StringBuider必要扩容,从而带来功能丧失。
以是,关于年夜字符串,string.Format不是最好选择。
那最好选择是甚么?仍是StringBuilder,只不外要本人写代码盘算初始化容量。分享一下明天我们在实践开辟中利用的代码:
varbodyFormat="<spanid="comment_body_{0}">{1}</span><br/>";vardiggFormat="<ahref="javascript:void(0);"onclick="voteComment({0},Digg)">撑持({2})</a>";varburyFormat="<ahref="javascript:void(0);"onclick="voteComment({0},Bury)">否决({3})</a>";varargs=newstring[]{comment.ID.ToString(),comment.Body,comment.DiggCount.ToString(),comment.BuryCount.ToString()};//盘算初始化容量intcapacity=bodyFormat.Length+diggFormat.Length+buryFormat.Length;for(inti=0;i<args.Length;i++){capacity+=args.Length;}varsb=newStringBuilder(capacity);sb.AppendFormat(bodyFormat,args);sb.AppendFormat(diggFormat,args);sb.AppendFormat(buryFormat,args);Post.Text=sb.ToString();
这里没有利用string.Format,一是由于comment.Body的字符数会良多,string.Format分派的初始化容量不敷。二是由于string.Format不克不及分批Fomat,格局字符串只能写在一同,形成格局字符串很长,也就是bodyFormat,diggFormat,buryFormat要拼成一个字符串。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
页:
[1]