闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐差渻閵堝棗鍧婇柛瀣尰濞艰鈹戠€n偀鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷闁圭虎鍠楅悡娑㈡倶閻愭彃鈷旈柕鍡樺浮閺屽秷顧侀柛鎾卞妿缁辩偤宕卞☉妯硷紱闂佸憡渚楅崢楣冨汲閿旈敮鍋撻崗澶婁壕闂佸憡娲﹂崜娑㈠储閹间焦鍊甸柛蹇擃槸娴滈箖姊洪柅鐐茶嫰婢у鈧娲戦崡鍐差嚕娴犲鏁囨繝褎鍎虫禍鎯归敐鍥┿€婃俊鎻掔墛娣囧﹪顢涘顒佇╅梺缁橆殕瀹€绋款潖濞差亜宸濆┑鐘插€搁~搴ㄦ⒑缁嬫鍎愰柟鍛婄摃椤g偓绻濋姀锝嗙【妞ゆ垵瀚幑銏ゅ幢濞戞瑧鍘介梺瑙勬緲閸氣偓缂併劌顭烽弻宥堫檨闁告挻宀稿畷褰掑垂椤旂偓娈鹃梺鍝勬川閸犳挾寮ч埀顒€鈹戦鏂や緵闁告挻鐩、娆撳幢濞戞瑢鎷洪柣鐘充航閸斿苯鈻嶉幇鐗堢厵闁告垯鍊栫€氾拷 (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊為悷婊冪箻瀵娊鏁冮崒娑氬幈濡炪値鍘介崹鍨濠靛鐓曟繛鍡楃箳缁犳娊鏌嶈閸撴瑧绮诲澶婄?闂侇剙绉寸粻顖炴倵閿濆骸鏋涢悷娆欑畵閹鏁愭惔鈩冪亶闂佺粯鎸诲ú鐔煎蓟瀹ュ鐓涘ù锝呮啞閻忔挸鈹戦悙鑼闁搞劌缍婂﹢浣虹磼缂併垹寮柡鈧潏鈹惧亾濮樼偓瀚� (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻闁圭虎鍠楅鏍⒑缁嬫鍎愰柛銊ユ健楠炲啫螖閳ь剟鍩ユ径濞炬瀻閻庯綆鍓涚粣妤佷繆閻愵亜鈧劙寮插⿰鍫熷亗闁跨喓濮撮拑鐔兼煥濠靛棭妲哥紒鐙呯秮閺屻劌鈹戦崱姗堢礊濠碘槅鍋勭€氼喚妲愰幘瀛樺闁告繂瀚烽埀顒€鐭傞弻娑㈠Ω閵壯冪厽閻庢鍠栭…閿嬩繆閹间礁鐓涢柛灞剧煯缁ㄤ粙姊绘担鍛靛綊寮甸鍌滅煓闁硅揪瀵岄弫鍌炴煥閻曞倹瀚� (0) +1
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐差渻閵堝棗鍧婇柛瀣尰濞艰鈹戠€n偀鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷闁圭虎鍠楅悡娑㈡倶閻愭彃鈷旈柕鍡樺浮閺屽秷顧侀柛鎾卞妿缁辩偤宕卞☉妯硷紱闂佸憡渚楅崢楣冨汲閿旈敮鍋撻崗澶婁壕闂佸憡娲﹂崜娑㈠储閹间焦鍊甸柛蹇擃槸娴滈箖姊洪柅鐐茶嫰婢у鈧娲戦崡鍐差嚕娴犲鏁囨繝褎鍎虫禍鎯归敐鍥┿€婃俊鎻掔墛娣囧﹪顢涘顒佇╅梺缁橆殕瀹€绋款潖濞差亜宸濆┑鐘插€搁~搴ㄦ⒑缁嬫鍎愰柟鍛婄摃椤g偓绻濋姀锝嗙【妞ゆ垵瀚幑銏ゅ幢濞戞瑧鍘介梺瑙勬緲閸氣偓缂併劌顭烽弻宥堫檨闁告挻宀稿畷褰掑垂椤旂偓娈鹃梺鍝勬储閸ㄥ綊鎷戦悢鍏肩厪濠㈣泛鐗嗛崝姘舵煟鎼搭喖寮慨濠呮缁棃宕卞Δ鈧瀛樼箾閸喐顥堥柡宀嬬畵瀹曟﹢顢旈崟顒備邯闂備礁鎼惌澶岀礊娴e壊鍤曟い鏇楀亾鐎规洖鐖兼俊鐑藉閻樺崬顥氶梻渚€鈧偛鑻晶鎾煛鐏炲墽銆掗柍褜鍓ㄧ紞鍡涘磻閸涱垯鐒婃い鎾卞灪閻撳啴鏌﹀Ο渚▓婵″弶鎮傞弻宥囨嫚閼碱儷褎銇勯姀鈭忓綊藝鏉堚晝纾奸柕濞垮劘閸嬨垽鏌″畝鈧崰鎰箔閻旂厧鍨傛い鏃傗拡濞煎酣鏌f惔銈庢綈婵炲弶锕㈠畷鏇熺附閺夊棗娲、姘跺焵椤掑嫬钃熼柨鐔哄Т閻掑灚銇勯幒鎴濐仾闁搞倕绉归弻鏇熷緞濞戞艾顕辩紓浣靛妼椤嘲顫忓ú顏勪紶闁告洦鍓欑粣娑㈡⒑缁嬫鍎戦柛瀣ㄥ€涘Λ銏ゆ⒑缂佹ê濮夐柛搴涘€濆畷鎰板垂椤愶絽寮垮┑鈽嗗灣閸樠勭妤e啯鍊垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閻樻爠鍥ㄧ厱闁斥晛鍟ㄦ禒锔剧磼椤旂懓澧插ǎ鍥э躬閹瑩顢旈崟銊ヤ壕闁哄稁鍘肩粈澶屾喐韫囨洖鍨濆┑鐘宠壘缁狅綁鏌eΟ鐑樷枙婵☆偅绮撳铏圭矓閸℃顏存繛鍫熸礋閺岋綁骞樼€涙ḿ顦伴梺鍝勭灱閸犳牠寮婚崶顒佹櫇闁逞屽墴閹﹢鏌嗗鍡欏幈闂侀潧鐗嗛幏瀣磿閺冨牊鐓涢悘鐐额嚙閳ь剚绻傞锝夊醇閺囩偟顔囬柟鑲╄ˉ閳ь剙寮跺Ο濠囨⒒閸屾瑧顦﹂柟纰卞亰瀵敻顢楅崒婊呯厯闂佺鎻粻鎴︽偂閳ユ剚鐔嗛悹鍝勫娇閸儱鍑犻幖娣妽閻撴瑩姊洪銊х暠闁哄鍊濋弻宥囨嫚閼碱剛顔婄紓浣介哺閹瑰洤鐣烽幒鎴僵妞ゆ垼妫勬禍鎯ь渻鐎n亜顒㈠┑顖氥偢閺岋紕浠︾拠鎻掑闂佹眹鍊濈粻鏍蓟閿濆憘鐔封枎閹勵唲闂備浇妫勯崯浼村窗閺嶎厼钃熼柨婵嗩槸缁秹鏌涚仦缁㈡畷閻庢碍鐩鐑樻姜閹殿噮妲紓浣割槺閺佹悂骞戦姀鐘斀闁搞儮鏅濋惁鍫ユ⒑缁嬫寧婀扮痪鏉跨Ч閹﹢骞樼紒妯锋嫼闂佸憡绻傜€氼參鏁嶅澶嬬厱婵☆垱浜介崑銏ゆ煃閵夛附顥堢€规洘锕㈤、娆撳床婢诡垰娲﹂悡鏇㈡煙閹佃櫕娅呭┑锛勫帶閳规垿顢欓幆褍骞嬪┑顔硷攻濡炰粙骞冮悜钘夌骇闁圭ǹ瀵掗崬銊╂⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷>>

正在阅读:编写高性能Web应用程序的10个技巧编写高性能Web应用程序的10个技巧

2005-09-01 10:02 出处: 作者:Rob Howard(alpha2002译) 责任编辑:moningfeng

  由于代码和层之间的边界分离,使用 Web 服务或远程调用将降低20%以上的性能。

  数据层则稍微有些不同,因为数据库通常都用专门的硬件。但是,数据库的处理成本仍然很高,因此最优化代码时,数据层的性能应该是首当其充要关注的地方。

  在着手解决你的应用程序的性能问题之前,一定要剖析应用程序,确定问题之所在。获取关键的性能计数器值(如实现垃圾收集所花时间之百分比的性能计数器的值)对于查找应用程序在何处最耗时也是非常重要的。凭借直觉常常也能找到耗时所在。

  本文所描述的性能改进有两种类型:大型优化,如使用 ASP.NET Cache,以及不断重复进行的微型优化。这些微型优化有时很有意思。对代码的小小改动便会引起很大的动静,产生成千次的调用。对于大型优化,你可能会看到整体性能的大跳跃。而对微型优化,给定请求可能只是毫秒级的调整,但按每天的请求总数计算,其结果的改进可能是巨大的。

数据层的性能

  当调整某个应用程序的性能时,有一个简单的试金石,你可以用它按先后次序:检查代码是否存取数据库?如果是,多长时间存取一次?注意相同的测试也可以被应用于使用 Web 服务或远程调用的代码,但我们本文中不涉及这方面内容。

  如果在特定的代码流程中必须具有对数据库的请求以及要考察其它方面,如:想对字符串处理进行优先优化,那么暂且把它放一放,先按照上面定好的优先次序来做。除非你有异乎寻常的性能问题,否则你的时间应该用在尝试最优化与数据库的连接所花的时间,返回的数据量以及多长时间往返一次和数据库的通讯上。

  有了这些概括信息,下面就让我们来看看能帮助你改善应用程序性能的十个技巧。我将从能获得最显著效果的改变开始。

技巧 1 —— 返回多个结果集

  复审你的数据库代码,看看是否有多于一次的对数据库的访问请求。这样每次往返数据库都降低你的应用程序能处理的每秒请求数。通过在单个数据库请求中返回多结果集,你能降低与数据库通信的总体时间。同时你也将使系统更具伸缩性,因为你减少了数据库服务器处理请求的负担。

  虽然你可以用动态 SQL 返回多结果集,我更喜欢使用存储过过程。是否将业务逻辑驻留在存储过程当中是个有待争论的问题,但我认为,如果存储过程中的逻辑能约束返回的数据(降低数据集的尺寸,在网络上传输的时间以及逻辑层不必过虑数据),这是一件好事情。

  使用 SqlCommand 命令实例及其 ExecuteReader 方法来处理强类型的各个业务类,你通过调用 NextResult 可以向前移动结果集指针。Figure 1 附件示范了处理几个带类型的 ArrayLists 例子会话。从数据库只返回你需要的数据还会降低服务器上内存的分配。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗ù锝堟缁€濠傗攽閻樻彃鈧绱撳杈ㄥ枑闁哄啫鐗勯埀顑跨窔瀵粙顢橀悙鑼垛偓鍨攽閿涘嫬浠х紒顕呭灦瀵偊鎮╃紒妯锋嫼闂備緡鍋嗛崑娑㈡嚐椤栨稒娅犻柟缁㈠枟閻撴瑦銇勯弮鈧娆忈缚閹扮増鐓欑€瑰嫮澧楅崵鍥┾偓瑙勬磸閸斿秶鎹㈠┑瀣<婵炲棙鍔栭埢鏇熺節閻㈤潧啸妞わ綀妫勫嵄闁告稒娼欑壕濠氭煙閹规劦鍤欑紒鐙€鍨堕弻銊╂偆閸屾稑顏�闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏇炲€哥粻鏍煕椤愶絾绀€缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紒鎯у⒔缁垳鎹㈠☉銏犵婵炲棗绻掓禒濂告⒑閸濆嫬顏ラ柛搴f暬楠炲啫顫滈埀顒勫箖濞嗘挸绾ч柛顭戝枤瑜版垵鈹戦悙鑼憼缂侇喖绉堕崚鎺楀箻鐠囪尪鎽曞┑鐐村灟閸╁嫰寮崘顔界叆婵犻潧妫欓ˉ鐘炽亜閿斿搫鍔︽慨濠冩そ瀹曘劍绻濋崘鐐棝闂備胶鎳撻崵鏍箯閿燂拷