锘??xml version="1.0" encoding="utf-8" standalone="yes"?>麻豆精品网站,国产欧美一区二区精品忘忧草,欧美精品一区二区三区蜜桃 http://www.shnenglu.com/mzty/category/654.html<br/> <br/> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/02/19109.html"><font size = 5 color ="#00FFFF">{C++ 鍩虹}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/08/13/29922.html"><font size = 5 color ="#00FFFF">{C++ 楂樼駭}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/04/16/22064.html"><font size = 5 color ="#00FFFF">{C#鐣岄潰錛孋++鏍稿績綆楁硶}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/04/19163.html"><font size = 5 color ="#00FFFF">{璁捐妯″紡}<font/></a> <a href = " http://www.shnenglu.com/mzty/archive/2007/03/04/19167.html"><font size = 5 color ="#FF0000">{C#鍩虹}<font/></a> zh-cnTue, 20 May 2008 16:57:19 GMTTue, 20 May 2008 16:57:19 GMT60Make Your Apps Fly with the New Enterprise Performance Tool (閫氳繃鏂扮殑 Enterprise Performance Tool 浣垮簲鐢ㄧ▼搴忛閫熻繍琛?(鍖呭惈鍚勭鎺掑簭綆楁硶鐨勫疄鐜?http://www.shnenglu.com/mzty/archive/2006/04/27/6389.html姊﹀湪澶╂動姊﹀湪澶╂動Thu, 27 Apr 2006 09:46:00 GMThttp://www.shnenglu.com/mzty/archive/2006/04/27/6389.htmlhttp://www.shnenglu.com/mzty/comments/6389.htmlhttp://www.shnenglu.com/mzty/archive/2006/04/27/6389.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/6389.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/6389.htmlhttp://msdn.microsoft.com/msdnmag/issues/04/12/EnterprisePerformance/default.aspx#contents


涓枃:http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/enterpriseperformance.mspx?mfr=true


鍙戝竷鏃ユ湡錛?1/6/2005 | 鏇存柊鏃ユ湡錛?1/6/2005

John Robbins

鏈枃鍩轟簬 Visual Studio 2005 鐨勯鍙戝竷鐗堟湰銆傛枃涓寘鍚殑鎵鏈変俊鎭潎鏈夊彲鑳藉彉鏇淬?/p>

鏈枃璁ㄨ錛?

鈥?/td>

鍒嗘瀽鍣ㄧ殑鍐呴儴宸ヤ綔鏂瑰紡

鈥?/td>

EPT 鐨勭伒媧誨姛鑳?

鈥?/td>

涓涓緵鍒嗘瀽鐨勭ず渚嬪簲鐢ㄧ▼搴?/p>

浠g爜鍙粠浠ヤ笅浣嶇疆涓嬭澆錛?/b>
EnterprisePerformance.exe (258KB)

蹇熶唬鐮佷粛鐒跺緢鍙楁榪庛傚嵆浣挎垜鐢ㄦ潵閿叆鏈枃鐨勮綆楁満鍏鋒湁瓚沖鐨勮兘鍔涘拰鍐呭瓨錛岃兘澶熷悓鏃舵帶鍒朵竴搴у師瀛愯兘鍙戠數鍘傘佷竴涓伀鏄熸極娓歌鍒掍互鍙婄編鍥借タ閮ㄤ笂絀虹殑絀轟腑浜ら氾紝騫朵笖浠嶇劧鍏鋒湁鍏呰凍鐨勮兘鍔涙潵澶勭悊鏄熼檯鎺㈢儲涓殑 SETI 鏁版嵁鍖咃紝浣嗚繖騫朵笉鎰忓懗鐫寮鍙戜漢鍛樹笉鍐嶉渶瑕佹媴蹇冨叾浠g爜鐨勯熷害鍜屾晥鐜囥傚湪榪囧幓榪涜 Win32廬 鏈満寮鍙戠殑鏃ュ瓙閲岋紝鎴戜滑涓嶄粎闇瑕佹媴蹇冮熷害錛岃屼笖榪樿鎷呭績 PC 騫沖彴涓婇偅浜涗護浜鴻鍘岀殑璁塊棶鍐茬獊錛堝浜庝綘浠繖浜涜佸浼欙紝榪樻湁鈥滃叏灞淇濇姢閿欒鈥濆拰鈥滀笉鍙仮澶嶇殑搴旂敤紼嬪簭閿欒鈥濓級銆傚敖綆℃墭綆′唬鐮佸凡緇忔秷闄や簡鍏朵腑鐨勪竴浜涙媴蹇冿紝浣嗗畠鍙剰鍛崇潃鎮ㄦ墍緇忓巻鐨勯偅浜涙ц兘闂鍙兘姣斾互鍓嶆洿鍔犻毦浠ユ崏鎽搞備富瑕佸師鍥犳槸錛屽湪浣跨敤鎵樼浠g爜鏃訛紝鎴戜滑涓嶅叿鏈夊湪榪涜鏈満寮鍙戞椂鎵鎷ユ湁鐨勭畝渚跨殑榪愯搴撹鍥俱?/p>

鏈夎澶氭錛屽綋鎴戞鍦ㄤ嬌鐢ㄥ鎴風鏃訛紝鎴戜笉鐭ラ亾濡備綍瑙e喅鎭舵х殑鎬ц兘闂銆傚綋鐒訛紝榪欎簺鎬ц兘闂涓嶄細鍑虹幇鍦ㄤ換浣曟祴璇曠郴緇熶腑錛涘畠浠彧浼氬嚭鐜板湪鐪熷疄涓栫晫鐨勭敓浜т腑銆傜敱浜庡叕鍏辮璦榪愯搴?(CLR) 鏄粦鐩掞紝鍥犳濡傛灉鎴戝笇鏈涙壘鍒板湪嫻嬭瘯緋葷粺涓噸澶嶆ц兘闂鐨勬柟娉曪紝鍒欏緢闅鵑嫻嬩細鍙戠敓浠涔堜簨鎯呫傚敖綆″湪甯傚満涓湁涓浜涚涓夋柟鍟嗕笟鎬ц兘宸ュ叿錛屼絾榪欎簺宸ュ叿涓殑澶у鏁伴兘浼氬緋葷粺閫犳垚榪囧鐨勫共鎵幫紝浠ヨ嚦浜庢牴鏈笉鑳借冭檻鍦ㄧ敓浜х郴緇熶腑浣跨敤銆傝繖涔熷氨鏄綋鎴戠湅鍒?Microsoft 灝嗘彁渚涗竴涓叏鏂扮殑鍒嗘瀽鍣?鈥?Enterprise Performance Tool (EPT) 浠ヤ綔涓?Visual Studio廬 2005 Team Developer Edition 鐨勪竴閮ㄥ垎鏃訛紝鎰熷埌濡傛鍏村鐨勫師鍥犮傚畠鏄垜鍙互鐪熸鑰冭檻鍦ㄧ敓浜х郴緇熶腑浣跨敤鐨勭涓涓垎鏋愮郴緇燂紝鍥犱負瀹冩彁渚涗簡涓浜涢潪甯歌交渚跨殑鏀墮泦鎬ц兘鏁版嵁鐨勬墜孌點傚洜涓烘垜鏇劇粡棰嗗榪囦竴縐嶆渶鐣呴攢鐨勫晢涓氬垎鏋愬櫒鐨勫紑鍙戝伐浣滐紝鎵浠ユ垜鑳藉鐞嗚В鍦ㄤ笉浜х敓澶緋葷粺寮閿鐨勬儏鍐典笅鏀墮泦鏈夌敤鍒嗘瀽鏁版嵁鐨勫洶闅劇▼搴︺?/p>

鍦ㄦ湰鏂囦腑錛屾垜灝嗕粙緇?EPT 鐨勫熀鏈師鐞嗭紝騫跺悜鎮ㄨ鏄庡浣曞紑濮嬩嬌鐢ㄥ畠銆傚洜涓哄垎鏋愬櫒鎵鍏鋒湁鐨勫鏉傛э紝鎵浠ュ湪灝嗘潵鏌愪竴鏈熶腑錛屾垜灝嗚璁哄浣曚嬌鐢?EPT 鏉ヨ窡韙偍鍙兘鍦ㄥ悓浜嬬殑浠g爜涓亣鍒扮殑瀹為檯鎬ц兘闂錛堟垜鐭ラ亾鎮ㄧ殑浠g爜闈炲父瀹岀編錛侊級銆傝璁頒綇錛孍PT 姝e鍦ㄦ祴璇曢樁孌碉紙鎴戜嬌鐢ㄧ殑鏄?Burton Beta 1 鍒鋒柊浣嶇増鏈?40607.83錛夛紝騫朵笖鍦ㄨ浜у搧鍙戝竷涔嬪墠錛屽彲鑳戒細瀵?UI 鎴栨煇浜涚壒瀹氭楠よ繘琛屾洿鏀廣傚湪瀵?EPT 榪涜浠嬬粛涔嬪墠錛屾垜甯屾湜鑺辯偣鍎挎椂闂磋皥璁轟竴涓嬪垎鏋愬櫒閫氬父鏄浣曞伐浣滅殑錛屼互渚挎偍鍙互鏇村ソ鍦頒簡瑙f槸浠涔堜嬌 Enterprise Performance Tool 鍙樺緱濡傛涓庝紬涓嶅悓銆?/p>


鍒嗘瀽鍣ㄧ殑鍩烘湰鍘熺悊

鍦ㄦ偍緙栧啓鍒嗘瀽鍣ㄦ椂錛屽彲浠ラ夋嫨涓ょ鏀墮泦鏁版嵁鐨勬柟寮忎腑鐨勪竴縐嶏細鎺㈡祴鍜岄噰鏍楓傝繖涓ょ鏂瑰紡閮藉崄鍒嗘湁鏁堬紝浣嗘槸姣忕鏂瑰紡閮芥湁瀹冪殑鎶樿》鏂規銆傛帰嫻嬪垎鏋愬櫒鏀墮泦鏁版嵁鐨勬柟寮忔槸鍦ㄥ簲鐢ㄧ▼搴忎腑鎻掑叆鎺㈡祴鎴栨寕閽╋紝浠ヤ究鍦ㄧ▼搴忔墽琛岃鎸傞挬鏃跺氨璋冪敤鍒嗘瀽鍣ㄨ繍琛屽簱銆傝鏀劇疆鎺㈡祴錛屽垎鏋愬櫒闇瑕佸湪緙栬瘧姝ラ涓皢搴旂敤紼嬪簭浠〃鍖栵紝閲嶅啓宸茬粡緙栬瘧鐨勪簩榪涘埗鏂囦歡錛屾垨鑰呭嵆鏃跺皢搴旂敤紼嬪簭浠〃鍖栥傝鏌ョ湅鍩轟簬 .NET 鐨勫簲鐢ㄧ▼搴忕殑鎺㈡祴鍒嗘瀽鍣ㄦ柟娉曠ず渚嬶紝璇烽槄璇?Aleksandr Mikunov 鐨勪竴綃囬潪甯稿嚭鑹茬殑鏂囩珷 鈥斺?a target="_blank">Rewrite MSIL Code On the Fly with the .NET Framework Profiling API鈥濓紙璇ユ枃绔犳憳鑷?MSDNMagazine 2003 騫?9 鏈堝垔錛夈傚綋鎴戝紑濮嬭璁?EPT 鐨勬椂鍊欙紝鎮ㄥ皢鐪嬪埌瀹冧嬌鐢ㄦ湳璇滀華琛ㄥ寲鈥濇潵琛ㄧず鎺㈡祴鏂規硶銆?/p>

鎺㈡祴鍒嗘瀽鍣ㄦ柟娉曠殑涓昏浼樺娍鍦ㄤ簬錛屽綋搴旂敤紼嬪簭鎵ц鏃訛紝灝嗗緇堣皟鐢ㄦ墍鎻掑叆鐨勬帰嫻嬨傝繖鏍鳳紝鍒嗘瀽鍣ㄨ繍琛屽簱灝嗗榪愯鍏鋒湁瀹屾暣鐨勮璇嗭紝鍥犳鍦ㄧ敓鎴愬叧閿俊鎭紙渚嬪錛屽嚱鏁頒箣闂寸殑鐖跺瓙鍏崇郴錛夋椂鍙互紜繚姝g‘錛屽茍涓斿垎鏋愬櫒鍙互鎶ュ憡瀹岀編鐨勮皟鐢ㄦ爲錛屼互渚挎偍鍙互杞繪澗鎵懼埌鑺辮垂鏈闀挎椂闂寸殑璋冪敤璺緞銆備嬌鐢ㄦ帰嫻嬪垎鏋愬櫒鏃訛紝娌℃湁浠涔堜簨鎯呰兘澶熼樆姝㈠紑鍙戜漢鍛樺彧鍦ㄥ嚱鏁板叆鍙e拰鍑哄彛澶勬彃鍏ユ帰嫻嬨傚彲浠ュ湪婧愪唬鐮佽綰у埆鏀劇疆棰濆鐨勬帰嫻嬶紝浠ヤ究鎮ㄥ鍑芥暟鍏鋒湁瀹屾暣鐨勮璇嗐?/p>

浣嗘槸錛屾帰嫻嬪垎鏋愬櫒鎵鎻愪緵鐨勮緇嗚鍥懼叿鏈変竴浜涚己鐐廣傜涓涓己鐐規槸浠〃鍖栨柟妗堜嬌鐢ㄨ搗鏉ュ彲鑳藉緢楹葷儲錛屽茍涓斿洜涓哄畠鏄湪浜岃繘鍒剁駭鍒噸鍐欙紝鍥犳瀛樺湪寰堝鍙兘寮曞叆娼滃湪閿欒鐨勯鍩熴傛濡傛偍鍙互鎯沖儚鍒扮殑閭f牱錛岃繖浜涙帰嫻嬭繕鍗犵敤浜嗙┖闂達紝浠庤屽鑷翠竴浜涗唬鐮佽啫鑳鍜岃緝浣庣殑鎬ц兘銆傚浜庡畬鍏ㄤ華琛ㄥ寲鐨勫簲鐢ㄧ▼搴忥紝鎺㈡祴鍒嗘瀽鍣ㄥ彲鑳戒細瀵艱嚧閫熷害澶у箙搴︿笅闄嶏紝浠ヨ嚦浜庡嚑涔庝笉鍙兘鍦ㄧ敓浜х郴緇熶笂榪愯浠〃鍖栫殑浜岃繘鍒舵枃浠訛紝浠庤屼嬌鎮ㄥ湪鏈闇瑕佽鍒嗘瀽鍣ㄧ殑鏃跺欏嵈鏃犳硶鍒╃敤瀹冦?/p>

姝e鍏跺悕縐版墍鏆楃ず鐨勯偅鏍鳳紝閲囨牱鍒嗘瀽鍣ㄦ寜鐓ч鍏堝畾涔夌殑鏃墮棿闂撮殧鑾峰緱搴旂敤紼嬪簭涓鍦ㄦ墽琛岀殑鎿嶄綔鐨勫揩鐓с傚ぇ澶氭暟寮鍙戜漢鍛橀兘娌℃湁鎰忚瘑鍒?Microsoft 鎬繪槸鍦ㄤ粬浠殑寮鍙戠幆澧冧腑闅忛檮浜嗕竴涓噰鏍峰垎鏋愬櫒銆傚畠琚О涓鴻皟璇曞櫒錛?濡傛灉鎮ㄥ紑濮嬭皟璇曞簲鐢ㄧ▼搴忥紝騫朵笖姣忛殧 30 縐掑乏鍙沖氨涓柇鑷寵皟璇曞櫒錛屽垯鎮ㄥ彲浠ユ敞鎰忓埌搴旂敤紼嬪簭綰跨▼姝e湪浣曞鎵ц錛屼互渚垮緢濂藉湴浜嗚В搴旂敤紼嬪簭鍦ㄤ竴嬈¤繍琛岃繃紼嬩腑鎵ц浜嗗摢浜涙搷浣溿傛垜宸茬粡閫氳繃鎵嬪姩瀹屾垚閲囨牱鍒嗘瀽鍣ㄧ殑宸ヤ綔錛岃В鍐充簡寰堝鐢熶駭鎬ц兘闂銆?/p>

浣塊噰鏍峰垎鏋愬櫒濡傛鏈変環鍊肩殑鍘熷洜鍦ㄤ簬錛屽畠浠叿鏈夋瘮鎺㈡祴鍒嗘瀽鍣ㄥ皬寰楀鐨勭郴緇熷紑閿銆傝繖鎰忓懗鐫錛屾偍鍙互鏈夋洿楂樼殑鏈轟細鍦ㄧ敓浜х郴緇熶腑浣跨敤瀹冧滑錛岃屼笉浼氫嬌鏈嶅姟鍣ㄧ柌浜庡鍛戒互鑷充簬鍋滄満銆傞噰鏍峰垎鏋愬櫒鐨勯棶棰樺湪浜庯紝浠庡簲鐢ㄧ▼搴忎腑鑾峰緱鐨勬墍鏈夋牱鏈緢鏈夊彲鑳芥牴鏈笉鏄劇ず浠諱綍浠g爜銆備緥濡傦紝濡傛灉鎮ㄥ叿鏈夊ぇ閲忎嬌鐢ㄦ暟鎹簱鐨勫簲鐢ㄧ▼搴忥紝鍒欐墍鏈夋牱鏈兘鍙互鏉ヨ嚜鏁版嵁搴撹闂▼搴忛泦鐨勫唴閮ㄣ傛渶鍚庯紝鍙姄鍙栨瘡涓嚎紼嬬殑褰撳墠鎵ц鎸囦護鐨勪紶緇熼噰鏍峰垎鏋愬櫒浼氫嬌寰楃‘瀹氭柟娉曚箣闂寸殑鐖跺瓙鍏崇郴鍙樺緱鍗佸垎鍥伴毦錛屽洜鑰岀‘瀹氭ц兘鏈宸殑鎵ц浠g爜閫斿緞瑕佸洶闅懼緱澶氥?/p>


Enterprise Performance Tool 鐨勫熀鏈師鐞?/p>

鍦ㄤ簡瑙e垎鏋愬櫒鐨勬搷浣滄柟寮忎箣鍚庯紝鎴戝氨鍙互璁ㄨ EPT 鎵閲囧彇鐨勬柟寮忎簡銆傜畝鍗曞湴璇達細瀹冩棦鏄噰鏍峰垎鏋愬櫒錛屽張鏄帰嫻嬪垎鏋愬櫒錛圡icrosoft 縐頒箣涓衡滀華琛ㄥ寲鈥濓級銆傚叾鎬濇兂鏄紝鎮ㄥ湪寮濮嬫椂灝嗛氳繃閲囨牱鍒嗘瀽鍣ㄦ潵鏌ョ湅搴旂敤紼嬪簭鎬ц兘錛屼互鑾峰緱甯歌鎬ц兘鐗瑰緛錛屼互渚挎偍鍙互寮濮嬪皢娉ㄦ剰鍔涢泦涓簬搴旂敤紼嬪簭鐨勭儹鐐歸棶棰樹笂銆傚湪鎮ㄤ簡瑙e叿鏈変竴浜涢棶棰樼殑紼嬪簭闆嗕箣鍚庯紝灝卞彲浠ユ眰鍔╀簬浠〃鍖栧垎鏋愪互鏌ョ湅鐗瑰畾鐨勯棶棰橀鍩燂紝浠ヤ究淇瀹冧滑銆傚綋鐒訛紝濡傛灉鎮ㄨ鎵ц鍗曞厓鎬ц兘嫻嬭瘯錛屽垯娌℃湁浠涔堣兘澶熼樆姝㈡偍鐩存帴杞埌瀵圭壒瀹氭ā鍧楄繘琛屼華琛ㄥ寲錛屼互渚垮湪鑱氱劍鏂規涓煡鐪嬪畠浠殑鎬ц兘銆?/p>

浣?EPT 閲囨牱鍒嗘瀽鍣ㄦ湁瓚g殑閮ㄥ垎鍘熷洜鍦ㄤ簬錛屾偍鍙互浣跨敤澶ч噺欏圭洰鏉ヨЕ鍙戞牱鏈傞粯璁ょ殑閲囨牱鐐規槸鏃墮挓鍛ㄦ湡錛屽茍涓斿彲鑳芥槸鎮ㄦ繪槸浣跨敤鐨勯噰鏍風偣銆傞粯璁ゆ儏鍐典笅錛屾瘡涓鐧句竾涓椂閽熷懆鏈熼噰鏍蜂竴嬈★紝浣嗘槸鎮ㄥ彲浠ュ皢閲囨牱闂撮殧鐨勬椂閽熷懆鏈熸暟鏇存敼涓烘偍鍠滄鐨勪換浣曞鹼紝鍙槸璇ュ艱秺灝忥紝EPT 鎵瀵艱嚧鐨勭郴緇熷紑閿灝辮秺澶с傚浜庣敓浜ф湇鍔″櫒錛屾偍鍙互灝嗚鏁板瓧璁劇疆涓烘煇涓潪甯擱珮鐨勬暟瀛楋紙濡備簲鐧句竾錛夛紝浠ヤ嬌緋葷粺寮閿淇濇寔鍦ㄥ悎鐞嗙殑姘村鉤錛屽悓鏃朵笉浼氬畬鍏ㄧ牬鍧忚繘紼嬩腑鐨勫彲鐢ㄦс傛濡傛偍棰勬枡鐨勯偅鏍鳳紝姣忎簲鐧句竾涓椂閽熷懆鏈熼噰鏍蜂竴嬈″皢鎰忓懗鐫鎮ㄩ渶瑕佷嬌搴旂敤紼嬪簭榪愯鐩稿綋闀跨殑鏃墮棿錛屼互渚垮湪鎮ㄧ殑鐑偣鍖哄煙涓幏寰楄壇濂界殑鏍鋒湰鍒嗗竷銆?/p>

濡傛灉鎮ㄧ殑搴旂敤紼嬪簭浣跨敤浜嗗緢澶氬唴瀛橈紝鍒欏彲浠ラ夋嫨璁?EPT 閲囨牱鍒嗘瀽鍣ㄦ敼涓哄湪鍑虹幇欏甸敊璇椂瑙﹀彂銆傝繖鏍鳳紝鎮ㄥ氨鍙互鍦ㄦ暟鎹浜ゆ崲鍑?RAM 鏃惰幏寰楁ц兘蹇収錛屽茍涓斿彲浠ョ湅鍒版槸璋佸湪鎵ц鎺ㄩ佹搷浣溿傚鏋滃垵濮嬪垎鏋愬櫒榪愯琛ㄦ槑鎮ㄥ湪浠g爜澶栭儴鐨勫尯鍩熶腑鑺辮垂浜嗗ぇ閲忔椂闂達紝鍒欏彲浠ュ憡璇夊垎鏋愬櫒鏀逛負鍩轟簬緋葷粺璋冪敤鏉ュ畬鎴愰噰鏍楓傚鏋滄偍瑕佸垎鏋愬叿鏈夊ぇ閲忕嚎紼嬬殑澶氱嚎紼嬪簲鐢ㄧ▼搴忥紝鍒欒閲囨牱緇熻淇℃伅浼氬鎮ㄥ湪浠庣敤鎴鋒ā寮忚漿鎹㈠埌鍐呮牳妯″紡錛堣繖琛ㄦ槑鏌愪簺綰跨▼鍙兘浼氫笉蹇呰鍦板湪鍐呮牳瀵硅薄涓婇樆濉烇級鏃剁殑鏁版嵁榪涜鎷嶇収銆傛偍鍙互鐢ㄤ簬閲囨牱瑙﹀彂鍣ㄧ殑鏈鍚庝竴浜涘兼槸 CPU 鎵鏀寔鐨勫悇縐嶆ц兘璁℃暟鍣紝渚嬪錛屽垎鏀鏁版垨緙撳瓨涓㈠け銆傝繖鏄竴涓彧鏈夋瀬灝戞暟浜烘墠紜疄闇瑕佺殑楂樼駭閫夐」錛屼絾鏄鏋滄偍紜疄闇瑕佽鏁版嵁錛岄偅涔堢煡閬撹鏁版嵁瀛樺湪涔熶笉閿欍?/p>

閭d簺蹇欑鐨?Redmontonian 榪樿В鍐充簡璋冪敤鍫嗘爤闂 鈥?榪欐槸瀵規湁鐢ㄧ殑閲囨牱鍒嗘瀽鍣ㄩ犳垚闅滅鐨勬渶澶ч棶棰樹箣涓銆傛濡傛垜鍦ㄥ墠闈㈡彁鍒扮殑閭f牱錛屽ぇ澶氭暟閲囨牱鍒嗘瀽鍣ㄥ湪閲囨牱鏃跺彧鏄褰撳墠姝e湪鎵ц鐨勬寚浠よ繘琛屾媿鐓с侻icrosoft 瑙e喅浜嗗浣曞皢鏋佸揩鐨勫爢鏍堥亶鍘嗙粨鍚堝埌浠栦滑鐨勯噰鏍峰垎鏋愬櫒閮ㄥ垎涓紝浠ヤ究鎮ㄨ兘澶熻幏寰楁牱鏈殑濂藉錛屽茍涓旂煡閬撳湪鎵ц璇ユ牱鏈椂鏄浣曞埌杈鵑偅閲岀殑銆傝繖浣垮緱灝嗚繖浜涘揩鐓т笌浠g爜閲嶆柊鍏寵仈鍙樺緱鏇村姞瀹規槗銆?/p>

鍦ㄨ璁烘偍鍙互鍒嗘瀽鐨勫簲鐢ㄧ▼搴忎箣鍓嶏紝鎴戞兂鎻愬嚑浠舵偍寰堝彲鑳借寰楁湁瓚g殑浜嬫儏銆傜涓浠朵簨鎯呮槸錛屽鏋滄偍璁や負 Microsoft 鏄粠澶村紑鍙戣鎬ц兘宸ュ叿鐨勶紝閭d箞鎮ㄥ彧鐚滃浜嗕竴鍗娿傚湪 Microsoft 鍐呴儴錛屽紑鍙戝洟闃熶竴鐩村湪浣跨敤 EPT 鐨勫墠韜紙鍚嶄負 Call Attribute Profiler (CAP)錛屽畠浣跨敤浠〃鍖栵級鍜?Low Overhead Profiler (LOP) 鈥?涓涓噰鏍峰垎鏋愬櫒銆傜敱浜?Microsoft 寮鍙戜簡榪欎簺宸ュ叿浠ユ敹闆嗘湁鍏沖簲鐢ㄧ▼搴忥紙渚嬪錛屾搷浣滅郴緇熷拰鏁翠釜 Office 濂椾歡錛夌殑鎬ц兘淇℃伅錛屽洜姝ゅ畠浠敋鑷充笉浼氱粰鎮ㄧ殑搴旂敤紼嬪簭甯︽潵浠涔堣礋鎷呫傛垜鏇劇粡浣跨敤榪?EPT 鐨勫墠韜紝鎵浠ユ垜鍙互鍛婅瘔鎮ㄥ叕鍏辯増鏈嬌鐢ㄨ搗鏉ヤ細瀹規槗澶氬皯銆傛澶栵紝瀹冧滑榪樺叿鏈変竴浜涙瀬涓烘湁瓚g殑鍔熻兘錛堢◢鍚庢垜灝嗕簣浠ヨ璁猴級銆?/p>

絎簩涓湁瓚g殑浜嬮」涓?EPT 鎵鏀寔鐨勬妧鏈湁鍏熾傚敖綆℃煇浜涗漢鍙兘璁や負鐢變簬 Microsoft 闈炲父鍋忛噸浜?.NET Framework錛屽洜姝ゆ棤娉曞皢 EPT 鐢ㄤ簬 Win32 搴旂敤紼嬪簭鎴栨湰鏈轟唬鐮侊紝浣?EPT 鍥㈤槦瀹為檯涓婂凡緇忔壙璇烘敮鎸佹墍鏈夌殑 Win32 鏈満搴旂敤紼嬪簭浠ュ強 .NET 浠g爜銆傝繖鎰忓懗鐫錛屾棤璁烘偍浣跨敤鍝鎶鏈紙ASP.NET銆乄indows廬 紿椾綋銆丮FC 鎴?Win32 鏈嶅姟錛夛紝鎮ㄩ兘鍏鋒湁瀹屽叏鐨勯噰鏍峰拰浠〃鍖栨敮鎸併傛偍灝嗙湅鍒幫紝鍦?Visual Studio .NET 涓紝璺ㄦ妧鏈嬌鐢?EPT 娌℃湁浠諱綍宸紓銆?/p>

瀹為檯鐨?EPT 璁劇疆闈炲父騫沖父錛涘彧闇浠?Visual Studio .NET 瀹夎紼嬪簭鐨勨淓nterprise Tools鈥濇爲鎺т歡涓夋嫨鈥淓nterprise Performance Tool鈥濆嵆鍙傚綋鐒訛紝鍥犱負鎮ㄧ煡閬?EPT 浠嶇劧鏄竴涓祴璇曚駭鍝侊紝鎵浠ユ偍鐨勭涓涓弽搴斿彲鑳芥槸榪愯铏氭嫙 PC錛屽茍鍦ㄩ偅閲屽畨鍏ㄥ湴鍖呭惈鎵鏈夊唴瀹廣備絾鏄紝涓轟簡鎵ц閲囨牱鍒嗘瀽錛孍PT 浣跨敤鍐呮牳妯″紡璁懼椹卞姩紼嬪簭鏉ュ搷搴?CPU 鎬ц兘璁℃暟鍣ㄤ腑鏂紝涓嶈繃浠や漢閬楁喚鐨勬槸錛岃櫄鎷?PC 娌℃湁瀹炵幇璁℃暟鍣ㄣ傚畠涔熸病鏈夋ā鎷熼珮綰у彲緙栫▼涓柇鎺у埗鍣?(APIC)錛岃岃繖涓よ呴兘鏄唴鏍歌澶囬┍鍔ㄧ▼搴忓畬鎴愬叾宸ヤ綔鎵蹇呴渶鐨勩傚ソ娑堟伅鏄紝濡傛灉鎮ㄦ病鏈夐澶栫殑璁$畻鏈轟互渚垮畨瑁?EPT錛岄偅涔堟偍涔熷茍闈炲畬鍏ㄤ笉騫革紝鍥犱負浠〃鍒嗘瀽鍣ㄤ粛鐒惰兘澶熷伐浣溿傚鏋滄偍娌℃湁澶氫綑鐨勮綆楁満浠ヤ究瀹夎 EPT錛岄偅涔堣繖鏄竴涓鍏徃涓烘偍璐拱鍙︿竴鍙拌綆楁満鐨勫ソ鍊熷彛銆?/p>


Animated Algorithm

瑕佸涔犱換浣曞伐鍏風殑鐢ㄦ硶錛屾偍閮介渶瑕佷竴涓悎閫傜殑紺轟緥搴旂敤紼嬪簭錛屼互渚胯兘澶熸渶浣沖湴鍒╃敤璇ュ伐鍏楓傚湪嫻嬭瘯鍛ㄦ湡鐨勮繖涓鏃跺埢錛孍PT 娌℃湁闅忛檮浠諱綍紺轟緥錛屼絾鏄湪鎴戠殑紜洏涓婂凡緇忔湁浜嗕竴涓畬緹庣殑鍒嗘瀽鍣ㄧず渚嬨傛棭浜涙椂鍊欙紝鎴戞鍦ㄥ皾璇曡В鍐沖浣曞湪 Windows 紿椾綋搴旂敤紼嬪簭涓嬌鐢ㄥ綰跨▼鐨勯棶棰橈紝鍥犳鎴戠紪鍐欎簡涓涓悕涓?Animated Algorithm 鐨勪簡涓嶈搗鐨勫皬紼嬪簭錛岃紼嬪簭鍙疄鏃舵縺媧誨ぇ閲忔帓搴忕畻娉曘?b>鍥?1 鏄劇ず鎴戠殑紺轟緥搴旂敤紼嬪簭宸茬粡鍑嗗濂芥帓搴忋?/p>


鍥?1 姝e湪宸ヤ綔鐨?Animated Algorithm

Animated Algorithm 浣挎偍鍙互鍦ㄧ獥浣撶殑緇勫悎妗嗕腑錛屼粠 15 涓笉鍚岀殑鎺掑簭綆楁硶涓繘琛岄夋嫨銆傗淥ptions鈥濊彍鍗曚嬌鎮ㄥ彲浠ラ夋嫨鍚勪釜鍏冪礌浜ゆ崲鎴栬緗箣闂寸殑浼戠湢鏃墮棿錛屼互渚挎偍鍙互闄嶄綆鍥懼艦鏇存柊鐨勯熷害銆?/p>

鎴戜笉涔呭墠浣跨敤 Microsoft廬 .NET Framework 鐗堟湰 1.1 緙栧啓浜?Animated Algorithm錛屽洜姝ゆ偍涓嶄細鍦ㄤ唬鐮佷腑鎵懼埌浠諱綍濂囩壒鐨勬硾鍨嬫垨鏂扮殑 BackgroundWorker 欏廣侼SORT 紼嬪簭闆嗕腑鐨勬帓搴忕畻娉曟潵鑷敱 Jonathan de Halleux銆丮arc Clifton 鍜?Robert Rohde 寮犺創鍒?The Code Project 涓婄殑涓綃囦紭縐鏂囩珷錛堣鍙傞槄 Sorting Algorithms In C#錛夛紝璇ョ▼搴忛泦灝嗙畻娉曞皝瑁呭埌鍏叡緇撴瀯涓紝浠ヤ究鎮ㄥ彲浠ヨ交鏉懼湴鏇挎崲鎵ц鍏冪礌浜ゆ崲鍜岃緗殑綾匯傚洜涓哄畠浠叿鏈夐潪甯稿ソ鐨勪綋緋葷粨鏋勶紝鎵浠ユ垜闇瑕佸叧蹇冪殑鎵鏈夊唴瀹逛負 UI 閮ㄥ垎銆?/p>

鍦ㄦ湰鏂囩殑鍏朵綑閮ㄥ垎涓紝鎴戝皢鍒嗘瀽 Animated Algorithm 紼嬪簭銆傚鏋?EPT 鍥㈤槦灝嗚紼嬪簭浣滀負紺轟緥搴旂敤紼嬪簭闅忛檮鍦ㄤ駭鍝佷腑錛屽垯浼氶潪甯告銆傦紙鍝堝搱銆傦級


EPT 鍏ラ棬

鍦?Visual Studio 2005 Beta 1 涓紝鍦ㄥ摢閲屽彲浠ユ壘鍒?EPT 褰撶劧鏄笉鏄庢樉鐨勩侲PT 鍦ㄦ偍鍚姩 Performance Wizard錛堝畠浣嶄簬鈥淭ools鈥濊彍鍗曚笅錛夋椂鍚姩錛屽茍涓旀棤璁烘槸鍚︽墦寮欏圭洰錛屽畠閮藉瓨鍦ㄣ傝璁頒綇錛孭erformance Wizard 鎵鍒涘緩鐨勬ц兘浼氳瘽涓嶆槸欏圭洰鐨勪竴閮ㄥ垎錛涘畠浠疄闄呬笂鏄叿鏈夎嚜宸辯殑 IDE 紿楀彛錛堢О涓?Performance Explorer錛夌殑鍗曠嫭鏂囦歡銆傛偍鍙互閫氳繃浠庘淔ile鈥潀鈥淥pen鈥濆璇濇涓夋嫨 PSESS 鏂囦歡錛屾潵鎵撳紑鎮ㄥ垱寤虹殑鎬ц兘浼氳瘽銆?/p>

濡傛灉鎮ㄥ湪鍗曟鎵ц Performance Wizard 鏃舵病鏈夋墦寮欏圭洰錛屽垯鎵浜х敓鐨勬ц兘浼氳瘽灝嗕笌鎮ㄦ寚瀹氱殑浜岃繘鍒舵枃浠剁浉鍏寵仈銆備絾鏄紝鍦ㄦ祴璇曠増涓紝鍦ㄦ偍鎸囧畾瑕佽繍琛岀殑浜岃繘鍒舵枃浠舵椂錛屽繀欏繪墦寮鍏寵仈鐨勯」鐩傛垜鍙槸鎯抽『渚挎彁涓涓嬭繖涓皬灝忕殑鎶宸э紝鍥犱負褰撴垜絎竴嬈¢亣鍒拌闂鏃訛紝瀹冪‘瀹炶鎴戝洶鎯戜笉宸層?/p>

鍦ㄦ偍鍚姩 Performance Wizard 浠ュ悗錛屽憟鐜板湪鎮ㄩ潰鍓嶇殑絎竴涓睆騫曡姹傛偍閫夋嫨瑕佸垎鏋愮殑搴旂敤紼嬪簭銆傚鏋滄偍鎵撳紑浜嗕竴涓彲鐢熸垚澶氫釜紼嬪簭闆嗙殑欏圭洰錛堝 Animated Algorithm錛夛紝鍒欏彧鑳戒粠璇ュ悜瀵間腑閫夊彇涓涓▼搴忛泦銆傚鏋滆榪涜閲囨牱錛屽垯鍙夊彇榪欎竴涓▼搴忛泦鏄緢濂界殑錛屽洜涓?EPT 閲囨牱浼氬垎鏋愬姞杞界殑鎵鏈夌▼搴忛泦錛堝寘鎷偅浜涙潵鑷鏋剁被搴撶殑紼嬪簭闆嗭級銆備絾鏄紝濡傛灉鎮ㄨ瀵瑰涓▼搴忛泦鎵ц浠〃鍖栧垎鏋愶紝鍒?Performance Wizard 鍙夋嫨榪欎竴涓▼搴忛泦錛屽洜姝ゆ偍灝嗛渶瑕佸湪 Performance Explorer 涓墍鐢熸垚鐨勬ц兘浼氳瘽涓寚瀹氬叾浠栭」鐩垨紼嬪簭闆嗐傜◢鍚庢垜灝嗗悜鎮ㄨ鏄庡浣曞畬鎴愯宸ヤ綔銆?/p>

鍦ㄩ夋嫨浜嗚鍦ㄦц兘浼氳瘽涓嬌鐢ㄧ殑紼嬪簭闆嗘垨欏圭洰涔嬪悗錛屾偍蹇呴』閫夊彇鍒嗘瀽鏂規硶銆傚湪 Performance Explorer 涓殑浠諱綍浣嶇疆錛屾偍閮藉彲浠ュ湪閲囨牱鍜屼華琛ㄥ寲涔嬮棿鍒囨崲錛屼互婊¤凍鑷繁鐨勯渶瑕侊紱鎮ㄥ湪璇ュ悜瀵奸〉涓繘琛岀殑閫夋嫨鍙〃紺烘偍鏈鍒濆笇鏈涙墽琛岀殑鎿嶄綔銆傚湪閫夋嫨浜嗗垎鏋愭柟娉曚箣鍚庯紝鍚戝灝卞熀鏈畬鎴愪簡銆傚浜?EPT 鐨勬渶緇堢増鏈紝鎮ㄥ皢鍦?Performance Wizard 涓叿鏈夌敤浜庢寚瀹氶檮鍔犱俊鎭殑鏇村閫夐」銆傛渶緇堢増鏈繕灝嗕嬌鎮ㄥ彲浠ョ洿鎺ヤ粠 Performance Explorer 涓垱寤烘ц兘浼氳瘽銆?/p>

鍥?2 鏄劇ず浜?Performance Explorer 鍦ㄥ垰鍒氬畬鎴?Performance Wizard 姝ラ浠ュ垱寤?AnimatedAlgorithms 欏圭洰鐨勪華琛ㄥ寲榪愯涔嬪悗鐨勭獥鍙c傝娣誨姞鍙︿竴涓」鐩殑杈撳嚭浜岃繘鍒舵枃浠訛紝璇峰彸閿崟鍑燴淭argets鈥濇枃浠跺す錛岀劧鍚庝粠涓婁笅鏂囪彍鍗曚腑閫夋嫨鈥淎dd Target Project鈥濄傚鏋滆娣誨姞涓庤欏圭洰娌℃湁鍏寵仈鐨勭壒瀹氫簩榪涘埗鏂囦歡錛岃閫夋嫨鍙︿竴涓夐」 鈥斺淎dd Target Binary鈥濄傚鏋滄偍宸茬粡閫夋嫨浜嗏淎dd Target Project鈥濓紝鍒欏彲浠ュ湪浜х敓鐨勫璇濇涓粠宸叉墦寮鐨勮В鍐蟲柟妗堜腑閫夋嫨鍏朵粬欏圭洰銆?/p>


鍥?2 Performance Explorer

濡傛灉鎮ㄥ凡緇忛夋嫨浜嗕華琛ㄥ寲榪愯錛堝畠鐢辯豢鑹插惎鍔ㄧ澶翠笅闈㈢殑涓嬫媺鍒楄〃妗嗕腑鐨勬枃鏈〃紺猴級錛屽垯浜岃繘鍒舵枃浠朵華琛ㄥ寲灝嗗湪紼嬪簭鎵ц涔嬪墠鍙戠敓銆傚鏋滄偍涓嶅笇鏈涢拡瀵硅繍琛屼華琛ㄥ寲鏌愪釜鐗瑰畾鐨勪簩榪涘埗鏂囦歡錛屽垯璇峰彸閿崟鍑昏浜岃繘鍒舵枃浠訛紝騫跺彇娑堥変腑鈥淚nstrument Binary鈥濊彍鍗曢夐」銆?/p>

濡傛灉鎮ㄥ凡緇忛夋嫨浜嗛噰鏍峰垎鏋愶紝騫朵笖甯屾湜闄勫姞鍒版煇涓鍦ㄨ繍琛岀殑欏圭洰錛屽垯鍗曞嚮鈥淎ttach/Detach鈥濇寜閽紙鈥淪tart鈥濇寜閽彸渚х殑鏂滃悜綆ご錛夊皢鍛堢幇鈥淎ttach Profiler to Process鈥濆璇濇銆傞氳繃 EPT錛屾偍鍙互鏍規嵁闇瑕侀檮鍔犲埌浠繪剰澶氱殑榪涚▼錛屼互渚胯幏寰楀搴旂敤紼嬪簭鐨勮璇嗐傗淎ttach Profiler to Process鈥濆璇濇榪樺厑璁告偍浠庣壒瀹氱殑浜岃繘鍒舵枃浠朵腑鍒嗙鍒嗘瀽銆傚湪灝嗘潵鐨勬煇涓鏈?MSDN Magazine 涓紝鎴戝皢鏇磋緇嗗湴璁ㄨ濡備綍闄勫姞鍒扮幇鏈夌殑榪涚▼錛堢壒鍒槸涓轟簡榪涜 ASP.NET 鎬ц兘璋冩暣錛夈?/p>

Performance Explorer 紿楀彛欏墮儴鐨勬渶鍚庝竴涓寜閽槸鏃犳墍涓嶅湪鐨勨淧roperties鈥濇寜閽傚湪鍚姩鍒嗘瀽榪愯涔嬪墠錛屾偍鍙兘甯屾湜嫻忚涓涓嬫ц兘浼氳瘽灞炴э紝浠ヨ緗嚑涓叧閿睘鎬с傜涓涓睘鎬т綅浜庘淕eneral鈥濋夐」鍗′笂錛屽畠鏄偍甯屾湜涓烘ц兘浼氳瘽瀛樺偍鎬ц兘鎶ュ憡鐨勪綅緗傚湪鍒嗘瀽欏圭洰鏃訛紝榛樿璁劇疆鏄皢鎶ュ憡瀛樺偍鍦ㄤ笌瑙e喅鏂規鐩稿悓鐨勭洰褰曚腑銆備絾鏇村ソ鐨勫仛娉曟槸灝嗘ц兘浼氳瘽鍜屽畠浠殑鐩稿簲鎶ュ憡鏀劇疆鍦ㄥ畠浠嚜宸辯殑鐩綍涓紝浠ヤ究鎮ㄥ彲浠ユ洿瀹規槗鍦板瓨鍌ㄧ壒瀹氱殑榪愯闆嗐傝繖鏍瘋繕鍙互鏇村鏄撳湴鍒嗘瀽涔嬪墠鍜屼箣鍚庣殑鎯呭喌錛屼互渚挎煡鐪嬫偍鎵榪涜鐨勪唬鐮佹洿鏀圭殑褰卞搷銆?/p>

鍦ㄢ淕eneral鈥濋夐」鍗′笂錛屾偍榪樺彲浠ュ湪浠〃鍖栧拰閲囨牱鍒嗘瀽涔嬮棿鍒囨崲錛堣繖浼氭洿鏀瑰湪 Performance Explorer 涓樉紺虹殑鍊鹼級銆傚湪鎴戣繘琛岀殑鎬ц兘璋冩暣涓紝鎴戝枩嬈㈠皢鐗瑰畾鐨勪細璇濅笓鐢ㄤ簬鍗曚釜綾誨瀷鐨勫垎鏋愶紝浠ラ伩鍏嶅嚭鐜頒笌鎶ュ憡鏈夊叧鐨勬販娣嗐傛病鏈変換浣曚簨鎯呴樆姝㈡偍涓烘墍鏈夌綾葷殑鐗瑰畾鏂規錛堟兜鐩栦粠鍒嗘瀽綾誨瀷鍒板崟涓簩榪涘埗鏂囦歡浠〃鍖栫殑鎵鏈夋柟妗堬級鍒涘緩鏁頒互鐧捐鐨勪笉鍚屾ц兘浼氳瘽鏂囦歡銆傛垜榪樺皢鎻愪竴涓嬧淕eneral鈥濋夐」鍗′笂鐨勬渶鍚庝竴涓」錛屽畠鍏鋒湁涓涓潪甯歌浜虹殑鍚嶇О 鈥斺淢anaged Allocation Profiling鈥濓紝鐩鎬俊榪欎細浣挎偍鎰熷埌鏇村姞濂藉銆傚湪鎴戣璁哄畬甯歌鍒嗘瀽涔嬪悗錛屾垜灝嗚繑鍥炲埌璇ラ」銆?/p>

鈥淧erformance Session鈥濆睘鎬ч〉涓婄殑鍙︿竴涓湁瓚g殑閫夐」鍗℃槸鈥淪ampling鈥濋夐」鍗★紙璇峰弬瑙?b>鍥?3錛夈傚湪榪欓噷錛屾偍鍙互鍛婅瘔 EPT 鎮ㄨ鎵ц鍝綾誨瀷鐨勯噰鏍楓傛濡傛垜鍦ㄥ墠闈㈡彁鍒扮殑閭f牱錛屾偍瀵逛簬甯屾湜濡備綍榪涜閲囨牱鍏鋒湁闈炲父濂界殑鎺у埗銆?/p>


鍥?3 鍚勭 EPT 閲囨牱璁℃暟鍣ㄩ夐」

鍦ㄦ墽琛屽垎鏋愯繍琛屾椂錛孍PT 浼氬湪浜岃繘鍒舵枃浠跺湪紜洏涓墍澶勭殑浣嶇疆涓婂皢鍏朵華琛ㄥ寲銆傚鏋滄偍甯屾湜灝嗕華琛ㄥ寲鐨勪簩榪涘埗鏂囦歡縐誨姩鍒板彟涓涓綅緗紝璇烽夋嫨鈥淧erformance Session鈥濆睘鎬ч〉涓殑鈥淏inary鈥濋夐」鍗★紝鐒跺悗閫変腑鈥淩elocate Instrumented Binaries鈥濓紙瀹冧笌 REBASE 鏍峰紡鐨勯噸瀹氫綅緇濆娌℃湁浠諱綍鍏崇郴錛夛紝騫朵笖鎸囧畾鎮ㄥ笇鏈涘皢鏇存敼鍚庣殑浜岃繘鍒舵枃浠剁Щ鑷充綍澶勩?/p>

鈥淚nstrumentation鈥濋夐」鍗′嬌鎮ㄥ彲浠ユ寚瀹氬笇鏈涘湪浠〃鍖栧彂鐢熶箣鍓嶅拰涔嬪悗榪愯鐨勭▼搴忋傚鏋滄偍闇瑕佸浠〃鍖栫殑浜岃繘鍒舵枃浠舵墽琛屽叾浠栦換鍔★紙渚嬪錛屽皢鍏剁Щ鍔ㄥ埌鍏ㄥ眬紼嬪簭闆嗙紦瀛樹腑鎴?Web 鏈嶅姟鍣ㄤ笂鐨勭壒瀹氫綅緗級錛屽垯璇ラ夐」鍗″彲鑳藉緢鏈夌敤銆傗淎dvanced鈥濋夐」鍗″湪璇ユ祴璇曠増涓湭鍏紑銆傛渶鍚庯紝閫氳繃鈥淐ounters鈥濋夐」鍗★紝鎮ㄥ彲浠ュ憡璇?EPT 浠庣郴緇熺殑 CPU 涓敹闆嗗叾浠栨暟鎹紝渚嬪錛孡2 鎴?L3 緙撳瓨璇誨彇涓嶄腑銆傛樉鐒訛紝榪欎簺閫夐」鏄彧鏈夊皯鏁板紑鍙戜漢鍛樻墠浼氶渶瑕佺殑闈炲父楂樼駭鐨勯夐」錛屼絾鏄鏋滄偍紜疄闇瑕佸畠浠紝閭d箞瀹冧滑鍙互鍙戞尌宸ㄥぇ鐨勪綔鐢ㄣ?/p>

鍦ㄦ垜緇х畫璁ㄨ鏌ョ湅閲囨牱鏁版嵁涔嬪墠錛屾垜鎯蟲彁涓涓嬶紝鈥淧erformance Explorer鈥濈獥鍙e彲浠ユ牴鎹偍鐨勯渶瑕佹墦寮浠繪剰澶氫釜鎬ц兘浼氳瘽銆傚綋鎮ㄥ笇鏈涜瀵熺壒瀹氱殑鍓嶅悗鏂規錛屾垨鑰呭笇鏈涚敤涓嶅悓鐨勪華琛ㄥ寲浜岃繘鍒舵枃浠舵墽琛屽崟鐙殑嫻嬭瘯榪愯鏃訛紝榪欎竴鐐規瀬涓烘湁鐢ㄣ傚綋鎮ㄦ墦寮澶氫釜鎬ц兘浼氳瘽鏃訛紝搴斿綋紜繚鍙抽敭鍗曞嚮鐗瑰畾鐨勪細璇濓紝閫夋嫨鈥淪et as Current Session鈥濅互渚胯璇ヤ細璇濈殑璁劇疆鎵ц錛岀劧鍚庡皢鎶ュ憡褰掓。鍒板畠鐨勬姤鍛婅妭鐐逛腑銆?/p>


鏌ョ湅鍒嗘瀽鍣ㄦ暟鎹?/p>

灝嗘ц兘浼氳瘽璁劇疆涓烘偍甯屾湜鎵ц鐨勬搷浣滀互鍚庯紝灝卞彲浠ュ惎鍔ㄥ垎鏋愪簡銆傛垜灝嗛鍏堝 Animated Algorithm 鎵ц閲囨牱鍒嗘瀽錛屼互鏌ョ湅鎴戞槸鍚﹀彲浠ユ壘鍒頒竴浜涚儹鐐廣備粠閲囨牱涓幏寰楄壇濂芥暟鎹殑鍏抽敭鍦ㄤ簬鎵ц杈冮暱鏃墮棿鐨勮繍琛屻傚浜?Animated Algorithm錛屾垜浼氬皢 15 涓帓搴忕畻娉曚腑鐨勬瘡涓涓畻娉曡繍琛屼袱嬈★紝騫跺皢閲囨牱璁劇疆涓洪粯璁ょ殑涓鐧句竾涓椂閽熷懆鏈熴?/p>

鍦ㄥ畬鎴愭煇涓繍琛屼箣鍚庯紝EPT 浼氬皢璇ヨ繍琛岀殑鎶ュ憡鏀懼埌鎬ц兘浼氳瘽鐨勨淩eports鈥濇枃浠跺す涓侲PT 鍦ㄨ繍琛屾湡闂存敹闆嗗師濮嬫ц兘鏁版嵁錛屽茍灝嗗叾嫻佸紡浼犺緭鍒版姤鍛婃枃浠朵腑錛堜笉鍋氫換浣曞垎鏋愶級銆傝繖鏍鳳紝鎮ㄥ彲浠ュ湪榪愯搴旂敤紼嬪簭鏃墮伩鍏嶆墍鏈夌郴緇熷紑閿錛屼絾鏄偍灝嗕負澶у瀷鎶ュ憡鏂囦歡浠樺嚭浠d環銆傛垜鍒氭墠瀹屾垚鐨勮繍琛岀殑閲囨牱鎶ュ憡鏂囦歡澶у皬涓?3.70MB錛屽畠鐢ㄤ簡澶х害涓夊垎閽熸墠瀹屾垚銆傝紜繚鎮ㄥ湪榪愯 EPT 鏃跺叿鏈夊ぇ閲忕殑紓佺洏絀洪棿銆?/p>

鎵鏈夋暟鎹垎鏋愶紙瀹冨繀鐒朵即鏈夎皟鐢ㄥ爢鏍堢殑鐢熸垚浠ュ強鎬ц兘鏁板瓧鐨勮綆楋級閮藉湪鎮ㄦ墦寮鎶ュ憡鏂囦歡鏃跺彂鐢熴傚浜庢祴璇曠増錛屽湪鎵撳紑鏂囦歡鏃墮熷害鍙兘浼氶檷浣庛傜湅璧鋒潵瑙嗗浘濂藉儚澶勪簬鏃犻檺寰幆涓紝浣嗘槸錛屽鏋滆繘搴︽爮姝e湪鎶ュ憡紿楀彛涓Щ鍔紝閭d箞璇鋒偍鑰愬績涓浜涳紝鏂囦歡鏈緇堝皢寮瑰嚭銆?/p>

浠諱綍鍒嗘瀽榪愯涓殑絎竴涓鍥炬槸鈥淧erformance Report Summary鈥濓紝瀹冩樉紺哄湪鍒氬垰瀹屾垚鐨?Animated Algorithm 閲囨牱榪愯鐨?b>鍥?4 涓備笉鍑烘墍鏂欙紝閲囨牱灝嗗彂鐢熷湪鏁翠釜搴旂敤紼嬪簭涓紝鍥犳鎮ㄦ鍦ㄦ煡鐪嬬殑淇℃伅涔熷氨鏄偍灝嗗湪搴旂敤紼嬪簭涓湅鍒扮殑鍐呭錛氬ぇ閮ㄥ垎宸ヤ綔閮藉彂鐢熷湪妗嗘灦綾誨簱鎴栨搷浣滅郴緇熷唴閮ㄣ傚鏋滄偍紜疄鍦ㄩ噰鏍封淪ummary鈥濊鍥句腑鐪嬪埌浜嗘偍鐨勪竴涓柟娉曪紝鍒欐偍寰堝彲鑳界湅鍒頒簡涓涓ц兘闂銆?/p>


鍥?4 EPT 閲囨牱鎬ц兘鎶ュ憡鎽樿

蹇熸祻瑙堜竴涓?b>鍥?4錛屾偍鍙兘鎯崇煡閬?Inclusive Sampled 鍜?Exclusive Sampled 涔嬮棿鐨勫尯鍒侲xclusive Sampled 鎰忓懗鐫璇ユ柟娉曞湪鍙栨牱鏃朵綅浜庡爢鏍堢殑欏墮儴銆傛崲鍙ヨ瘽璇達紝瀹冩槸褰撳墠姝e湪鎵ц鐨勫嚱鏁般侷nclusive Sampled 鎰忓懗鐫璇ュ嚱鏁板湪鍙栨牱鏃跺嚭鐜板湪璋冪敤鍫嗘爤涓傚洜鑰岋紝鍖呭惈鏂規硶鏄綋鍓嶆鍦ㄦ墽琛岀殑鏂規硶鐨勮皟鐢ㄦ柟銆?/p>

鍦ㄩ噰鏍鋒柟妗堜腑錛屼竴涓柟娉曞湪璋冪敤鍫嗘爤 (Inclusive Sampled) 涓嚭鐜扮殑嬈℃暟瓚婂錛岃鍑芥暟鍦ㄦ墽琛屼腑鑺辮垂鐨勬椂闂村氨瓚婂錛屽洜姝よ繖閲屾槸鎮ㄩ渶瑕侀噸鐐瑰叧娉ㄤ互榪涜鎬ц兘璋冩暣鐨勫湴鏂廣傚浜?Exclusive Sampled 鍑芥暟鑰岃█錛屽嚱鏁板湪閭i噷棰戠箒鍑虹幇琛ㄦ槑璇ュ嚱鏁版鍦ㄨ棰戠箒鍦拌皟鐢紝浣嗘槸瀹冪殑鎵ц瀹為檯涓婂彲鑳介潪甯稿揩閫熴傚浜庡儚 Animated Algorithm 榪欐牱闇瑕佽繘琛屽ぇ閲忓浘褰㈠鐞嗙殑搴旂敤紼嬪簭錛屾垜瀹屽叏鑳藉棰勬枡鍒?GDIPLUS.DLL 涓殑鏌愪釜鍑芥暟灝嗛潬榪戝垰鍒氭樉紺虹殑鍒楄〃鐨勯《閮ㄣ傚湪鍥?4 涓紝浣嶄簬 GDIPLUS.DLL 涓亸縐婚噺 0x5B8D 澶勭殑鍑芥暟錛堝畠鎭板ソ鏄?FLOOR 鍑芥暟錛夎涓鐩磋皟鐢紝浠ヤ究璁$畻鍦ㄥ睆騫曚笂鐨勫摢涓綅緗樉紺烘煇浜涘唴瀹廣傚綋鎮ㄨ瀵熸ц兘榪愯鏃訛紝璇風‘淇濊緗鍙鋒湇鍔″櫒浠ヨ幏寰楀彲鑳藉瓨鍦ㄧ殑鏈浣充俊鎭傚湪鎾板啓鏈枃鏃訛紝鎴戜嬌鐢ㄤ簡 EPT 鐨勬湭鍙戝竷鐗堟湰錛屽洜鑰岀鍙峰皻涓嶅彲鐢ㄣ?/p>

鍦ㄦ垜璺沖埌鍏朵粬瑙嗗浘涓互鍓嶏紝鎴戝笇鏈涗華琛ㄥ寲 Animated Algorithm錛屽茍涓斿畬鎴愪笌鎴戦拡瀵歸噰鏍峰垎鏋愬櫒瀹屾垚鐨勮繍琛岀浉鍚岀殑榪愯錛屼互渚挎樉紺轟華琛ㄥ寲榪愯鐨勬ц兘鎶ュ憡鎽樿銆傛濡傛偍鍙互鐚滃埌鐨勯偅鏍鳳紝浠〃鍖栫殑榪愯浼氱敓鎴愭瘮閲囨牱榪愯澶氬緱澶氱殑鏁版嵁銆傚浜庤榪愯錛屾垜浠〃鍖栦簡 Animated Algorithm 涓殑鍏ㄩ儴浜斾釜紼嬪簭闆嗭紝騫舵渶緇堝緱鍒頒竴涓?375MB 澶у皬鐨勪細璇濇枃浠躲?/p>

閲囨牱鍜屼華琛ㄥ寲鏁版嵁涔嬮棿鐨勪富瑕佸尯鍒槸錛氶噰鏍鋒煡鐪嬫暣涓繘紼嬬┖闂達紝騫朵笖灝嗘樉紺烘鏋剁被搴撴垨鎿嶄綔緋葷粺鍐呴儴錛堟崲鍙ヨ瘽璇達紝灝辨槸鎮ㄥ湪鍏朵腑涓嶅叿鏈夋簮浠g爜鐨勪綅緗級鐨勮皟鐢ㄣ傚彟涓鏂歸潰錛屼華琛ㄥ寲鍙煡鐪嬪簲鐢ㄧ▼搴忎互鍙婃偍鍦ㄩ潪浠〃鍖栨ā鍧椾笂鐩存帴璋冪敤鐨勬柟娉曘備緥濡傦紝濡傛灉鎮ㄥ叿鏈変竴涓淗ello World!鈥濆簲鐢ㄧ▼搴忥紝騫朵笖瀹冪殑 Main 鍙皟鐢?Console.WriteLine錛屽垯鎮ㄥ皢鑾峰緱 Main 涓換浣曞伐浣滅殑璁℃椂淇℃伅浠ュ強 Console.WriteLine 闀垮害鐨勮鏃朵俊鎭紝浣嗘槸鎮ㄤ笉浼氳幏寰楁湁鍏?Console.WriteLine 鏂規硶鐨勪換浣曡緇嗕俊鎭?/p>

鍥?5 鏄劇ず浜嗕華琛ㄥ寲榪愯鐨勬ц兘鎶ュ憡鎽樿銆傜涓涓〃鈥淢ost Called Functions鈥濇樉紺轟簡棰戠箒浣跨敤鐨勫嚱鏁般傝琛ㄤ腑鐨勭涓鍒楄閿欒鏍囪涓烘椂闂達紱瀹冨疄闄呬笂琛ㄧず瀵硅鍑芥暟鐨勮皟鐢ㄦ鏁般傜櫨鍒嗘瘮鍒楁樉紺轟簡瀵硅鐗瑰畾鍑芥暟榪涜鐨勮皟鐢ㄦ繪鏁版墍鍗犵殑鐧懼垎姣斻傚湪澶у鏁拌繍琛屼腑錛屾偍灝嗗湪榪欓噷鐪嬪埌妗嗘灦綾誨簱鎴栨搷浣滅郴緇熷嚱鏁般傚鏋滄偍鐪嬪埌涓浜涙潵鑷偍鑷繁鐨勪唬鐮佺殑鍑芥暟錛屽垯鎮ㄦ渶濂戒簡瑙d竴涓嬫偍涓轟粈涔堝姝ら綣佸湴璋冪敤璇ョ壒瀹氬嚱鏁般?/p>


鍥?5 浠〃鍖栬繍琛岀殑鎽樿

鈥淔unctions with Most Individual Work鈥濊〃鍒楀嚭浜嗛偅浜涜姳璐瑰ぇ閮ㄥ垎鏃墮棿浠ヤ粎浠呮墽琛岃鍑芥暟錛堟病鏈変換浣曞叾浠栧嚱鏁拌皟鐢級鐨勬柟娉曘傝繖涔熺О涓鴻鍑芥暟鐨勭嫭鍗犳椂闂淬傚浜庢祴璇曠増鏈紝鈥淭ime鈥濆垪鐨勫崟浣嶄負鏃墮挓璧版牸鏁般傚浜庢渶緇堢増鏈紝鍗曚綅灝嗘槸姣銆備絾鏄紝鎴戣涓烘ц兘榪愯鐨勫疄闄呭師濮嬪崟浣嶅浜庡垎鏋愭病鏈夌敤銆傛渶閲嶈鐨勬暟瀛楁槸鐧懼垎姣斻傚湪瑙傚療鎬ц兘闂鏃訛紝鎮ㄥ笇鏈涚煡閬擄紝涓庡簲鐢ㄧ▼搴忎腑鐨勬墍鏈夊叾浠栨柟娉曠浉姣旓紝鍝釜鏂規硶鍗犵敤浜嗘渶闀跨殑鏃墮棿銆傛偍鍦ㄨ瀵熷儚 3519639455 鍜?3492589504 榪欐牱鐨勪袱涓暟瀛楁椂錛屽緢闅懼瀹冧滑榪涜浠涔堟瘮杈冦傚垢榪愮殑鏄紝璇ヨ〃鍖呭惈鐧懼垎姣旓紝鑰屾垜瀵?EPT 鍥㈤槦鐨勫緩璁槸浠庡浘琛ㄤ腑涓㈠純鍘熷鏁版嵁銆?/p>

鏈鍚庝竴涓〃鈥淔unctions Taking Longest鈥濇樉紺烘柟娉曠殑瀹為檯鏃墮棿錛堜篃縐頒負璺戣〃鏃墮棿鎴栬繍琛屾椂闂達級銆傚垎鏋愬櫒璁板綍鏂規硶鐨勫叆鍙g偣鏃墮棿鍜屽嚭鍙g偣鏃墮棿錛屽茍灝嗚繖涓や釜鍊肩浉鍑忋傝鏁板瓧娑電洊浜嗚璋冪敤鐨勬墍鏈夊瓙鏂規硶銆佹墍鏈変笂涓嬫枃鍒囨崲浠ュ強璇ユ柟娉曟墽琛岀殑浼戠湢銆傚湪鍥?5 涓紝鎮ㄥ彲浠ョ湅鍒?System.Windows.Forms.Application.Run 鍗犵敤浜嗘渶闀挎椂闂達紝灝卞儚鎮ㄥ Windows 紿椾綋搴旂敤紼嬪簭鎵棰勬枡鐨勯偅鏍楓傚敖綆″緢澶氬紑鍙戜漢鍛樺皢娉ㄦ剰鍔涢泦涓簬鐙崰鏃墮棿錛屼絾榪欏彧鏄暣涓ц兘鐘跺喌鐨勪竴灝忛儴鍒嗐傚鏋滄柟娉曟鍦ㄥ鏁版嵁搴撹繘琛岃皟鐢ㄦ垨鑰呰繘琛?Web 鏈嶅姟璋冪敤錛屽垯鎮ㄧ殑鏂規硶鍦ㄨ繍琛屾椂鎵鍦ㄧ殑綰跨▼灝嗗湪絳夊緟榪欎簺璋冪敤榪斿洖鏁版嵁鏃墮樆濉烇紝浠庤屼嬌寰楄綰跨▼浠?CPU 涓縐昏蛋銆傞氳繃瀵嗗垏鍏蟲敞鏂規硶鐨勮繍琛屾椂闂達紝鎮ㄥ彲浠ユ壘鍒頒唬鐮佷腑姝e湪闄嶄綆搴旂敤紼嬪簭榪愯閫熷害鐨勯儴鍒嗐?/p>

灝界鎽樿瑙嗗浘寰堜笉閿欙紝浣嗘偍鏈鎰熷叴瓚g殑灝嗘槸鏌ョ湅浠g爜鍦ㄤ綍澶勯樆濉炰簡緋葷粺鐨勫叾浣欓儴鍒嗭紙瀵逛簬閲囨牱榪愯鑰岃█錛夛紝鎴栬呴樆濉炰簡搴旂敤紼嬪簭鐨勫叾浠栨柟娉曪紙瀵逛簬浠〃鍖栬繍琛岃岃█錛夈傝繖鏄淔unction鈥濊鍥劇殑鑱岃矗鑼冨洿 鈥?閫氳繃鍗曞嚮鎶ュ憡紿楀彛搴曢儴鐨勨淔unction鈥濇寜閽彲浠ラ夋嫨璇ヨ鍥俱傛偍榪樺彲浠ュ弻鍑燴淪ummary鈥濊鍥劇殑浠諱綍鏂規硶浠ヨ煩鑷斥淔unction鈥濊鍥俱?/p>

瀵逛簬閲囨牱榪愯錛屸淔unction鈥濊鍥炬樉紺轟簡鑷沖皯涓涓寘鍚崟鑾蜂腑鎵鏈夊嚱鏁版崟鑾風殑鍒楄〃銆傚浜庝華琛ㄥ寲榪愯錛屾偍灝嗙湅鍒頒綔涓鴻榪愯鐨勪竴閮ㄥ垎璋冪敤鐨勬墍鏈変華琛ㄥ寲鏂規硶銆傛棤璁烘偍姝e湪鎵ц鍝綾誨瀷鐨勫垎鏋愶紝閮戒細鍦ㄢ淔unction鈥濊鍥句腑鏄劇ず寰堝鏁版嵁錛屽洜姝ゆ偍鍙互瀵逛唬鐮佺殑鐘跺喌鏈変竴鐐瑰効鎰熻銆?/p>

榛樿鎯呭喌涓嬶紝閲囨牱鈥淔unction鈥濊鍥炬樉紺衡淚nclusive Samples鈥濆垪鍜屸淓xclusive Samples鈥濆垪銆傜敱浜庢垜鍠滄鐧懼垎姣旀暟瀛楋紝鍥犳鎴戝彸閿崟鍑諱簡鍒楁爣棰樹互鍚戝垪鏍囬涓坊鍔犫淚nclusive Percent鈥濆拰鈥淓xclusive Percent鈥濄傚鏋滄偍瑕佸澶氳繘紼嬬郴緇熻繘琛岄噰鏍鳳紝鍒欏彲鑳藉笇鏈涘寘鍚叾浠栧垪錛堜緥濡傦紝鈥淧rocess Name鈥濇垨鈥淧rocess ID鈥濓級錛屼互渚挎偍鍙互鏍囪瘑鍝釜鏂規硶閲囨牱涓庡摢涓繘紼嬬浉閰嶃傛偍榪樺彲浠ュ湪浠〃鍖栤淔unction鈥濊鍥句腑璁劇疆鍒楁爣棰橈紝浣嗘槸鎮ㄥ皢鍏鋒湁涓嶅悓鐨勬爣棰樼粍浠ヤ緵閫夋嫨銆?/p>

鍦ㄢ淔unction鈥濊鍥句腑鍒嗘瀽閲囨牱榪愯鏃訛紝鎴戝枩嬈㈤鍏堟壂涓鐪尖淔unction鈥濊鍥劇殑澶村嚑涓寜鈥淚nclusive Samples鈥濆垪鎺掑簭鐨勯〉錛屼互浜嗚В姝e湪鎵ц鐨勬柟娉曘傚鏋滄垜鍦ㄥご鍑犱釜欏典腑娌℃湁鐪嬪埌鎴戠殑浠諱綍鏂規硶錛屽垯鎴戜細鍙抽敭鍗曞嚮鈥淔unction鈥濊鍥懼茍閫夋嫨鈥淕roup by Module鈥濓紝浠ヤ究鑾峰緱鏍戞姤鍛婅鍥俱傚綋鎮ㄥ皢鍑芥暟鎸夋ā鍧楀垎緇勬椂錛屾寜鐗瑰畾鍒楁帓搴忓彲浠ユ紜墽琛?鈥?榪欐槸涓欏瑰緢涓嶉敊鐨勫姛鑳姐?/p>

瀵逛簬浠〃鍖栬繍琛岋紝鈥淔unction鈥濊鍥懼叿鏈夋洿澶氳鏄劇ず鐨勫垪銆傚鏋滄偍鎷ユ湁涓鍙?40 鑻卞鐨勬樉紺哄櫒錛屽垯鏃犻渶鏈澶у寲 Visual Studio .NET 紿楀彛灝卞簲褰撹兘澶熺湅鍒版墍鏈夎繖浜涘垪銆傚浜庢垜浠腑鐨勫叾浠栦漢鑰岃█錛屾煡鐪嬧淔unction鈥濊鍥劇殑鏈浣蟲柟寮忔槸鎸?Alt + Shift + Enter 浠ュ垏鎹㈠埌鍏ㄥ睆騫曟ā寮忋?/p>

鍦ㄨ繖浜涘垪涓紝鈥淔unction鈥濊鍥句腑鐨勪華琛ㄥ寲榪愯浣跨敤鎴戝湪鍓嶉潰瑙i噴榪囩殑鈥滃寘鍚濆拰鈥滅嫭鍗犫濇湳璇備絾鏄紝榪樻湁鍙︿竴涓嬌浜烘販娣嗙殑鏈錛氬簲鐢ㄧ▼搴忋傛濡傛垜鎻愬埌鐨勯偅鏍鳳紝榪愯鏃墮棿鏄粠涓涓華琛ㄥ寲鐐瑰埌鍙︿竴涓華琛ㄥ寲鐐圭殑鎬繪椂闂達紝鑰屼笉綆¤綰跨▼鍙兘榪涜浜嗗摢浜涗笂涓嬫枃鍒囨崲銆傚簲鐢ㄧ▼搴忔椂闂寸殑鎬濇兂鏄?EPT 灝嗘彁鍙栧嚭鍦ㄨ繖浜涗笂涓嬫枃鍒囨崲涓墍鑺辮垂鐨勬椂闂達紝浠ヤ究鎮ㄥ彲浠ョ湅鍒版偍鐨勪唬鐮佸湪 CPU 涓疄闄呮墽琛岀殑鏃墮棿銆?/b>鍥?6 鍒楀嚭浜嗘偍灝嗗湪浠〃鍖栤淔unction鈥濊鍥句腑鐪嬪埌鐨勪笉閭d箞鏄庢樉鐨勫垪鐨勫畾涔夈傛偍鍙兘甯屾湜灝嗗畠浼犻佸埌鏄劇ず鍣ㄤ笂錛岀洿鍒?EPT 鐨勮仈鏈哄府鍔╅棶涓栥?/p>

鍦ㄨ瀵熶華琛ㄥ寲榪愯鐨勨淔unction鈥濊鍥炬椂錛屾垜娣誨姞浜嗚繖浜涘垪浠ユ煡鐪嬪悇縐嶈鏃剁殑鐧懼垎姣斿鹼紝縐婚櫎鍘熷鏁板瓧鏃墮棿鍒楋紝騫朵笖娣誨姞浜嗕袱涓漿鎹㈠垪銆傝繖涓烘垜鎻愪緵浜嗘湁鍏寵榪愯鐨勬洿娓呮櫚瑙嗗浘銆傛垜鍦ㄦ帓搴忔椂鎵渚濇嵁鐨勭涓涓垪鏄? Application Exclusive Time鈥濓紝鍥犱負鎴戝笇鏈涚湅鍒板摢涓嚱鏁版鍦ㄥ畬鎴愬ぇ閮ㄥ垎宸ヤ綔銆傜敱浜庝華琛ㄥ寲鍦ㄦ柟娉曡繘琛岀殑鎵鏈夊瓙璋冪敤鍛ㄥ洿鏀懼叆浜嗘帰嫻嬶紝鎵浠ユ偍瀹屽叏鏈夊彲鑳藉湪璇ュ垪琛ㄧ殑欏墮儴鐪嬪埌妗嗘灦綾誨簱鎴栨搷浣滅郴緇熴傚疄闄呬笂錛屽浜庢垜鐨?Animated Algorithm 榪愯錛孲ystem.Drawing.SolidBrush.ctor 鍜?System.Drawing.Brush.Dispose 鍦?Application Exclusive Time 鐧懼垎姣斾腑琚垪涓虹涓鍜岀浜岋紝鍏剁櫨鍒嗘瘮鍒嗗埆涓?14.982% 鍜?14.867%銆傛垜緙栧啓鐨勭涓涓嚱鏁版槸浣嶄簬絎笁浣嶇殑 Bugslayer.SortDisplayGraph.SorterGraph.UpdateSingleFixedElement錛堝叾鐧懼垎姣斾負 12.217%錛夛紝瀹冨湪鍥懼艦涓粯鍒跺崟鐙殑鏉°傛牴鎹簲鐢ㄧ▼搴忕被鍨嬬殑涓嶅悓錛屾垜鍦ㄦ煡鐪嬧淔unction鈥濊鍥炬椂鍙兘浼氶夋嫨鎸夊叾浠栧垪鎺掑簭銆傚鏋滃瓨鍦?Web 鏈嶅姟鎴栨暟鎹簱璋冪敤錛屽垯鎴戝皢鏌ョ湅 % Elapsed Inclusive Time錛屼互渚垮彲浠ョ湅鍒版槸鍚︽湁鐗瑰畾鏂規硶鍗峰叆鍒伴暱鏃墮棿闃誨涓傚浜庡儚 Animated Algorithm 榪欐牱鐨勫簲鐢ㄧ▼搴忥紝鎴戣繕灝嗘煡鐪?Application Inclusive Time 鐨勭櫨鍒嗘瘮銆?/p>

鍩轟簬鎴戠殑浠〃鍖栬繍琛屼腑鐨勪笂榪版暟瀛楋紝鎴戝緢鎯蟲煡鏄庢槸璋佸湪瀵?SolidBrush 鏂規硶榪涜榪欎簺璋冪敤錛屽洜姝ゆ垜鍙抽敭鍗曞嚮 .ctor 鏂規硶騫墮夋嫨鈥淪how in Caller/Callee鈥濊鍥撅紝浠ヤ究鏌ョ湅鏄皝鍦ㄨ皟鐢ㄨ鏂規硶銆傝瑙嗗浘錛堝畠瀵逛簬閲囨牱鍒嗘瀽涔熷彲鐢級浣挎偍涓鐪煎氨鍙互鐪嬪嚭鐩爣鏂規硶鐨勬墍鏈夎皟鐢ㄦ柟錛屼互鍙婅鐩爣鏂規硶璋冪敤鐨勬墍鏈夋柟娉曘?/p>

鍥犱負 .ctor 鏂規硶娌℃湁浠〃鍖栵紝鎵浠モ淐aller/Callee鈥濊鍥懼皢涓嶄細鏄劇ず浠諱綍琚皟鐢ㄦ柟錛屼絾鏄畠鏄劇劧浼氭樉紺鴻皟鐢ㄦ柟銆傛垜鍙屽嚮浜嗚繖涓敮涓鐨勮皟鐢ㄦ柟錛屽畠鎭板ソ鏄叿鏈夌涓夐珮 Application Exclusive Time 騫跺叿鏈?a target="_blank">鍥?7 鎵紺鴻鍥劇殑 UpdateSingleFixedElement 鏂規硶銆?/p>

鍦?a target="_blank">鍥?7 涓紝浣嶄簬瑙嗗浘涓儴鐨勪笅鎷夌粍鍚堟鏄洰鏍囨柟娉曪紙鍦ㄦ湰渚嬩腑涓?UpdateSingleFixedElement錛夈傛柟娉曚笂鏂圭殑緗戞牸鍖呭惈浜嗙洰鏍囨柟娉曠殑鎵鏈夎皟鐢ㄦ柟錛堣皟鐢ㄦ柟錛夈傜洰鏍囨柟娉曚笅鏂圭殑緗戞牸鍖呭惈浜嗙洰鏍囨柟娉曡皟鐢ㄤ互瀹屾垚鍏跺伐浣滅殑鎵鏈夋柟娉曪紙琚皟鐢ㄦ柟錛夈傚鏋滄偍甯屾湜鏌ョ湅鏄皝璋冪敤浜嗙壒瀹氳皟鐢ㄦ柟錛岃鍙屽嚮璇ヨ皟鐢ㄦ柟鏂規硶錛岃鏂規硶灝嗗彉涓虹洰鏍囨柟娉曪紝騫朵笖鎮ㄥ皢鐪嬪埌鍘熷鐩爣鏂規硶涓嬮檷鍒拌璋冪敤鏂歸儴鍒嗕腑銆傚疄璐ㄤ笂錛屾偍鍙槸灝嗗爢鏍堥亶鍘嗕簡涓閬嶃?/p>

浠呬粎鍩轟簬鍥?7 涓殑瑙嗗浘錛屾偍灝卞彲浠ヨ鯨鍒嚭娼滃湪鐨勬ц兘闂銆侫nimated Algorithm 浼間箮涓嶅叿鏈変換浣曠獊鍑虹殑鎬ц兘闂錛屼絾鏄?SolidBrush .ctor 鍜?Dispose 鍗犵敤浜嗗姝ゅ鐨勬椂闂村茍涓旈兘鍦?UpdateSingleFixedElement 鏂規硶鍐呴儴璋冪敤錛堣皟鐢ㄤ簡 351,872 嬈★級錛岃繖涓簨瀹炶〃鏄庢垜鍋氫簡涓浠舵剼锠㈢殑浜嬫儏 鈥?鎴戞瘡嬈¢兘閫氳繃璇ュ嚱鏁板垱寤虹敾絎旓紝鑰屽疄闄呬笂搴旇灝嗗叾緙撳瓨銆傚綋鎴戝湪灝嗘潵鐨勬煇涓鏈?MSDN Magazine 涓紑濮嬬敤 EPT 鍒嗘瀽浠g爜鏃訛紝鎮ㄨ繕灝嗙湅鍒?Animated Algorithm 鐨勫叾浠栦竴浜涢棶棰樸?/p>

鏁版嵁鐨勬渶鍚庝竴涓父鐢ㄨ鍥炬槸鈥淐allstack鈥濊鍥俱傚湪榪欓噷錛屾偍鍙互閫氳繃鏇村叿灞傛鎬х殑鏂瑰紡鐪嬪埌鎮ㄥ湪鈥淐aller/Callee鈥濈獥鍙d腑瑙傚療鍒扮殑璋冪敤鍫嗘爤銆傚浜庨噰鏍瘋繍琛岋紝鎮ㄥ皢鍦ㄢ淐allstack鈥濊鍥劇殑欏跺眰鐪嬪埌寰堝鐨勬潯鐩紝鍥犱負榪欎簺鏉$洰涓殑姣忎竴涓兘浠h〃涓涓寘鍚嫭鍗犳牱鏈殑鍞竴鐐廣傚綋鎮ㄥ湪閲囨牱榪愯涓睍寮欏規椂錛屾偍榪樺皢鐪嬪埌錛屽湪鐩稿悓綰у埆鍋跺皵浼氬瓨鍦ㄤ竴浜涢」錛岃繖浜涢」鎸囩ず浣嶄簬鏍歸儴鐨勫嚱鏁板叿鏈夊涓紩鍚戝畠鐨勮皟鐢ㄦ爲銆傛牴浣嶇疆涓樉紺虹殑欏規槸鏍堥《銆?/p>

瀵逛簬浠〃鍖栬繍琛岋紝鈥淐allstack鈥濈獥鍙e皢鍏鋒湁涓庡簲鐢ㄧ▼搴忎腑鐨勬瘡涓嚎紼嬬浉瀵瑰簲鐨勬牴鍏冪礌銆傚洜涓?Animated Algorithm 鍙湁涓や釜綰跨▼錛屾墍浠ユ偍鍙兘鍦ㄦ爲鏍圭駭鍒湅鍒頒袱涓」銆傚湪鈥淐allstack鈥濊鍥句腑錛屾偍鍙互鐪嬪埌緇濆璋冪敤鍫嗘爤錛堜粠浠〃鍖栫殑絎竴涓柟娉曞悜涓嬪埌鏈鍚庝竴涓柟娉曪級錛屽洜姝ゆ偍鍙互鐪熸浜嗚В搴旂敤紼嬪簭鐨勬墽琛屾柟寮忋傛垜宸茬粡鏈夊緢澶氭瀵規垜璁や負浠g爜鎵瀹屾垚鐨勫伐浣滃拰浠g爜瀹為檯涓婂畬鎴愮殑宸ヤ綔涔嬮棿鐨勫樊寮傛劅鍒板悆鎯娿?/p>

鎮ㄥ彲浠ヨ姳璐瑰ぇ閲忔椂闂村湪鈥淐allstack鈥濈獥鍙d腑鍒嗘瀽浠g爜銆傚綋閫氳繃搴旂敤紼嬪簭瑙傚療鐗瑰畾鐨勮釜榪規椂錛屾偍鍙互閫氳繃閫夋嫨鎰熷叴瓚g殑鐗瑰畾鑺傜偣錛屽悜涓嬬Щ鍔紝鍙抽敭鍗曞嚮錛屽茍閫夋嫨鈥淪et Root鈥濊彍鍗曢夐」錛屾潵娑堥櫎澶ч噺鍣煶銆傚湪鍥?8 涓紝鎴戝笇鏈涙煡鐪?NSort.SwapSorter.Sort 榪涜鐨勬墍鏈夎皟鐢紝鍥犳灝嗗畠璁劇疆涓烘牴鍙互娑堥櫎 UI 綰跨▼鐨勫獎鍝嶃?/p>

鍦ㄥ皢鏉ョ殑鏌愪竴鏈熶腑錛屾垜灝嗘洿璇︾粏鍦拌璁?EPT 鏄劇ず鍖哄煙涓殑鏈鍚庝袱涓夐」鍗★細鈥淭race鈥濆拰鈥淭ype鈥濄傚湪鈥淭ype鈥濊鍥句腑錛屾偍鍙互瑙傚療宸茬粡鍦ㄥ簲鐢ㄧ▼搴忎腑鍒嗛厤鐨勫璞°傚畠鍦ㄦ祴璇曠増涓湁鏁堛傚綋鎴戝湪鍓嶉潰璁ㄨ鎬ц兘浼氳瘽灞炴ф椂錛屾垜鎻愬埌榪囧湪鈥淕eneral鈥濋夐」鍗′笂鏈変竴涓淢anaged Allocation Profiling鈥濋儴鍒嗐傚鏋滄偍閫夋嫨鈥淎llocations-only鈥濆崟閫夋寜閽紝鍒?EPT 浼氬~鍏呪淭ype鈥濊鍥俱傚湪嫻嬭瘯鐗堜腑錛屾姤鍛婄湅璧鋒潵綾諱技浜庡叾浠栬澶氬伐鍏蜂腑鐨勬姤鍛婏紝浣嗘槸鏁版嵁鏀墮泦浼間箮涓嶅儚鍦ㄥ叾浠栧伐鍏蜂腑閭f牱鍏鋒湁濡傛涔嬪鐨勭郴緇熷紑閿銆傛渶鍚庯紝瑕佷簡瑙?Enterprise Performance Tool 鍥㈤槦鐨勬兂娉曚互鍙婃湁鍏寵宸ュ叿鐨勬洿澶氫俊鎭紝璇風‘淇濆湪 blogs.msdn.com/profiler 鏌ョ湅浠栦滑鐨勭綉緇滄棩璁般?/p>

John Robbins 鏄?Wintellect 鐨勫垱濮嬩漢涔嬩竴錛岃鍏徃鏄竴瀹朵笓闂ㄨ嚧鍔涗簬 Windows 鍜?.NET Framework 鐨勮蔣浠跺挩璇€佹暀鑲插拰寮鍙戝叕鍙搞備粬鐨勬渶鏂拌憲浣滄槸鈥淒ebugging Applications for Microsoft .NET and Microsoft Windows鈥?Microsoft Press, 2003)銆傝鑱旂郴 John錛岃璁塊棶 www.wintellect.com銆?/p>



]]>
鏁版嵁緇撴瀯綆楁硶闆?--C++璇█瀹炵幇http://www.shnenglu.com/mzty/archive/2005/12/24/2060.html姊﹀湪澶╂動姊﹀湪澶╂動Sat, 24 Dec 2005 11:22:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/24/2060.htmlhttp://www.shnenglu.com/mzty/comments/2060.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/24/2060.html#Feedback1http://www.shnenglu.com/mzty/comments/commentRss/2060.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2060.html闃呰鍏ㄦ枃

]]>
C#鎺掑簭綆楁硶澶у叏 http://www.shnenglu.com/mzty/archive/2005/12/24/2057.html姊﹀湪澶╂動姊﹀湪澶╂動Sat, 24 Dec 2005 07:51:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/24/2057.htmlhttp://www.shnenglu.com/mzty/comments/2057.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/24/2057.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/2057.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2057.html C#鎺掑簭綆楁硶澶у叏 鍦熶漢 2004-7-21

涓銆佸啋娉℃帓搴?Bubble)

using System;

namespace BubbleSorter
{
 public class BubbleSorter
 {
  public void Sort(int[] list)
  {
   int i,j,temp;
   bool done=false;
   j=1;
   while((j<list.Length)&&(!done))
   {
    done=true;
    for(i=0;i<list.Length-j;i++)
    {
     if(list[i]>list[i+1])
     {
     done=false;
     temp=list[i];
     list[i]=list[i+1];
     list[i+1]=temp;
     }
    }
   j++;
   }
  }
 }

 public class MainClass
 {
  public static void Main()
  {
   int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47};
   BubbleSorter sh=new BubbleSorter();
   sh.Sort(iArrary);
   for(int m=0;m<iArrary.Length;m++)
   Console.Write("{0} ",iArrary[m]);
   Console.WriteLine();
  }
 }
}

浜屻侀夋嫨鎺掑簭(Selection)

using System;

namespace SelectionSorter
{
 public class SelectionSorter
 {
  private int min;
  public void Sort(int [] list)
  {
   for(int i=0;i<list.Length-1;i++)
   {
   min=i;
    for(int j=i+1;j<list.Length;j++)
    {
    if(list[j]<list[min])
    min=j;
    }
   int t=list[min];
   list[min]=list[i];
   list[i]=t;
   }
  }
 }

 public class MainClass
 {
  public static void Main()
  {
   int[] iArrary = new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
   SelectionSorter ss=new SelectionSorter();
   ss.Sort(iArrary);
   for (int m=0;m<iArrary.Length;m++)
   Console.Write("{0} ",iArrary[m]);
   Console.WriteLine();
  }
 }
}

涓夈佹彃鍏ユ帓搴?InsertionSorter)

using System;

namespace InsertionSorter
{
 public class InsertionSorter
 {
  public void Sort(int [] list)
  {
   for(int i=1;i<list.Length;i++)
   {
   int t=list[i];
   int j=i;
    while((j>0)&&(list[j-1]>t))
    {
    list[j]=list[j-1];
    --j;
    }
   list[j]=t;
   }
  }
 }

 public class MainClass
 {
  public static void Main()
  {
   int[] iArrary=new int[]{1,13,3,6,10,55,98,2,87,12,34,75,33,47};
   InsertionSorter ii=new InsertionSorter();
   ii.Sort(iArrary);
   for(int m=0;m<iArrary.Length;m++)
   Console.Write("{0}",iArrary[m]);
   Console.WriteLine();
  }
 }
}

鍥涖佸笇灝旀帓搴?ShellSorter)

using System;

namespace ShellSorter
{
 public class ShellSorter
 {
  public void Sort(int [] list)
  {
  int inc;
  for(inc=1;inc<=list.Length/9;inc=3*inc+1);
   for(;inc>0;inc/=3)
   {
    for(int i=inc+1;i<=list.Length;i+=inc)
    {
    int t=list[i-1];
    int j=i;
     while((j>inc)&&(list[j-inc-1]>t))
     {
     list[j-1]=list[j-inc-1];
     j-=inc;
     }
    list[j-1]=t;
    }
   }
  }
 }

 public class MainClass
 {
  public static void Main()
  {
   int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47};
   ShellSorter sh=new ShellSorter();
   sh.Sort(iArrary);
   for(int m=0;m<iArrary.Length;m++)
   Console.Write("{0} ",iArrary[m]);
   Console.WriteLine();
  }
 }



]]>
鏁版嵁緇撴瀯锝烇綖浜屽弶鏍戝拰BSTs(涓?錛堣漿錛?/title><link>http://www.shnenglu.com/mzty/archive/2005/12/24/2055.html</link><dc:creator>姊﹀湪澶╂動</dc:creator><author>姊﹀湪澶╂動</author><pubDate>Sat, 24 Dec 2005 07:39:00 GMT</pubDate><guid>http://www.shnenglu.com/mzty/archive/2005/12/24/2055.html</guid><wfw:comment>http://www.shnenglu.com/mzty/comments/2055.html</wfw:comment><comments>http://www.shnenglu.com/mzty/archive/2005/12/24/2055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mzty/comments/commentRss/2055.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mzty/services/trackbacks/2055.html</trackback:ping><description><![CDATA[     鎽樿: 鍘熸枃閾炬帴錛歅art3: Binary Trees and BSTs   鏈枃鏄?鑰冨療鏁版嵁緇撴瀯"緋誨垪鏂囩珷鐨勭涓夐儴鍒嗭紝璁ㄨ鐨勬槸.Net Framework鍩虹被搴撴病鏈夊寘鎷殑甯哥敤鏁版嵁緇撴瀯錛? 浜屽弶鏍戙傚氨鍍忕嚎褰㈡帓鍒楁暟鎹殑鏁扮粍涓鏍鳳紝鎴戜滑鍙互灝嗕簩鍙夋爲鎯寵薄涓轟互浜岀淮鏂瑰紡鏉ュ瓨鍌ㄦ暟鎹傚叾涓竴縐嶇壒孌婄殑浜屽弶鏍戯紝鎴戜滑縐頒負浜屽弶鎼滅儲鏍戯紙binary search tree錛夛紝綆縐頒負BST錛屽畠鐨勬暟鎹悳绱㈣兘鍔涙瘮涓鑸?..  <a href='http://www.shnenglu.com/mzty/archive/2005/12/24/2055.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/mzty/aggbug/2055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mzty/" target="_blank">姊﹀湪澶╂動</a> 2005-12-24 15:39 <a href="http://www.shnenglu.com/mzty/archive/2005/12/24/2055.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏁版嵁緇撴瀯锝烇綖闃熷垪銆佸爢鏍堝拰鍝堝笇琛紙浜岋級http://www.shnenglu.com/mzty/archive/2005/12/24/2054.html姊﹀湪澶╂動姊﹀湪澶╂動Sat, 24 Dec 2005 07:38:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/24/2054.htmlhttp://www.shnenglu.com/mzty/comments/2054.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/24/2054.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/2054.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2054.html鍘熸枃閾炬帴錛?SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-fareast-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Part 2: The Queue, Stack, and Hashtable

鏈枃鏄?鑰冨療鏁版嵁緇撴瀯"緋誨垪鏂囩珷鐨勭浜岄儴鍒嗭紝鑰冨療浜嗕笁縐嶇爺絀跺緱鏈澶氱殑鏁版嵁緇撴瀯錛氶槦鍒楋紙Queue)錛屽爢鏍堬紙Stack)鍜屽搱甯岃〃錛圚ashtable)銆傛濡傛垜浠墍鐭ワ紝Quenu鍜孲tack鍏跺疄涓縐嶇壒孌婄殑ArrayList錛屾彁渚涘ぇ閲忎笉鍚岀被鍨嬬殑鏁版嵁瀵硅薄鐨勫瓨鍌紝鍙笉榪囪闂繖浜涘厓绱犵殑欏哄簭鍙楀埌浜嗛檺鍒躲侶ashtable鍒欐彁渚涗簡涓縐嶇被鏁扮粍錛坅rray-like)鐨勬暟鎹娊璞★紝瀹冨叿鏈夋洿鐏墊椿鐨勭儲寮曡闂傛暟緇勯渶瑕侀氳繃搴忔暟榪涜绱㈠紩錛岃孒ashtable鍏佽閫氳繃浠諱綍涓縐嶅璞$儲寮曟暟鎹」銆?/P>

鐩綍錛?/P>

綆浠?/P>

鈥滄帓闃熼『搴忊濈殑宸ヤ綔榪涚▼

鈥滃弽鎺掗槦欏哄簭鈥濃斺斿爢鏍堟暟鎹粨鏋?/P>

搴忔暟绱㈠紩闄愬埗

System.Collections.Hashtable綾?/P>

緇撹

 

綆浠?/P>

鍦ㄧ涓閮ㄥ垎涓紝鎴戜滑浜嗚В浜嗕粈涔堟槸鏁版嵁緇撴瀯錛岃瘎浼頒簡瀹冧滑鍚勮嚜鐨勬ц兘錛屽茍浜嗚В浜嗛夋嫨浣曠鏁版嵁緇撴瀯瀵圭壒瀹氱畻娉曠殑褰卞搷銆傚彟澶栨垜浠繕浜嗚В騫跺垎鏋愪簡鏁版嵁緇撴瀯鐨勫熀紜鐭ヨ瘑錛屼粙緇嶄簡涓縐嶆渶甯哥敤鐨勬暟鎹粨鏋勶細鏁扮粍銆?/P>

鏁扮粍瀛樺偍浜嗗悓涓綾誨瀷鐨勬暟鎹紝騫墮氳繃搴忔暟榪涜绱㈠紩銆傛暟緇勫疄闄呯殑鍊兼槸瀛樺偍鍦ㄤ竴孌佃繛緇殑鍐呭瓨絀洪棿涓紝鍥犳璇誨啓鏁扮粍涓壒瀹氱殑鍏冪礌闈炲父榪呴熴?/P>

鍥犲叾鍏鋒湁鐨勫悓鏋勬у強瀹氶暱鎬э紝.Net Framework鍩虹被搴撴彁渚涗簡ArrayList鏁版嵁緇撴瀯錛屽畠鍙互瀛樺偍涓嶅悓綾誨瀷鐨勬暟鎹紝騫朵笖涓嶉渶瑕佹樉寮忓湴鎸囧畾闀垮害銆傚墠鏂囨墍榪幫紝ArrayList鏈川涓婃槸瀛樺偍object綾誨瀷鐨勬暟緇勶紝姣忔璋冪敤Add()鏂規硶澧炲姞鍏冪礌錛屽唴閮ㄧ殑object鏁扮粍閮借媯鏌ヨ竟鐣岋紝濡傛灉瓚呭嚭錛屾暟緇勪細鑷姩浠ュ嶆暟澧炲姞鍏墮暱搴︺?/P>

絎簩閮ㄥ垎錛屾垜浠皢緇х畫鑰冨療涓ょ綾繪暟緇勭粨鏋勶細Queue鍜孲tack銆傚拰ArrayList鐩鎬技錛屼粬浠篃鏄竴孌電浉閭葷殑鍐呭瓨鍧椾互瀛樺偍涓嶅悓綾誨瀷鐨勫厓绱狅紝鐒惰屽湪璁塊棶鏁版嵁鏃訛紝浼氬彈鍒頒竴瀹氱殑闄愬埗銆?/P>

涔嬪悗錛屾垜浠繕灝嗘繁鍏ヤ簡瑙ashtable鏁版嵁緇撴瀯銆傛湁鏃朵警錛屾垜浠彲浠ユ妸Hashtable鐪嬩綔鏉涓縐嶅叧鑱旀暟緇勶紙associative array)錛屽畠鍚屾牱鏄瓨鍌ㄤ笉鍚岀被鍨嬪厓绱犵殑闆嗗悎錛屼絾瀹冨彲閫氳繃浠繪剰瀵硅薄錛堜緥濡俿tring)鏉ヨ繘琛岀儲寮曪紝鑰岄潪鍥哄畾鐨勫簭鏁般?/P>

鈥滄帓闃熼『搴忊濈殑宸ヤ綔榪涚▼

濡傛灉浣犺鍒涘緩涓嶅悓鐨勬湇鍔★紝榪欑鏈嶅姟涔熷氨鏄氳繃澶氱璧勬簮浠ュ搷搴斿縐嶈姹傜殑紼嬪簭錛涢偅涔堝綋澶勭悊榪欎簺璇鋒眰鏃訛紝濡備綍鍐沖畾鍏跺搷搴旂殑欏哄簭灝辨垚浜嗗垱寤烘湇鍔$殑涓澶ч毦棰樸傞氬父瑙e喅鐨勬柟妗堟湁涓ょ錛?/P>

鈥滄帓闃熼『搴忊濆師鍒?/P>

鈥滃熀浜庝紭鍏堢瓑綰р濈殑澶勭悊鍘熷垯

褰撲綘鍦ㄥ晢搴楄喘鐗┿侀摱琛屽彇嬈劇殑鏃跺欙紝浣犻渶瑕佹帓闃熺瓑寰呮湇鍔°傗滄帓闃熼『搴忊濆師鍒欒瀹氭帓鍦ㄥ墠闈㈢殑姣斿悗闈㈢殑鏇存棭浜彈鏈嶅姟銆傝屸滃熀浜庝紭鍏堢瓑綰р濆師鍒欙紝鍒欐牴鎹叾浼樺厛絳夌駭鐨勯珮浣庡喅瀹氭湇鍔¢『搴忋備緥濡傚湪鍖婚櫌鐨勬ヨ瘖瀹わ紝鐢熷懡鍨傚嵄鐨勭梾浜轟細姣旂梾鎯呰交鐨勬洿鍏堟帴鍙楀尰鐢熺殑璇婃柇錛岃屼笉鐢ㄧ鏄皝鍏堝埌鐨勩?/P>

璁炬兂浣犻渶瑕佹瀯寤轟竴涓湇鍔℃潵澶勭悊璁$畻鏈烘墍鎺ュ彈鍒扮殑璇鋒眰錛岀敱浜庢敹鍒扮殑璇鋒眰榪滆繙瓚呰繃璁$畻鏈哄鐞嗙殑閫熷害錛屽洜姝や綘闇瑕佸皢榪欎簺璇鋒眰鎸夌収浠栦滑閫掍氦鐨勯『搴忎緷姝ゆ斁鍏ュ埌緙撳啿鍖轟腑銆?/P>

涓縐嶆柟妗堟槸浣跨敤ArrayList錛岄氳繃縐頒負nextJobPos鐨勬暣鍨嬪彉閲忔潵鎸囧畾灝嗚鎵ц鐨勪換鍔″湪鏁扮粍涓殑浣嶇疆銆傚綋鏂扮殑宸ヤ綔璇鋒眰榪涘叆錛屾垜浠氨綆鍗曚嬌鐢ˋrrayList鐨凙dd()鏂規硶灝嗗叾娣誨姞鍒癆rrayList鐨勬湯绔傚綋浣犲噯澶囧鐞嗙紦鍐插尯鐨勪換鍔℃椂錛屽氨閫氳繃nextJobPos寰楀埌璇ヤ換鍔″湪ArrayList鐨勪綅緗間互鑾峰彇璇ヤ換鍔★紝鍚屾椂灝唍extJobPos绱姞1銆備笅闈㈢殑紼嬪簭瀹炵幇璇ョ畻娉曪細

using System;
using System.Collections;
public class JobProcessing

{

   private static ArrayList jobs = new ArrayList();
   private static int nextJobPos = 0;
   public static void AddJob(string jobName)

   {
      jobs.Add(jobName);

   }  

   public static string GetNextJob()

   {

      if (nextJobPos > jobs.Count - 1)

         return "NO JOBS IN BUFFER";

      else

      {

         string jobName = (string) jobs[nextJobPos];

         nextJobPos++;

         return jobName;

      }

   }

  

   public static void Main()

   {

      AddJob("1");

      AddJob("2");

      Console.WriteLine(GetNextJob());

      AddJob("3");

Console.WriteLine(GetNextJob());

      Console.WriteLine(GetNextJob());

      Console.WriteLine(GetNextJob());

      Console.WriteLine(GetNextJob());

      AddJob("4");

      AddJob("5");

      Console.WriteLine(GetNextJob());

   }

}

 

杈撳嚭緇撴灉濡備笅錛?/P>

1

2

3

NO JOBS IN BUFFER

NO JOBS IN BUFFER

4

榪欑鏂規硶綆鍗曟槗鎳傦紝浣嗘晥鐜囧嵈鍙曞緱闅句互鎺ュ彈銆傚洜涓猴紝鍗充嬌鏄換鍔¤娣誨姞鍒癰uffer涓悗绔嬪嵆琚鐞嗭紝ArrayList鐨勯暱搴︿粛鐒朵細闅忕潃娣誨姞鍒癰uffer涓殑浠誨姟鑰屼笉鏂鍔犮傚亣璁炬垜浠粠緙撳啿鍖烘坊鍔犲茍縐婚櫎涓涓換鍔¢渶瑕佷竴縐掗挓錛岃繖鎰忓懗涓縐掗挓鍐呮瘡璋冪敤AddJob()鏂規硶錛屽氨瑕佽皟鐢ㄤ竴嬈rrayList鐨凙dd()鏂規硶銆傞殢鐫Add()鏂規硶鎸佺畫涓嶆柇鐨勮璋冪敤錛孉rrayList鍐呴儴鏁扮粍闀垮害灝變細鏍規嵁闇姹傛寔緇笉鏂殑鎴愬嶅闀褲備簲鍒嗛挓鍚庯紝ArrayList鐨勫唴閮ㄦ暟緇勫鍔犲埌浜?12涓厓绱犵殑闀垮害錛岃繖鏃剁紦鍐插尯涓嵈鍙湁涓嶅埌涓涓換鍔¤屽凡銆傜収榪欐牱鐨勮秼鍔垮彂灞曪紝鍙紼嬪簭緇х畫榪愯錛屽伐浣滀換鍔$戶緇繘鍏ワ紝ArrayList鐨勯暱搴﹁嚜鐒朵細緇х畫澧為暱銆?/P>

鍑虹幇濡傛鑽掕艾鍙瑧鐨勭粨鏋滐紝鍘熷洜鏄凡琚鐞嗚繃鐨勬棫浠誨姟鍦ㄧ紦鍐插尯涓殑絀洪棿娌℃湁琚洖鏀躲備篃鍗蟲槸璇達紝褰撶涓涓換鍔¤娣誨姞鍒扮紦鍐插尯騫惰澶勭悊鍚庯紝姝ゆ椂ArrayList鐨勭涓鍏冪礌絀洪棿搴旇琚啀鍒╃敤銆傛兂鎯充笂榪頒唬鐮佺殑宸ヤ綔嫻佺▼錛屽綋鎻掑叆涓や釜宸ヤ綔鈥斺擜ddJob("1")鍜孉ddJob("2")鍚庘斺擜rrayList鐨勭┖闂村鍥句竴鎵紺猴細
鍥句竴錛氭墽琛屽墠涓よ浠g爜鍚庣殑ArrayList

娉ㄦ剰榪欓噷鐨凙rrayList鍏辨湁16涓厓绱狅紝鍥犱負ArrayList鍒濆鍖栨椂榛樿鐨勯暱搴︿負16銆傛帴涓嬫潵錛岃皟鐢℅etNextJob()鏂規硶錛岀Щ璧扮涓涓換鍔★紝緇撴灉濡傚浘浜岋細


鍥句簩錛氳皟鐢℅etNextJob()鏂規硶鍚庣殑ArrayList

褰撴墽琛孉ddJob(鈥?鈥?鏃訛紝鎴戜滑闇瑕佹坊鍔犳柊浠誨姟鍒扮紦鍐插尯銆傛樉鐒訛紝ArrayList鐨勭涓鍏冪礌絀洪棿錛堢儲寮曚負0錛夎閲嶆柊浣跨敤錛屾鏃跺湪0绱㈠紩澶勬斁鍏ヤ簡絎笁涓換鍔°備笉榪囧埆蹇樹簡錛屽綋鎴戜滑鎵ц浜咥ddJob(鈥?鈥?鍚庤繕鎵ц浜咥ddJob(鈥?鈥?錛岀揣鎺ョ潃鐢ㄨ皟鐢ㄤ簡涓ゆGetNextJob()鏂規硶銆傚鏋滄垜浠妸絎笁涓換鍔℃斁鍒?绱㈠紩澶勶紝鍒欑鍥涗釜浠誨姟浼氳鏀懼埌绱㈠紩2澶勶紝闂鍙戠敓浜嗐傚鍥句笁錛?IMG height=136 src="http://wayfarer.cnblogs.com/images/cnblogs_com/wayfarer/2-3.gif" width=450 border=0>
鍥句笁錛氬皢浠誨姟鏀懼埌0绱㈠紩鏃訛紝闂鍙戠敓

鐜板湪璋冪敤GetNextJob()錛岀浜屼釜浠誨姟浠庣紦鍐蹭腑縐昏蛋錛宯extJobPos鎸囬拡鎸囧悜绱㈠紩2銆傚洜姝わ紝褰撳啀涓嬈¤皟鐢℅etNextJob()鏃訛紝絎洓涓換鍔′細鍏堜簬絎笁涓縐昏蛋錛岃繖灝辨湁鎮栦簬涓庢垜浠殑鈥滄帓搴忛『搴忊濆師鍒欍?/P>

闂鍙戠敓鐨勭棁緇撳湪浜嶢rrayList鏄互綰垮艦欏哄簭浣撶幇浠誨姟鍒楄〃鐨勩傚洜姝ゆ垜浠渶瑕佸皢鏂頒換鍔℃坊鍔犲埌灝變換鍔$殑鍙蟲伝浠ヤ繚璇佸綋鍓嶇殑澶勭悊欏哄簭鏄紜殑銆備笉綆′綍鏃跺埌杈続rrayList鐨勬湯绔紝ArrayList閮戒細鎴愬嶅闀褲傚鏋滀駭鐢熶駭鐢熸湭琚嬌鐢ㄧ殑鍏冪礌錛屽垯鏄洜涓鴻皟鐢ㄤ簡GetNextJob()鏂規硶銆?/P>

瑙e喅涔嬮亾鏄嬌鎴戜滑鐨凙rrayList鎴愮幆褰€傜幆褰㈡暟緇勬病鏈夊浐瀹氱殑璧風偣鍜岀粓鐐廣傚湪鏁扮粍涓紝鎴戜滑鐢ㄥ彉閲忔潵緇存姢鏁扮粍鐨勮搗姝㈢偣銆傜幆褰㈡暟緇勫鍥懼洓鎵紺猴細


鍥懼洓錛氱幆褰㈡暟緇勫浘紺?/P>

鍦ㄧ幆褰㈡暟緇勪腑錛孉ddJob()鏂規硶娣誨姞鏂頒換鍔″埌绱㈠紩endPos澶勶紙璇戞敞錛歟ndPos涓鑸О涓哄熬鎸囬拡錛夛紝涔嬪悗鈥滈掑鈥漞ndPos鍊箋侴etNextJob()鏂規硶鍒欐牴鎹ご鎸囬拡startPos鑾峰彇浠誨姟錛屽茍灝嗗ご鎸囬拡鎸囧悜null錛屼笖鈥滈掑鈥漵tartPos鍊箋傛垜涔嬫墍浠ユ妸鈥滈掑鈥濅袱瀛楀姞涓婂紩鍙鳳紝鏄洜涓鴻繖閲屾墍璇寸殑鈥滈掑鈥濅笉浠呬粎鏄皢鍙橀噺鍊煎姞1閭d箞綆鍗曘備負浠涔堟垜浠笉鑳界畝鍗曞湴鍔?鍛紵璇瘋冭檻榪欎釜渚嬪瓙錛氬綋endPos絳変簬15鏃訛紝濡傛灉endPos鍔?錛屽垯endPos絳変簬16銆傛鏃惰皟鐢ˋddJob()錛屽畠璇曞浘鍘昏闂儲寮曚負16鐨勫厓绱狅紝緇撴灉鍑虹幇寮傚父IndexOutofRangeException銆?/P>

浜嬪疄涓婏紝褰揺ndPos絳変簬15鏃訛紝搴斿皢endPos閲嶇疆涓?銆傞氳繃閫掑錛坕ncrement錛夊姛鑳芥鏌ュ鏋滀紶閫掔殑鍙橀噺鍊肩瓑浜庢暟緇勯暱搴︼紝鍒欓噸緗負0銆傝В鍐蟲柟妗堟槸灝嗗彉閲忓煎鏁扮粍闀垮害鍊兼眰妯★紙鍙栦綑錛夛紝increment()鏂規硶鐨勪唬鐮佸涓嬶細

int increment(int variable)

{

  return (variable + 1) % theArray.Length;

}

娉細鍙栨ā鎿嶄綔絎︼紝濡倄 % y錛屽緱鍒扮殑鏄痻 闄や互 y鍚庣殑浣欐暟銆備綑鏁版繪槸鍦? 鍒?y-1涔嬮棿銆?/P>

榪欑鏂規硶濂藉灝辨槸緙撳啿鍖烘案榪滀笉浼氳秴榪?6涓厓绱犵┖闂淬備絾鏄鏋滄垜浠娣誨姞瓚呰繃16涓厓绱犵┖闂寸殑鏂頒換鍔″憿錛熷氨璞rrayList鐨凙dd()鏂規硶涓鏍鳳紝鎴戜滑闇瑕佹彁渚涚幆褰㈡暟緇勮嚜澧為暱鐨勮兘鍔涳紝浠ュ嶆暟澧為暱鏁扮粍鐨勯暱搴︺?/P>

System.Collection.Queue綾?/P>

灝辮薄鎴戜滑鍒氭墠鎻忚堪鐨勯偅鏍鳳紝鎴戜滑闇瑕佹彁渚涗竴縐嶆暟鎹粨鏋勶紝鑳藉鎸夌収鈥滄帓闃熼『搴忊濈殑鍘熷垯鎻掑叆鍜岀Щ闄ゅ厓绱犻」錛屽茍鑳芥渶澶у寲鐨勫埄鐢ㄥ唴瀛樼┖闂達紝絳旀灝辨槸浣跨敤鏁版嵁緇撴瀯Queue銆傚湪.Net Framework鍩虹被搴撲腑宸茬粡鍐呭緩浜嗚綾燴斺擲ystem.Collections.Queue綾匯傚氨璞℃垜浠唬鐮佷腑鐨凙ddJob()鍜孏etNextJob()鏂規硶錛孮ueue綾繪彁渚涗簡Enqueue()鍜孌equeue()鏂規硶鍒嗗埆瀹炵幇鍚屾牱鐨勫姛鑳姐?/P>

Queue綾誨湪鍐呴儴寤虹珛浜嗕竴涓瓨鏀緊bject瀵硅薄鐨勭幆褰㈡暟緇勶紝騫墮氳繃head鍜宼ail鍙橀噺鎸囨兂璇ユ暟緇勭殑澶村拰灝俱傞粯璁ょ姸鎬佷笅錛孮ueue鍒濆鍖栫殑瀹歸噺涓?2錛屾垜浠篃鍙互閫氳繃鍏舵瀯閫犲嚱鏁拌嚜瀹氫箟瀹歸噺銆傛棦鐒禥ueue鍐呭緩鐨勬槸object鏁扮粍錛屽洜姝ゅ彲浠ュ皢浠諱綍綾誨瀷鐨勫厓绱犳斁鍏ラ槦鍒椾腑銆?/P>

Enqueue錛堬級鏂規硶棣栧厛鍒ゆ柇queue涓槸鍚︽湁瓚沖瀹歸噺瀛樻斁鏂板厓绱犮傚鏋滄湁錛屽垯鐩存帴娣誨姞鍏冪礌錛屽茍浣跨儲寮晅ail閫掑銆傚湪榪欓噷tail浣跨敤姹傛ā鎿嶄綔浠ヤ繚璇乼ail涓嶄細瓚呰繃鏁扮粍闀垮害銆傚鏋滅┖闂翠笉澶燂紝鍒檘ueue鏍規嵁鐗瑰畾鐨勫闀垮洜瀛愭墿鍏呮暟緇勫閲忋傚闀垮洜瀛愰粯璁ゅ間負2.0錛屾墍浠ュ唴閮ㄦ暟緇勭殑闀垮害浼氬鍔犱竴鍊嶃傚綋鐒朵綘涔熷彲浠ュ湪鏋勯犲嚱鏁頒腑鑷畾涔夎澧為暱鍥犲瓙銆?/P>

Dequeue()鏂規硶鏍規嵁head绱㈠紩榪斿洖褰撳墠鍏冪礌銆備箣鍚庡皢head绱㈠紩鎸囧悜null錛屽啀鈥滈掑鈥漢ead鐨勫箋備篃璁鎬綘鍙兂鐭ラ亾褰撳墠澶村厓绱犵殑鍊鹼紝鑰屼笉浣垮叾杈撳嚭闃熷垪錛坉equeue錛屽嚭鍒楋級錛屽垯Queue綾繪彁渚涗簡Peek()鏂規硶銆?/P>

Queue騫朵笉璞rrayList閭f牱鍙互闅忔満璁塊棶錛岃繖涓鐐歸潪甯擱噸瑕併備篃灝辨槸璇達紝鍦ㄦ病鏈変嬌鍓嶄袱涓厓绱犲嚭鍒椾箣鍓嶏紝鎴戜滑涓嶈兘鐩存帴璁塊棶絎笁涓厓绱犮傦紙褰撶劧錛孮ueue綾繪彁渚涗簡Contains()鏂規硶錛屽畠鍙互浣夸綘鍒ゆ柇鐗瑰畾鐨勫兼槸鍚﹀瓨鍦ㄩ槦鍒椾腑銆傦級濡傛灉浣犳兂闅忔満鐨勮闂暟鎹紝閭d箞浣犲氨涓嶈兘浣跨敤Queue榪欑鏁版嵁緇撴瀯錛岃屽彧鑳界敤ArrayList銆俀ueue鏈閫傚悎榪欑鎯呭喌錛屽氨鏄綘鍙渶瑕佸鐞嗘寜鐓ф帴鏀舵椂鐨勫噯紜『搴忓瓨鏀劇殑鍏冪礌欏廣?/P>

娉細浣犲彲浠ュ皢Queues縐頒負FIFO鏁版嵁緇撴瀯銆侳IFO鎰忎負鍏堣繘鍏堝嚭錛團irst In, First Out錛夛紝鍏舵剰絳夊悓浜庘滄帓闃熼『搴忥紙First come, first served錛夆濄?/P>

璇戞敞錛氬湪鏁版嵁緇撴瀯涓紝鎴戜滑閫氬父縐伴槦鍒椾負鍏堣繘鍏堝嚭鏁版嵁緇撴瀯錛岃屽爢鏍堝垯涓哄厛榪涘悗鍑烘暟鎹粨鏋勩傜劧鑰屾湰鏂囨病鏈変嬌鐢‵irst in ,first out鐨勬蹇碉紝鑰屾槸first come ,first served銆傚鏋滅炕璇戜負鍏堣繘鍏堟湇鍔★紝鎴栧厛澶勭悊閮戒笉鏄緢閫傚悎銆傝仈鎯沖埌鏈枃鍦ㄤ粙緇嶈姒傚康鏃訛紝浠ュ晢鍦鴻喘鐗╂椂闇瑕佹帓闃熶負渚嬶紝绱㈡у皢鍏惰瘧涓衡滄帓闃熼『搴忊濄傛垜鎯籌紝鏈夋帓闃熸剰璇嗙殑浜哄簲璇ヨ兘鏄庣櫧鍏朵腑鐨勫惈涔夊惂銆傞偅涔堜笌涔嬪搴旂殑錛屽浜庡爢鏍堬紝鍙湁鍚嶄負鈥滃弽鎺掗槦欏哄簭鈥濓紝鏉ヤ唬琛紙First Come, Last Served錛夈傚笇鏈涘悇浣嶆湅鍙嬭兘鏈夋洿濂藉湴緲昏瘧鏉ュ彇浠f垜榪欎釜鎷欏姡鐨勮瘝璇備負浠涔堜笉緲昏瘧涓衡滃厛榪涘厛鍑衡濓紝鈥滃厛榪涘悗鍑衡濆憿錛熸垜涓昏鑰冭檻鍒拌繖閲岀殑鑻辨枃served錛屽畠鎵鍖呭惈鐨勫惈涔夊緢騫匡紝鑷沖皯鎴戜滑鍙互灝嗗叾璁や負鏄鏁版嵁鐨勫鐞嗭紝鍥犺屽氨涓嶆槸綆鍗曞湴杈撳嚭閭d箞綆鍗曘傛墍浠ユ垜騫茶剢閬垮紑榪欎釜璇嶈鐨勫惈涔夈?BR>
鈥滃弽鎺掗槦欏哄簭鈥濃斺斿爢鏍堟暟鎹粨鏋?/P>

Queue鏁版嵁緇撴瀯閫氳繃浣跨敤鍐呴儴瀛樺偍object綾誨瀷鐨勭幆褰㈡暟緇勪互瀹炵幇鈥滄帓闃熼『搴忊濈殑鏈哄埗銆俀ueue鎻愪緵浜咵nqueue()鍜孌equeue()鏂規硶瀹炵幇鏁版嵁璁塊棶銆傗滄帓闃熼『搴忊濆湪澶勭悊鐜板疄闂鏃剁粡甯哥敤鍒幫紝灝ゅ叾鏄彁渚涙湇鍔$殑紼嬪簭錛屼緥濡倃eb鏈嶅姟鍣紝鎵撳嵃闃熷垪錛屼互鍙婂叾浠栧鐞嗗璇鋒眰鐨勭▼搴忋?/P>

鍦ㄧ▼搴忚璁′腑鍙﹀涓涓粡甯鎬嬌鐢ㄧ殑鏂瑰紡鏄滃弽鎺掗槦欏哄簭錛坒irst come,last served錛夆濄傚爢鏍堝氨鏄繖鏍蜂竴縐嶆暟鎹粨鏋勩傚湪.Net Framework鍩虹被搴撲腑鍖呭惈浜哠ystem.Collection.Stack綾伙紝鍜孮ueue涓鏍鳳紝Stack涔熸槸閫氳繃瀛樺偍object綾誨瀷鏁版嵁瀵硅薄鐨勫唴閮ㄧ幆褰㈡暟緇勬潵瀹炵幇銆係tack閫氳繃涓ょ鏂規硶璁塊棶鏁版嵁鈥斺擯ush(item)錛屽皢鏁版嵁鍘嬪叆鍫嗘爤錛汸op()鍒欐槸灝嗘暟鎹脊鍑哄爢鏍堬紝騫惰繑鍥炲叾鍊箋?/P>

涓涓猄tack鍙互閫氳繃涓涓瀭鐩寸殑鏁版嵁鍏冪礌闆嗗悎鏉ュ艦璞″湴琛ㄧず銆傚綋鍏冪礌鍘嬪叆鍫嗘爤鏃訛紝鏂板厓绱犺鏀懼埌鎵鏈夊叾浠栧厓绱犵殑欏剁錛屽脊鍑烘椂鍒欎粠鍫嗘爤欏剁縐婚櫎璇ラ」銆備笅闈袱騫呭浘婕旂ず浜嗗爢鏍堢殑鍘嬫爤鍜屽嚭鏍堣繃紼嬨傞鍏堟寜鐓ч『搴忓皢鏁版嵁1銆?銆?鍘嬪叆鍫嗘爤錛岀劧鍚庡脊鍑猴細
 
鍥句簲錛氬悜鍫嗘爤鍘嬪叆涓変釜鍏冪礌
 
鍥懼叚錛氬脊鍑烘墍鏈夊厓绱犲悗鐨凷tack

娉ㄦ剰Stack綾葷殑緙虹渷瀹歸噺鏄?0涓厓绱狅紝鑰岄潪Queue鐨?2涓厓绱犮傚拰Queue鍜孉rrayList涓鏍鳳紝Stack鐨勫閲忎篃鍙互鏍規嵁鏋勯犲嚱鏁板畾鍒躲傚鍚孉rrayList錛孲tack鐨勫閲忎篃鏄嚜鍔ㄦ垚鍊嶅闀褲傦紙鍥炲繂涓涓嬶細Queue鍙互鏍規嵁鏋勯犲嚱鏁扮殑鍙夐」璁劇疆澧為暱鍥犲瓙銆傦級

娉細Stack閫氬父琚О涓衡淟IFO鍏堣繘鍚庡嚭鈥濇垨鈥淟IFO鍚庤繘鍏堝嚭鈥濇暟鎹粨鏋勩?BR>鍫嗘爤錛氳綆楁満縐戝涓父瑙佺殑闅愬柣
鐜板疄鐢熸椿涓湁寰堝鍚孮ueue鐩鎬技鐨勪緥瀛愶細DMV錛堣瘧娉細涓嶇煡閬撳叾緙╁啓錛屾仌鎴戝闄嬪闂伙紝涓嶇煡鍏舵剰錛夈佹墦鍗頒換鍔″鐞嗙瓑銆傜劧鑰屽湪鐜板疄鐢熸椿寰堥毦鎵懼埌鍜孲tack榪戜技鐨勮寖渚嬶紝浣嗗畠鍦ㄥ悇縐嶅簲鐢ㄧ▼搴忎腑鍗存槸涓縐嶉潪甯擱噸瑕佺殑鏁版嵁緇撴瀯銆?/P>

璁炬兂涓涓嬫垜浠敤浠ョ紪紼嬬殑璁$畻鏈鴻璦錛屼緥濡傦細C#銆傚綋鎵цC#紼嬪簭鏃訛紝CLR錛堝叕鍏辮璦榪愯鏃訛級灝嗚皟鐢⊿tack浠ヨ窡韙姛鑳芥ā鍧楋紙璇戞敞錛氳繖閲屽師鏂囦負function錛屾垜鐞嗚В浣滆呯殑鍚箟涓嶄粎浠呬唬琛ㄥ嚱鏁幫紝浜嬪疄涓婂緢澶氱紪璇戝櫒閮戒細璋冪敤鍫嗘爤浠ョ‘瀹氬叾鍦板潃錛夌殑鎵ц鎯呭喌銆傛瘡褰撹皟鐢ㄤ竴涓姛鑳芥ā鍧楋紝鐩稿叧淇℃伅灝變細鍘嬪叆鍫嗘爤銆傝皟鐢ㄧ粨鏉熷垯寮瑰嚭鍫嗘爤銆傚爢鏍堥《绔暟鎹負褰撳墠璋冪敤鍔熻兘鐨勪俊鎭傦紙濡傝鏌ョ湅鍔熻兘璋冪敤鍫嗘爤鐨勬墽琛屾儏鍐碉紝鍙互鍦╒isual Studio.Net涓嬪垱寤轟竴涓」鐩紝璁劇疆鏂偣錛坆reakpoint錛夛紝鍦ㄦ墽琛岃皟璇曘傚綋鎵ц鍒版柇鐐規椂錛屼細鍦ㄨ皟璇曠獥鍙o紙Debug/Windows/Call Stack錛変笅鏄劇ず鍫嗘爤淇℃伅銆?/P>

搴忔暟绱㈠紩鐨勯檺鍒?/P>

鎴戜滑鍦ㄧ涓閮ㄥ垎涓鍒版暟緇勭殑鐗圭偣鏄悓縐嶇被鍨嬫暟鎹殑闆嗗悎錛屽茍閫氳繃搴忔暟榪涜绱㈠紩銆傚嵆錛氳闂i涓厓绱犵殑鏃墮棿涓哄畾鍊箋傦紙璇瘋浣忔縐嶅畾閲忔椂闂磋鏍囪涓篛(1)銆傦級

涔熻鎴戜滑騫舵病鏈夋剰璇嗗埌錛屽叾瀹炴垜浠鏈夊簭鏁版嵁鎬繪槸鈥滄儏鏈夌嫭閽熲濄備緥濡傚憳宸ユ暟鎹簱銆傛瘡涓憳宸ヤ互紺句繚鍙鳳紙social security number錛変負鍏跺敮涓鏍囪瘑銆傜ぞ淇濆彿鐨勬牸寮忎負DDD-DD-DDDD錛圖鐨勮寖鍥翠負鏁板瓧0鈥斺?錛夈傚鏋滄垜浠湁涓涓殢鏈烘帓鍒楀瓨鍌ㄦ墍鏈夊憳宸ヤ俊鎭殑鏁扮粍錛岃鏌ユ壘紺句繚鍙蜂負111-22-3333鐨勫憳宸ワ紝鍙兘浼氶亶鍘嗘暟緇勭殑鎵鏈夊厓绱犫斺斿嵆鎵цO(n錛夋鎿嶄綔銆傛洿濂界殑鍔炴硶鏄牴鎹ぞ淇濆彿榪涜鎺掑簭錛屽彲灝嗗叾鏌ユ壘鏃墮棿緙╁噺涓篛(log n)銆?/P>

鐞嗘兂鐘舵佷笅錛屾垜浠洿鎰挎剰鎵цO(1)嬈℃椂闂村氨鑳芥煡鎵懼埌鏌愬憳宸ョ殑淇℃伅銆備竴縐嶆柟妗堟槸寤虹珛涓涓法鍨嬬殑鏁扮粍錛屼互瀹為檯鐨勭ぞ淇濆彿鍊間負鍏跺叆鍙c傝繖鏍鋒暟緇勭殑璧鋒鐐逛負000-00-0000鍒?99-99-9999錛屽涓嬪浘鎵紺猴細
 
鍥句竷錛氬瓨鍌ㄦ墍鏈?浣嶆暟鏁板瓧鐨勫法鍨嬫暟緇?/P>

濡傚浘鎵紺猴紝姣忎釜鍛樺伐鐨勪俊鎭兘鍖呮嫭濮撳悕銆佺數璇濄佽柂姘寸瓑錛屽茍浠ュ叾紺句繚鍙蜂負绱㈠紩銆傚湪榪欑鏂瑰紡涓嬶紝璁塊棶浠繪剰涓涓憳宸ヤ俊鎭殑鏃墮棿鍧囦負瀹氬箋傝繖縐嶆柟妗堢殑緙虹偣灝辨槸絀洪棿鏋佸害鐨勬氮璐光斺斿叡鏈?09錛屽嵆10浜夸釜涓嶅悓鐨勭ぞ淇濆彿銆傚鏋滃叕鍙稿彧鏈?000鍚嶅憳宸ワ紝閭d箞榪欎釜鏁扮粍鍙埄鐢ㄤ簡0.0001%鐨勭┖闂淬傦紙鎹釜瑙掑害鏉ョ湅錛屽鏋滀綘瑕佽榪欎釜鏁扮粍鍏呭垎鍒╃敤錛屼篃璁鎬綘鐨勫叕鍙鎬笉寰椾笉闆囦劍鍏ㄤ笘鐣屼漢鍙g殑鍏垎涔嬩竴銆傦級

鐢ㄥ搱甯屽嚱鏁板帇緙╁簭鏁扮儲寮?/P>

鏄捐屾槗瑙侊紝鍒涘緩10浜夸釜鍏冪礌鏁扮粍鏉ュ瓨鍌?000鍚嶅憳宸ョ殑淇℃伅鏄棤娉曟帴鍙楃殑銆傜劧鑰屾垜浠張榪垏闇瑕佹彁楂樻暟鎹闂熷害浠ヨ揪鍒頒竴涓父閲忔椂闂淬備竴縐嶉夋嫨鏄嬌鐢ㄥ憳宸ョぞ淇濆彿鐨勬渶鍚庡洓浣嶆潵鍑忓皯紺句繚鍙風殑璺ㄥ害銆傝繖鏍蜂竴鏉ワ紝鏁扮粍鐨勮法搴﹀彧闇瑕佷粠0000鍒?999銆傚浘鍏樉紺轟簡鍘嬬緝鍚庣殑鏁扮粍銆?BR> 
鍥懼叓錛氬帇緙╁悗鐨勬暟緇?/P>

姝ゆ柟妗堟棦淇濊瘉浜嗚闂楁椂涓哄父閲忓鹼紝鍙堝厖鍒嗗埄鐢ㄤ簡瀛樺偍絀洪棿銆傞夋嫨紺句繚鍙風殑鍚庡洓浣嶆槸闅忔満鐨勶紝鎴戜滑涔熷彲浠ヤ換鎰忕殑浣跨敤涓棿鍥涗綅錛屾垨鑰呴夋嫨絎?銆?銆?銆?浣嶃?/P>

鍦ㄦ暟瀛︿笂灝嗚繖縐?浣嶆暟杞崲涓?浣嶆暟鎴愪負鍝堝笇杞崲錛坔ashing錛夈傚搱甯岃漿鎹㈠彲浠ュ皢涓涓儲寮曞櫒絀洪棿錛坕ndexers space錛夎漿鎹負鍝堝笇琛紙hash table錛夈?/P>

鍝堝笇鍑芥暟瀹炵幇鍝堝笇杞崲銆備互紺句繚鍙風殑渚嬪瓙鏉ヨ錛屽搱甯屽嚱鏁癏()琛ㄧず涓猴細
H(x) = x 鐨勫悗鍥涗綅

鍝堝笇鍑芥暟鐨勮緭鍏ュ彲浠ユ槸浠繪剰鐨勪節浣嶇ぞ淇濆彿錛岃岀粨鏋滃垯鏄ぞ淇濆彿鐨勫悗鍥涗綅鏁板瓧銆傛暟瀛︽湳璇腑錛岃繖縐嶅皢涔濅綅鏁拌漿鎹負鍥涗綅鏁扮殑鏂規硶縐頒負鍝堝笇鍏冪礌鏄犲皠錛屽鍥句節鎵紺猴細
 
鍥句節錛氬搱甯屽嚱鏁板浘紺?/P>

鍥句節闃愭槑浜嗗湪鍝堝笇鍑芥暟涓細鍑虹幇鐨勪竴縐嶈涓衡斺斿啿紿侊紙collisions錛夈傚嵆鎴戜滑灝嗕竴涓浉瀵瑰ぇ鐨勯泦鍚堢殑鍏冪礌鏄犲皠鍒扮浉瀵瑰皬鐨勯泦涓椂鏃訛紝鍙兘浼氬嚭鐜扮浉鍚岀殑鍊箋備緥濡傜ぞ淇濆彿涓墍鏈夊悗鍥涗綅涓?000鐨勫潎琚槧灝勪負0000銆傞偅涔?00-99-0000錛?13-14-0000錛?33-66-0000錛岃繕鏈夊叾浠栫殑寰堝閮藉皢鏄?000銆?/P>

鐪嬬湅涔嬪墠鐨勪緥瀛愶紝濡傛灉鎴戜滑瑕佹坊鍔犱竴涓ぞ淇濆彿涓?23-00-0191鐨勬柊鍛樺伐錛屼細鍙戠敓浠涔堟儏鍐碉紵鏄劇劧璇曞浘娣誨姞璇ュ憳宸ヤ細鍙戠敓鍐茬獊錛屽洜涓哄湪0191浣嶇疆涓婂凡緇忓瓨鍦ㄤ竴涓憳宸ャ?/P>

鏁板鏍囨敞錛氬搱甯屽嚱鏁板湪鏁板鏈涓婃洿澶氬湴琚弿榪頒負f錛欰->B銆傚叾涓瓅A|>|B|錛屽嚱鏁癴涓嶆槸涓涓鏄犲皠鍏崇郴錛屾墍浠ヤ箣闂翠細鏈夊啿紿併?/P>

鏄劇劧鍐茬獊鐨勫彂鐢熶細浜х敓涓浜涢棶棰樸傚湪涓嬩竴鑺傦紝鎴戜滑浼氱湅鐪嬪搱甯屽嚱鏁頒笌鍐茬獊鍙戠敓涔嬮棿鐨勫叧緋伙紝鐒跺悗綆鍗曞湴鐘笅澶勭悊鍐茬獊鐨勫嚑縐嶆満鍒躲傛帴涓嬫潵錛屾垜浠細灝嗘敞鎰忓姏鏀懼湪System.Collection.Hashtable綾伙紝騫舵彁渚涗竴涓搱甯岃〃鐨勫疄鐜般傛垜浠細浜嗚В鏈夊叧Hashtable綾葷殑鍝堝笇鍑芥暟錛屽啿紿佽В鍐蟲満鍒訛紝浠ュ強涓浜涗嬌鐢℉ashtable鐨勪緥瀛愩?/P>

閬垮厤鍜岃В鍐沖啿紿?/P>

褰撴垜浠坊鍔犳暟鎹埌鍝堝笇琛ㄤ腑錛屽啿紿佹槸瀵艱嚧鏁翠釜鎿嶄綔琚牬鍧忕殑涓涓洜绱犮傚鏋滄病鏈夊啿紿侊紝鍒欐彃鍏ュ厓绱犳搷浣滄垚鍔燂紝濡傛灉鍙戠敓浜嗗啿紿侊紝灝遍渶瑕佸垽鏂彂鐢熺殑鍘熷洜銆傜敱浜庡啿紿佷駭鐢熸彁楂樹簡浠d環錛屾垜浠殑鐩爣灝辨槸瑕佸敖鍙兘灝嗗啿紿佸帇鑷蟲渶浣庛?/P>

鍝堝笇鍑芥暟涓啿紿佸彂鐢熺殑棰戠巼涓庝紶閫掑埌鍝堝笇鍑芥暟涓殑鏁版嵁鍒嗗竷鏈夊叧銆傚湪鎴戜滑鐨勪緥瀛愪腑錛屽亣瀹氱ぞ淇濆彿鏄殢鏈哄垎閰嶇殑錛岄偅涔堜嬌鐢ㄦ渶鍚庡洓浣嶆暟瀛楁槸涓涓笉閿欑殑閫夋嫨銆備絾濡傛灉紺句繚鍙鋒槸浠ュ憳宸ョ殑鍑虹敓騫翠喚鎴栧嚭鐢熷湴鍧鏉ュ垎閰嶏紝鍥犱負鍛樺伐鐨勫嚭鐢熷勾浠藉拰鍦板潃鏄劇劧閮戒笉鏄潎鍖鍒嗛厤鐨勶紝閭d箞閫夌敤鍚庡洓浣嶆暟灝變細鍥犱負澶ч噺鐨勯噸澶嶈屽鑷存洿澶х殑鍐茬獊銆?/P>

娉細瀵逛簬鍝堝笇鍑芥暟鍊肩殑鍒嗘瀽闇瑕佸叿澶囦竴瀹氱殑緇熻瀛︾煡璇嗭紝榪欒秴鍑轟簡鏈枃璁ㄨ鐨勮寖鍥淬傚繀瑕佸湴錛屾垜浠彲浠ヤ嬌鐢↘緇達紙k slots錛夌殑鍝堝笇琛ㄦ潵淇濊瘉閬垮厤鍐茬獊錛屽畠鍙互灝嗕竴涓殢鏈哄間粠鍝堝笇鍑芥暟鐨勫煙涓槧灝勫埌浠繪剰涓涓壒瀹氬厓绱狅紝騫墮檺瀹氬湪1/k鐨勮寖鍥村唴銆傦紙濡傛灉榪欒浣犳洿鍔犵殑緋婃秱錛屽崈涓囧埆鎷呭績錛侊級

鎴戜滑灝嗛夋嫨鍚堥傜殑鍝堝笇鍑芥暟鐨勬柟娉曟垚涓哄啿紿侀伩鍏嶆満鍒訛紙collision avoidance錛夛紝宸叉湁璁稿鐮旂┒璁捐榪欎竴棰嗗煙錛屽洜涓哄搱甯屽嚱鏁扮殑閫夋嫨鐩存帴褰卞搷浜嗗搱甯岃〃鐨勬暣浣撴ц兘銆傚湪涓嬩竴鑺傦紝鎴戜滑浼氫粙緇嶅湪.Net Framework鐨凥ashtable綾諱腑瀵瑰搱甯屽嚱鏁扮殑浣跨敤銆?/P>

鏈夊緢澶氭柟娉曞鐞嗗啿紿侀棶棰樸傛渶鐩存帴鐨勬柟娉曪紝鎴戜滑縐頒負鈥滃啿紿佽В鍐蟲満鍒垛濓紙collision resolution錛夛紝鏄皢瑕佹彃鍏ュ埌鍝堝笇琛ㄤ腑鐨勫璞℃斁鍒板彟澶栦竴鍧楃┖闂翠腑錛屽洜涓哄疄闄呯殑絀洪棿宸茬粡琚崰鐢ㄤ簡銆傚叾涓竴縐嶆渶綆鍗曠殑鏂規硶縐頒負鈥滅嚎鎬ф寲鎺樷濓紙linear probing錛夛紝瀹炵幇姝ラ濡備笅錛?BR>1錛?nbsp;褰撹鎻掑叆涓涓柊鐨勫厓绱犳椂錛岀敤鍝堝笇鍑芥暟鍦ㄥ搱甯岃〃涓畾浣嶏紱
2錛?nbsp;媯鏌ヨ〃涓浣嶇疆鏄惁宸茬粡瀛樺湪鍏冪礌錛屽鏋滆浣嶇疆鍐呭涓虹┖錛屽垯鎻掑叆騫惰繑鍥烇紝鍚﹀垯杞悜姝ラ3銆?BR>3錛?nbsp;濡傛灉璇ュ湴鍧涓篿錛屽垯媯鏌+1鏄惁涓虹┖錛屽鏋滃凡琚崰鐢紝鍒欐鏌+2錛屼緷姝ょ被鎺紝鐭ラ亾鎵懼埌涓涓唴瀹逛負絀虹殑浣嶇疆銆?/P>

渚嬪錛氬鏋滄垜浠灝嗕簲涓憳宸ョ殑淇℃伅鎻掑叆鍒板搱甯岃〃涓細Alice(333-33-1234)錛孊ob(444-44-1234), Cal (555-55-1237), Danny (000-00-1235), and Edward (111-00-1235)銆傚綋娣誨姞瀹屼俊鎭悗錛屽鍥懼崄鎵紺猴細
 
鍥懼崄錛氭湁鐩鎬技紺句繚鍙風殑浜斾綅鍛樺伐

Alice鐨勭ぞ淇濆彿琚滃搱甯岋紙榪欓噷鍋氬姩璇嶇敤錛岃瘧娉級鈥濅負1234錛屽洜姝ゅ瓨鏀句綅緗負1234銆傛帴涓嬫潵鏉ワ紝Bob鐨勭ぞ淇濆彿涔熻鈥滃搱甯屸濅負1234錛屼絾鐢變簬浣嶇疆1234澶勫凡緇忓瓨鍦ˋlice鐨勪俊鎭紝鎵浠ob鐨勪俊鎭氨琚斁鍒頒笅涓涓綅緗斺?235銆備箣鍚庯紝娣誨姞Cal錛屽搱甯屽間負1237錛?237浣嶇疆涓虹┖錛屾墍浠al灝辨斁鍒?237澶勩備笅涓涓槸Danny錛屽搱甯屽間負1235銆?235宸茶鍗犵敤錛屽垯媯鏌?236浣嶇疆鏄惁涓虹┖銆傛棦鐒朵負絀猴紝Danny灝辮鏀懼埌閭e効銆傛渶鍚庯紝娣誨姞Edward鐨勪俊鎭傚悓鏍蜂粬鐨勫搱甯屽ソ涓?235銆?235宸茶鍗犵敤錛屾鏌?236錛屼篃琚崰鐢ㄤ簡錛屽啀媯鏌?237錛岀洿鍒版鏌ュ埌1238鏃訛紝璇ヤ綅緗負絀猴紝浜庢槸Edward琚斁鍒頒簡1238浣嶇疆銆?/P>

鎼滅儲鍝堝笇琛ㄦ椂錛屽啿紿佷粛鐒跺瓨鍦ㄣ備緥濡傦紝濡備笂鎵紺虹殑鍝堝笇琛紝鎴戜滑瑕佽闂瓻dward鐨勪俊鎭傚洜姝ゆ垜浠皢Edward鐨勭ぞ淇濆彿111-00-1235鍝堝笇涓?235錛屽茍寮濮嬫悳绱€傜劧鑰屾垜浠湪1235浣嶇疆鎵懼埌鐨勬槸Bob錛岃岄潪Edward銆傛墍浠ユ垜浠啀鎼滅儲1236錛屾壘鍒扮殑鍗存槸Danny銆傛垜浠殑綰挎ф悳绱㈢戶緇煡鎵劇煡閬撴壘鍒癊dward鎴栨壘鍒板唴瀹逛負絀虹殑浣嶇疆銆傜粨鏋滄垜浠彲鑳戒細寰楀嚭緇撴灉鏄ぞ淇濆彿涓?11-00-1235鐨勫憳宸ュ茍涓嶅瓨鍦ㄣ?/P>

綰挎ф寲鎺樿櫧鐒剁畝鍗曪紝浣嗗茍鏄В鍐沖啿紿佺殑濂界殑絳栫暐錛屽洜涓哄畠浼氬鑷村悓綾昏仛鍚堬紙clustering錛夈傚鏋滄垜浠娣誨姞10涓憳宸ワ紝浠栦滑鐨勭ぞ淇濆彿鍚庡洓浣嶅潎涓?344銆傞偅涔堟湁10涓繛緇┖闂達紝浠?344鍒?353鍧囪鍗犵敤銆傛煡鎵捐繖10涓憳宸ヤ腑鐨勪換涓鍛樺伐閮借鎼滅儲榪欎竴綈囦綅緗┖闂淬傝屼笖錛屾坊鍔犱換浣曚竴涓搱甯屽煎湪3344鍒?353鑼冨洿鍐呯殑鍛樺伐閮藉皢澧炲姞榪欎竴綈囩┖闂寸殑闀垮害銆傝蹇熸煡璇紝鎴戜滑搴旇璁╂暟鎹潎鍖鍒嗗竷錛岃屼笉鏄泦涓煇鍑犱釜鍦版柟褰㈡垚涓綈囥?/P>

鏇村ソ鐨勬寲鎺樻妧鏈槸鈥滀簩嬈℃寲鎺樷濓紙quadratic probing錛夛紝姣忔媯鏌ヤ綅緗┖闂寸殑姝ラ暱浠ュ鉤鏂瑰嶅鍔犮備篃灝辨槸璇達紝濡傛灉浣嶇疆s琚崰鐢紝鍒欓鍏堟鏌?/SPAN>s+12澶勶紝鐒跺悗媯鏌?/SPAN>s-12錛?/SPAN>s+22錛?/SPAN>s-22錛?/SPAN>s+32 渚濇綾繪帹錛岃屼笉鏄薄綰挎ф寲鎺橀偅鏍蜂粠s+1錛宻+2鈥︹︾嚎鎬у闀褲傚綋鐒朵簩嬈℃寲鎺樺悓鏍蜂細瀵艱嚧鍚岀被鑱氬悎銆?/P>

涓嬩竴鑺傛垜浠皢浠嬬粛絎笁縐嶅啿紿佽В鍐蟲満鍒垛斺斾簩搴﹀搱甯岋紝瀹冭搴旂敤鍦?Net Framework鐨勫搱甯岃〃綾諱腑銆?/P>

System.Collections.Hashtable 綾?BR>.Net Framework 鍩虹被搴撳寘鎷簡Hashtable綾葷殑瀹炵幇銆傚綋鎴戜滑瑕佹坊鍔犲厓绱犲埌鍝堝笇琛ㄤ腑鏃訛紝鎴戜滑涓嶄粎瑕佹彁渚涘厓绱狅紙item錛夛紝榪樿涓鴻鍏冪礌鎻愪緵鍏抽敭瀛楋紙key錛夈侹ey鍜宨tem鍙互鏄換鎰忕被鍨嬨傚湪鍛樺伐渚嬪瓙涓紝key涓哄憳宸ョ殑紺句繚鍙鳳紝item鍒欓氳繃Add()鏂規硶琚坊鍔犲埌鍝堝笇琛ㄤ腑銆?/P>

瑕佽幏寰楀搱甯岃〃涓殑鍏冪礌錛坕tem錛夛紝浣犲彲浠ラ氳繃key浣滀負绱㈠紩璁塊棶錛屽氨璞″湪鏁扮粍涓敤搴忔暟浣滀負绱㈠紩閭f牱銆備笅闈㈢殑C#灝忕▼搴忔紨紺轟簡榪欎竴姒傚康銆傚畠浠ュ瓧絎︿覆鍊間綔涓簁ey娣誨姞浜嗕竴浜涘厓绱犲埌鍝堝笇琛ㄤ腑銆傚茍閫氳繃key璁塊棶鐗瑰畾鐨勫厓绱犮?/P>

using System;
using System.Collections;

public class HashtableDemo
{
   private static Hashtable ages = new Hashtable();

   public static void Main()
   {
        // Add some values to the Hashtable, indexed by a string key
        ages.Add("Scott", 25);
        ages.Add("Sam", 6);
        ages.Add("Jisun", 25);
       
        // Access a particular key
        if (ages.ContainsKey("Scott"))
        {
            int scottsAge = (int) ages["Scott"];
            Console.WriteLine("Scott is " + scottsAge.ToString());
        }
        else
            Console.WriteLine("Scott is not in the hash table...");
   }
}
紼嬪簭涓殑ContainsKey()鏂規硶錛屾槸鏍規嵁鐗瑰畾鐨刱ey鍒ゆ柇鏄惁瀛樺湪絎﹀悎鏉′歡鐨勫厓绱狅紝榪斿洖甯冨皵鍊箋侶ashtable綾諱腑鍖呭惈keys灞炴э紙property錛夛紝榪斿洖鍝堝笇琛ㄤ腑浣跨敤鐨勬墍鏈夊叧閿瓧鐨勯泦鍚堛傝繖涓睘鎬у彲浠ラ氳繃閬嶅巻璁塊棶錛屽涓嬶細

// Step through all items in the Hashtable
foreach(string key in ages.Keys)
Console.WriteLine("Value at ages[\"" + key + "\"] = " + ages[key].ToString());

瑕佽璇嗗埌鎻掑叆鍏冪礌鐨勯『搴忓拰鍏抽敭瀛楅泦鍚堜腑key鐨勯『搴忓茍涓嶄竴瀹氱浉鍚屻傚叧閿瓧闆嗗悎鏄互瀛樺偍鐨勫叧閿瓧瀵瑰簲鐨勫厓绱犱負鍩虹錛屼笂闈㈢殑紼嬪簭鐨勮繍琛岀粨鏋滄槸錛?/P>

Value at ages["Jisun"] = 25
Value at ages["Scott"] = 25
Value at ages["Sam"] = 6

鍗充嬌鎻掑叆鍒板搱甯岃〃涓殑欏哄簭鏄細Scott錛孲am錛?Jisun銆?/P>

Hashtable綾葷殑鍝堝笇鍑芥暟

Hashtable綾諱腑鐨勫搱甯屽嚱鏁版瘮鎴戜滑鍓嶉潰浠嬬粛鐨勭ぞ淇濆彿鐨勫搱甯屽兼洿鍔犲鏉傘傞鍏堬紝瑕佽浣忕殑鏄搱甯屽嚱鏁拌繑鍥炵殑鍊兼槸搴忔暟銆傚浜庣ぞ淇濆彿鐨勪緥瀛愭潵璇村緢瀹規槗鍔炲埌錛屽洜涓虹ぞ淇濆彿鏈韓灝辨槸鏁板瓧銆傛垜浠彧闇瑕佹埅鍙栧叾鏈鍚庡洓浣嶆暟錛屽氨鍙互寰楀埌鍚堥傜殑鍝堝笇鍊箋傜劧鑰孒ashtable綾諱腑鍙互鎺ュ彈浠諱綍綾誨瀷鐨勫間綔涓簁ey銆傚氨璞′笂闈㈢殑渚嬪瓙錛宬ey鏄瓧絎︿覆綾誨瀷錛屽鈥淪cott鈥濇垨鈥淪am鈥濄傚湪榪欐牱涓涓緥瀛愪腑錛屾垜浠嚜鐒舵兂鏄庣櫧鍝堝笇鍑芥暟鏄庢牱灝唖tring杞崲涓烘暟瀛楃殑銆?/P>

榪欑濂囧鐨勮漿鎹㈠簲璇ュ綊鍔熶簬GetHashCode()鏂規硶錛屽畠瀹氫箟鍦⊿ystem.Object綾諱腑銆侽bject綾諱腑GetHashCode()榛樿鐨勫疄鐜版槸榪斿洖涓涓敮涓鐨勬暣鏁板間互淇濊瘉鍦╫bject鐨勭敓鍛芥湡涓笉琚慨鏀廣傛棦鐒舵瘡縐嶇被鍨嬮兘鏄洿鎺ユ垨闂存帴浠嶰bject媧劇敓鐨勶紝鍥犳鎵浠bject閮藉彲浠ヨ闂鏂規硶銆傝嚜鐒訛紝瀛楃涓叉垨鍏朵粬綾誨瀷閮借兘浠ュ敮涓鐨勬暟瀛楀兼潵琛ㄧず銆?/P>

Hashtable綾諱腑鐨勫浜庡搱甯屽嚱鏁扮殑瀹氫箟濡備笅錛?/P>

H(key) = [GetHash(key) + 1 + (((GetHash(key) >> 5) + 1) % (hashsize 鈥?1))] % hashsize

榪欓噷鐨凣etHash(key)錛岄粯璁や負瀵筴ey璋冪敤GetHashCode()鏂規硶鐨勮繑鍥炲鹼紙铏界劧鍦ㄤ嬌鐢℉ashtable鏃訛紝浣犲彲浠ヨ嚜瀹氫箟GetHash()鍑芥暟錛夈侴etHash(key)>>5琛ㄧず灝嗗緱鍒発ey鐨勫搱甯屽鹼紝鍚戝彸縐誨姩5浣嶏紝鐩稿綋浜庡皢鍝堝笇鍊奸櫎浠?2銆?鎿嶄綔絎﹀氨鏄箣鍓嶄粙緇嶇殑姹傛ā榪愮畻絎︺侶ashsize鎸囩殑鏄搱甯岃〃鐨勯暱搴︺傚洜涓鴻榪涜姹傛ā錛屽洜姝ゆ渶鍚庣殑緇撴灉H錛坘錛夊湪0鍒癶ashsize-1涔嬮棿銆傛棦鐒秇ashsize涓哄搱甯岃〃鐨勯暱搴︼紝鍥犳緇撴灉鎬繪槸鍦ㄥ彲浠ユ帴鍙楃殑鑼冨洿鍐呫?/P>

Hashtable綾諱腑鐨勫啿紿佽В鍐蟲柟妗?/P>

褰撴垜浠湪鍝堝笇琛ㄤ腑娣誨姞鎴栬幏鍙栦竴涓厓绱犳椂錛屼細鍙戠敓鍐茬獊銆傛彃鍏ュ厓绱犳椂錛屽繀欏繪煡鎵懼唴瀹逛負絀虹殑浣嶇疆錛岃岃幏鍙栧厓绱犳椂錛屽嵆浣夸笉鍦ㄩ鏈熺殑浣嶇疆澶勶紝涔熷繀欏繪壘鍒拌鍏冪礌銆傚墠闈㈡垜浠畝鍗曞湴浠嬬粛浜嗕袱縐嶈В鍐沖啿紿佺殑鏈哄埗鈥斺旂嚎鎬у拰浜屾鎸栨帢銆傚湪Hashtable綾諱腑浣跨敤鐨勬槸涓縐嶅畬鍏ㄤ笉鍚岀殑鎶鏈紝鎴愪負浜屽害鍝堝笇錛坮ehasing錛?鏈夌殑璧勬枡涔熷皢鍏剁О涓哄弻綺懼害鍝堝笇double hashing)銆?/P>

浜屽害鍝堝笇鐨勫伐浣滃師鐞嗗涓嬶細鏈変竴涓寘鍚涓搱甯屽嚱鏁幫紙H1鈥︹n錛夌殑闆嗗悎銆傚綋鎴戜滑瑕佷粠鍝堝笇琛ㄤ腑娣誨姞鎴栬幏鍙栧厓绱犳椂錛岄鍏堜嬌鐢ㄥ搱甯屽嚱鏁癏1銆傚鏋滃鑷村啿紿侊紝鍒欏皾璇曚嬌鐢℉2錛屼竴鐩村埌Hn銆傚悇涓搱甯屽嚱鏁版瀬鍏剁浉浼鹼紝涓嶅悓鐨勬槸瀹冧滑閫夌敤鐨勪箻娉曞洜瀛愩傞氬父錛屽搱甯屽嚱鏁癏k鐨勫畾涔夊涓嬶細
Hk(key) = [GetHash(key) + k * (1 + (((GetHash(key) >> 5) + 1) % (hashsize 鈥?1)))] % hashsize

娉細榪愮敤浜屽害鍝堝笇閲嶈鐨勬槸鍦ㄦ墽琛屼簡hashsize嬈℃寲鎺樺悗錛屽搱甯岃〃涓殑姣忎竴涓綅緗兘紜垏鍦拌鏈変笖浠呮湁涓嬈¤闂備篃灝辨槸璇達紝瀵逛簬緇欏畾鐨刱ey錛屽鍝堝笇琛ㄤ腑鐨勫悓涓浣嶇疆涓嶄細鍚屾椂浣跨敤Hi鍜孒j銆傚湪Hashtable綾諱腑浣跨敤浜屽害鍝堝笇鍏紡錛屽叾淇濊瘉涓猴細(1 + (((GetHash(key) >> 5) + 1) % (hashsize 鈥?1))涓巋ashsize涓よ呬簰涓虹礌鏁般傦紙涓ゆ暟浜掍負绱犳暟琛ㄧず涓よ呮病鏈夊叡鍚岀殑璐ㄥ洜瀛愩傦級濡傛灉hashsize鏄竴涓礌鏁幫紝鍒欎繚璇佽繖涓や釜鏁頒簰涓虹礌鏁般?/P>

浜屽害鍝堝笇杈冨墠涓ょ鏈哄埗杈冨ソ鍦伴伩鍏嶄簡鍐茬獊銆?/P>

璋冪敤鍥犲瓙錛坙oad factors錛夊拰鎵╁厖鍝堝笇琛?/P>

Hashtable綾諱腑鍖呭惈涓涓鏈夋垚鍛樺彉閲弆oadFactor錛屽畠鎸囧畾浜嗗搱甯岃〃涓厓绱犱釜鏁頒笌琛ㄤ綅緗繪暟涔嬮棿鐨勬渶澶ф瘮渚嬨備緥濡傦細loadFactor絳変簬0.5錛屽垯璇存槑鍝堝笇琛ㄤ腑鍙湁涓鍗婄殑絀洪棿瀛樻斁浜嗗厓绱犲鹼紝鍏朵綑涓鍗婄殕涓虹┖銆?/P>

鍝堝笇琛ㄧ殑鏋勯犲嚱鏁頒互閲嶈澆鐨勬柟寮忥紝鍏佽鐢ㄦ埛鎸囧畾loadFactor鍊鹼紝瀹氫箟鑼冨洿涓?.1鍒?.0銆傝娉ㄦ剰鐨勬槸錛屼笉綆′綘鎻愪緵鐨勫兼槸澶氬皯錛岃寖鍥撮兘涓嶈秴榪?2%銆傚嵆浣夸綘浼犻掔殑鍊間負1.0錛孒ashtable綾葷殑loadFactor鍊艱繕鏄?.72銆傚井杞涓簂oadFactor鐨勬渶浣沖間負0.72錛屽洜姝よ櫧鐒墮粯璁ょ殑loadFactor涓?.0錛屼絾緋葷粺鍐呴儴鍗磋嚜鍔ㄥ湴灝嗗叾鏀瑰彉涓?.72銆傛墍浠ワ紝寤鴻浣犱嬌鐢ㄧ己鐪佸?.0錛堜簨瀹炰笂鏄?.72錛屾湁浜涜糠鎯戯紝涓嶆槸鍚楋紵錛?/P>

娉細鎴戣姳浜嗗ソ鍑犲ぉ鏃墮棿鍘誨挩璇㈠井杞殑寮鍙戜漢鍛樹負浠涔堣浣跨敤鑷姩杞崲錛熸垜寮勪笉鏄庣櫧錛屼負浠涔堜粬浠笉鐩存帴瑙勫畾鍊間負0.072鍒?.72涔嬮棿銆傛渶鍚庢垜浠庣紪鍐橦ashtable綾葷殑寮鍙戝洟闃熺殑鍒頒簡絳旀錛屼粬浠潪甯稿皢闂鐨勭紭鐢卞叕璇鎬簬浼椼備簨瀹炰笂錛岃繖涓洟闃熺粡榪囨祴璇曞彂鐜板鏋渓oadFactor瓚呰繃浜?.72錛屽皢浼氫弗閲嶇殑褰卞搷鍝堝笇琛ㄧ殑鎬ц兘銆備粬浠笇鏈涘紑鍙戜漢鍛樿兘澶熸洿濂藉湴浣跨敤鍝堝笇琛紝浣嗗嵈鍙兘璁頒笉浣?.72榪欎釜鏃犺寰嬫暟錛岀浉鍙嶅鏋滆瀹?.0涓烘渶浣沖鹼紝寮鍙戣呬細鏇村鏄撹浣忋備簬鏄紝灝卞艦鎴愮幇鍦ㄧ殑緇撴灉錛岃櫧鐒跺湪鍔熻兘涓婃湁灝戣鐗虹壊錛屼絾鍗翠嬌鎴戜滑鑳芥洿鍔犳柟渚垮湴浣跨敤鏁版嵁緇撴瀯錛岃屼笉鐢ㄦ劅鍒板ご鐤箋?/P>

鍚慔ashtable綾繪坊鍔犳柊鍏冪礌鏃訛紝閮借榪涜媯鏌ヤ互淇濊瘉鍏冪礌涓庣┖闂村ぇ灝忕殑姣斾緥涓嶄細瓚呰繃鏈澶ф瘮渚嬨傚鏋滆秴榪囦簡錛屽搱甯岃〃絀洪棿灝嗚鎵╁厖銆傛楠ゅ涓嬶細
1錛?nbsp;鍝堝笇琛ㄧ殑浣嶇疆絀洪棿榪戜技鍦版垚鍊嶅鍔犮傚噯紜湴璇達紝浣嶇疆絀洪棿鍊間粠褰撳墠鐨勭礌鏁板煎鍔犲埌涓嬩竴涓渶澶х殑绱犳暟鍊箋傦紙鍥炴兂涓涓嬪墠闈㈣鍒扮殑浜屽害鍝堝笇鐨勫伐浣滃師鐞嗭紝鍝堝笇琛ㄧ殑浣嶇疆絀洪棿鍊煎繀欏繪槸绱犳暟銆傦級
2錛?nbsp;鏃㈢劧浜屽害鍝堝笇鏃訛紝鍝堝笇琛ㄤ腑鐨勬墍鏈夊厓绱犲煎皢渚濊禆浜庡搱甯岃〃鐨勪綅緗┖闂村鹼紝鎵浠ヨ〃涓墍鏈夊間篃闇瑕佷簩搴﹀搱甯岋紙鍥犱負鍦ㄧ涓姝ヤ腑浣嶇疆絀洪棿鍊煎鍔犱簡錛夈?/P>

騫歌繍鐨勬槸錛孒ashtable綾諱腑鐨凙dd()鏂規硶闅愯棌浜嗚繖浜涘鏉傜殑姝ラ錛屼綘涓嶉渶瑕佸叧蹇冨畠鐨勫疄鐜扮粏鑺傘?/P>

璋冪敤鍥犲瓙錛坙oad factor錛夊鍐茬獊鐨勫獎鍝嶅喅瀹氫簬鍝堝笇琛ㄧ殑鎬諱綋闀垮害鍜岃繘琛屾寲鎺樻搷浣滅殑嬈℃暟銆侺oad factor瓚婂ぇ錛屽搱甯岃〃瓚婂瘑闆嗭紝絀洪棿灝辮秺灝戯紝姣旇緝浜庣浉瀵圭█鐤忕殑鍝堝笇琛紝榪涜鎸栨帢鎿嶄綔鐨勬鏁板氨瓚婂銆傚鏋滀笉浣滅簿紜湴鍒嗘瀽錛屽綋鍐茬獊鍙戠敓鏃舵寲鎺樻搷浣滅殑棰勬湡嬈℃暟澶х害涓?/(1-lf)錛岃繖閲宭f鎸囩殑鏄痩oad factor銆?/P>

濡傚墠鎵榪幫紝寰蔣灝嗗搱甯岃〃鐨勭己鐪佽皟鐢ㄥ洜瀛愯瀹氫負0.72銆傚洜姝ゅ浜庢瘡嬈″啿紿侊紝騫沖潎鎸栨帢嬈℃暟涓?.5嬈°傛棦鐒惰鏁板瓧涓庡搱甯岃〃涓疄闄呭厓绱犱釜鏁版棤鍏籌紝鍥犳鍝堝笇琛ㄧ殑娓愯繘璁塊棶鏃墮棿涓篛錛?錛夛紝鏄劇劧榪滆繙濂戒簬鏁扮粍鐨凮(n)銆?/P>

鏈鍚庯紝鎴戜滑瑕佽璇嗗埌瀵瑰搱甯岃〃鐨勬墿鍏呭皢浠ユц兘鎹熻椾負浠d環銆傚洜姝わ紝浣犲簲璇ラ鍏堜及璁′綘鐨勫搱甯岃〃涓渶鍚庡彲鑳戒細瀹圭撼鐨勫厓绱犳繪暟錛屽湪鍒濆鍖栧搱甯岃〃鏃朵互鍚堥傜殑鍊艱繘琛屾瀯閫狅紝浠ラ伩鍏嶄笉蹇呰鐨勬墿鍏呫?BR>



]]>
鏁版嵁緇撴瀯綆浠?涓錛?/title><link>http://www.shnenglu.com/mzty/archive/2005/12/24/2053.html</link><dc:creator>姊﹀湪澶╂動</dc:creator><author>姊﹀湪澶╂動</author><pubDate>Sat, 24 Dec 2005 07:36:00 GMT</pubDate><guid>http://www.shnenglu.com/mzty/archive/2005/12/24/2053.html</guid><wfw:comment>http://www.shnenglu.com/mzty/comments/2053.html</wfw:comment><comments>http://www.shnenglu.com/mzty/archive/2005/12/24/2053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mzty/comments/commentRss/2053.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mzty/services/trackbacks/2053.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=postTitle><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><BR> </DIV> <div id="hvzpftn" class=postText> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">絎竴閮ㄥ垎</SPAN><SPAN lang=EN-US>:</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鏁版嵁緇撴瀯綆浠?BR></P></SPAN> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN> </P><SPAN lang=EN-US><o:p> <P><SPAN lang=EN-US style="FONT-SIZE: 12pt">鍘熸枃閾炬帴錛?A >Part 1: An Introduction to Data Structures<o:p></o:p></A></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">浠嬬粛:<BR>鏈枃鏄粙緇嶅湪.Net騫沖彴涓嬩嬌鐢ㄦ暟鎹粨鏋勭殑緋誨垪鏂囩珷,鍏卞垎涓哄叚閮ㄥ垎,榪欐槸鏈枃鐨勭涓閮ㄥ垎.鏈枃璇曞浘鑰冨療鍑犵鏁版嵁緇撴瀯,鍏朵腑鏈夌殑鍖呭惈鍦?Net Framework鐨勫熀綾誨簱涓?鏈夌殑鏄垜浠嚜宸卞垱寤虹殑.濡傛灉浣犲榪欎簺鍚嶈瘝涓嶅お鐔熸倝,閭d箞鎴戜滑鍙互鎶婃暟鎹粨鏋勭湅浣滄槸涓縐嶆娊璞$粨鏋勬垨鏄被,瀹冮氬父鐢ㄦ潵緇勭粐鏁版嵁,騫舵彁渚涘鏁版嵁鐨勬搷浣?鏈甯歌騫朵負鎴戜滑鎵鐔熺煡鐨勬暟鎹粨鏋勫氨鏄暟緇刟rray,瀹冨寘鍚簡涓緇勮繛緇殑鏁版嵁,騫墮氳繃绱㈠紩榪涜璁塊棶.</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">鍦ㄩ槄璇繪湰鏂囧唴瀹逛箣鍓?璁╂垜浠厛鐪嬬湅榪欏叚閮ㄥ垎鐨勪富瑕佸唴瀹?濡傛灉浣犳湁浠涔堟兂娉?鎴栬寰楁湰鏂囨湁浠涔堥仐婕忎箣澶?甯屾湜浣犻氳繃e-mail(<A href="mailto:mitchell@4guysfromrolla.com">mitchell@4guysfromrolla.com</A>)鍜屾垜鑱旂郴,鍏卞悓鍒嗕韓浣犵殑鎬濇兂.鍋囧鏈夋椂闂寸殑璇?鎴戝緢楂樺叴灝嗕綘鐨勫緩璁斁鍒板悎閫傜殑閮ㄥ垎,濡傛湁蹇呰,鍙互鍦ㄨ繖綃囩郴鍒楁枃绔犱腑鍔犱笂絎竷閮ㄥ垎.</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">絎竴閮ㄥ垎:棣栧厛浠嬬粛鏁版嵁緇撴瀯鍦ㄧ畻娉曡璁′腑鐨勯噸瑕佹?鍐沖畾鏁版嵁緇撴瀯鐨勪紭鍔e湪浜庡叾鎬ц兘.鎴戜滑灝嗙粡榪囦弗鏍煎垎鏋愭暟鎹粨鏋勭殑鍚勭鎬ц兘.姝ら儴鍒嗚繕灝嗕粙緇?Net Frameword涓嬩袱縐嶅父鐢ㄧ殑鏁版嵁鏈烘瀯:Array 鍜孉rrayList.鎴戜滑灝嗚冨療鍏剁粨鏋勭殑鎿嶄綔鏂瑰紡鍙婂叾鏁堢巼.</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">絎簩閮ㄥ垎:鎴戜滑灝嗙戶緇粠鏇村緇嗚妭涓婂垎鏋怉rrayList緇撴瀯,鍚屾椂榪樺皢浠嬬粛Queue綾誨拰Stack綾?鍜孉rrayList涓鏍?Queue鍜孲tack瀛樻斁鐨勯兘鏄竴緇勮繛緇殑鏁版嵁闆嗗悎,閮藉睘浜?Net Framework鍩虹被搴?涓嶢rrayList涓嶅悓鐨勬槸,Stack鍜孮ueue鍙兘浠ラ鍏堣瀹氱殑搴忓垪欏哄簭璇誨彇鍏舵暟鎹?鍏堣繘鍏堝嚭鍜屽厛榪涘悗鍑?,鑰孉rrayList鍙互浠繪剰鑾峰彇鏁版嵁欏?鎴戜滑灝嗛氳繃紺轟緥紼嬪簭鏉ヨ冨療Queue,Stack,騫墮氳繃鎵╁睍ArrayList綾繪潵瀹炵幇瀹冧滑.涔嬪悗,鎴戜滑榪樿鍒嗘瀽鍝堝笇琛℉ashTable,瀹冭薄ArrayList涓鏍峰彲浠ョ洿鎺ヨ闂暟鎹?涓嶅悓鐨勬槸瀹冧互key(瀛楃涓?涓虹儲寮?</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">ArrayList瀵規暟鎹洿鎺ヨ鍙栧拰瀛樺偍鏄竴縐嶇悊鎯崇殑鏁版嵁緇撴瀯,鍚屾椂,瀹冧篃鏄敮鎸佹暟鎹悳绱㈢殑鍊欓夋柟妗?鍦ㄧ涓夐儴鍒?鎴戜滑灝嗚冨療浜屽弶鏍戠粨鏋?瀵逛簬鏁版嵁鎼滅儲鑰岃█,瀹冩瘮ArrayList鏇村姞鏈夋晥. .Net Framework騫朵笉鍖呭惈姝ょ鍐呯疆鏁版嵁緇撴瀯,鍥犳闇瑕佹垜浠嚜宸卞垱寤?</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">浜屽弶鏍戞悳绱㈢殑鏁堢巼鍙楀埗浜庢彃鍏ュ埌鏍戜腑鐨勬暟鎹殑欏哄簭.濡傛灉鎴戜滑鎻掑叆鐨勬槸鏈夊簭鎴栬繎浼兼湁搴忕殑鏁版嵁,瀹為檯涓?瀹冪殑鏁堢巼涓嶅ArrayList.涓轟簡灝嗚繖涓ょ鐨勪紭鍔跨粨鍚堣搗鏉?鍦ㄧ鍥涢儴鍒?鎴戦棬灝嗚冨療涓縐嶆湁瓚g殑闅忔満鏁版嵁緇撴瀯鈥斺擲kipList. SkipList鏃繚鐣欎簡浜屽弶鏍戞悳绱㈢殑楂樻晥鐜?鍚屾椂杈撳叆鏁版嵁鐨勯『搴忓鍏舵晥鐜囧獎鍝嶇敋寰?</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">絎簲閮ㄥ垎鎴戜滑灝嗘敞鎰忓姏杞悜閫氬父鐢ㄦ潵琛ㄧ幇鍥懼艦鐨勬暟鎹粨鏋?鍥?graph)鏄紬澶氳妭鐐逛互鍙婅妭鐐逛箣闂磋竟鐨勯泦鍚?涓句緥鏉ヨ,鍦板浘灝卞彲浠ュ浘鐨勫艦寮忔潵琛ㄧ幇.鍩庡競鏄妭鐐?鍏礬鍒欐槸榪炴帴鑺傜偣涔嬮棿鐨勮竟.璁稿鐜板疄闂閮藉彲浠ユ娊璞℃垚鍥劇殑褰㈠紡,鍥犳,鍥句篃鏄垜浠粡甯歌鐢ㄥ埌鐨勬暟鎹粨鏋?</FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman">鏈鍚?絎叚閮ㄥ垎鎴戜滑灝嗚皥鍒皉eprisent sets(琛ㄧず闆?)鍜宒isjoint sets(闈炲叧鑱旈泦,鍗充氦闆嗕負絀?)闆嗗悎鏄竴縐嶆棤搴忔暟鎹殑闆嗕腑.闈炲叧鑱旈泦鏄寚瀹冨拰鍙﹀涓涓泦鍚堟病鏈夊叡鍚岀殑鍏冪礌.鎴戜滑鍦ㄧ▼搴忕紪鍐欐椂浼氱粡甯哥敤鍒伴泦鍚堝拰闈炲叧鑱旈泦.鎴戜滑灝嗗湪榪欎竴閮ㄥ垎涓緇嗘弿榪板畠.</FONT></SPAN></P><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Times New Roman"> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR>鏁版嵁緇撴瀯鎬ц兘鍒嗘瀽</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">褰撴垜浠湪鎬濊冧竴涓壒鍒殑搴旂敤紼嬪簭鎴栬呯▼搴忕殑闂鏃?澶氭暟寮鍙戜漢鍛?鍖呮嫭鎴戣嚜宸?閮藉皢鍏磋叮闆嗕腑鍒扮畻娉曚笂浠ヨВ鍐蟲墜澶寸殑闅鵑,鎴栬呬負搴旂敤紼嬪簭鍔犱笂涓涓緢閰風殑鐗硅壊浠ヤ赴瀵岀敤鎴風殑緇忛獙.鎴戜滑浼間箮寰堝皯鍚埌鏈変漢浼氫負浠栨墍浣跨敤鐨勬暟鎹粨鏋勮屾縺鍔ㄤ笉宸?鍟у暓璧炲徆. 鐒惰?鐢ㄥ湪涓涓壒瀹氱畻娉曚腑鐨勬暟鎹粨鏋勮兘澶熷緢澶х▼搴︿笂褰卞搷鍏舵ц兘.鏈甯歌鐨勪緥瀛愬氨鏄湪鏁版嵁緇撴瀯涓煡鎵句竴涓厓绱?鍦ㄦ暟緇勪腑,鏌ユ壘榪囩▼鎵鑰楁椂闂存槸涓庤繖涓暟緇勪腑鍏冪礌鐨勪釜鏁版槸鎴愭姣旂殑.閲囩敤浜屽弶鏁版垨鑰匰kipLists(鎴戞壘涓嶅埌鍚堥傜殑緲昏瘧,鎸夊墠鎵榪?瀹冨寘鍚簡闅忔満鏁扮殑闆嗗悎,涔熻鐪嬩簡鍚庨潰鐨勯儴鍒嗕細鎯沖埌鍚堥傜殑涓枃),鑰楁椂涓庢暟鎹釜鏁版瘮渚嬫垚綰垮瀷涓嬮檷(sub-linear,鎴戝張榛旈┐璇嶇┓浜?.褰撴垜浠鎼滅儲澶ч噺鐨勬暟鎹椂,鏁版嵁緇撴瀯鐨勯夋嫨瀵圭▼搴忕殑鎬ц兘灝ゅ叾閲嶈,鍏跺樊鍒敋鑷寵揪鍒版暟縐?涔冭嚦浜庢暟鍒嗛挓.</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">鏃㈢劧鍦ㄧ畻娉曚腑浣跨敤鐨勬暟鎹粨鏋勫獎鍝嶄簡綆楁硶鐨勬晥鐜?鍥犳姣旇緝鍚勭鏁版嵁緇撴瀯鐨勬晥鐜囧茍浠庝腑閫夋嫨涓縐嶆洿浣崇殑鏂規硶灝辨樉寰楀挨涓洪噸瑕?浣滀負寮鍙戣呰岃█,鎴戜滑棣栧厛瑕佸叧娉ㄧ殑鏄殢鐫瀛樺偍鐨勬暟鎹噺鐨勫闀?鏁版嵁緇撴瀯鎬ц兘鏄庢牱闅忎箣鏀瑰彉鐨勭殑?涔熷氨鏄,姣忓綋鏁版嵁緇撴瀯涓坊鍔犱竴涓柊鍏冪礌鏃?瀹冨皢鎬庢牱褰卞搷鏁版嵁緇撴瀯鐨勮繍琛屾椂闂?</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">鑰冭檻榪欐牱涓縐嶆儏褰?鎴戜滑鍦ㄧ▼搴忎腑浣跨敤浜哠ystem.IO.Directory.GetFiles(璺緞)鏂規硶浠ヨ繑鍥炴枃浠剁殑鍒楄〃,瀛樻斁鍒頒竴涓壒瀹氱殑瀛楃涓叉暟緇刣irectory涓?鍋囪浣犻渶瑕佹悳绱㈣繖涓暟緇勪互鍒ゆ柇鍦ㄦ枃浠跺垪琛ㄤ腑鏄惁瀛樺湪XML鏂囦歡(鍗蟲墿灞曞悕涓?xml鐨勬枃浠?,涓縐嶆柟娉曟槸鎵弿(scan,鎴栬呮槸閬嶅巻)鏁翠釜鏁扮粍,褰撴壘鍒癤ML鏂囦歡鏃?灝辮緗竴涓爣璇?浠g爜鍙兘鏄繖鏍?</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">using System;<BR>using System.Collections;<BR>using System.IO;</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">public class MyClass<BR>{<BR>   public static void Main()<BR>   {<BR>      string [] fs = Directory.GetFiles(@"C:\Inetpub\wwwroot");<BR>      bool foundXML = false;<BR>      int i = 0;<BR>      for (i = 0; i < fs.Length; i++)<BR>         if (String.Compare(Path.GetExtension(fs[i]), ".xml", true) == 0)<BR>         {<BR>            foundXML = true;<BR>            break;<BR>         }<BR>   <BR>     if (foundXML)<BR>        Console.WriteLine("XML file found - " + fs[i]);<BR>     else<BR>        Console.WriteLine("No XML files found.");<BR>      <BR>   }<BR>}</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR>鐜板湪鎴戜滑鏉ョ湅鐪嬫渶緋熺硶鐨勪竴縐嶆儏鍐?褰撹繖涓垪琛ㄤ腑涓嶅瓨鍦╔ML鏂囦歡鎴栬匵ML鏂囦歡鏄湪鍒楄〃鐨勬渶鍚?鎴戜滑灝嗕細鎼滅儲瀹岃繖涓暟緇勭殑鎵鏈夊厓绱?鍐嶆潵鍒嗘瀽涓涓嬫暟緇勭殑鏁堢巼,鎴戜滑蹇呴』闂棶鑷繁,"鍋囪鏁扮粍涓幇鏈塶涓厓绱?濡傛灉鎴戞坊鍔犱竴涓柊鍏冪礌,澧為暱涓簄+1涓厓绱?閭d箞鏂扮殑榪愯鏃墮棿鏄灝?(鏈"榪愯鏃墮棿"--running time,涓嶈兘欏懼悕鎬濅箟鍦拌涓烘槸紼嬪簭榪愯鎵娑堣楃殑緇濆鏃墮棿,鑰屾寚鐨勬槸紼嬪簭瀹屾垚璇ヤ換鍔℃墍蹇呴』鎵ц鐨勬楠ゆ暟.浠ユ暟緇勮岃█,榪愯鏃墮棿鐗瑰畾琚涓烘槸璁塊棶鏁扮粍鍏冪礌鎵闇鎵ц鐨勬楠ゆ暟銆?瑕佹悳绱㈡暟緇勪腑鐨勪竴涓鹼紝娼滃湪鐨勫彲鑳芥槸璁塊棶鏁扮粍鐨勬瘡涓涓厓绱狅紝濡傛灉鏁扮粍涓湁n+1涓厓绱狅紝灝卞皢鎵цn+1嬈℃鏌ャ傞偅灝辨槸璇達紝鎼滅儲鏁扮粍鑰楄垂鐨勬椂闂翠笌鏁扮粍鍏冪礌涓暟鎴愬嚑浣曠嚎褰㈡瘮銆?/P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">褰撴暟鎹粨鏋勭殑闀垮害瓚嬩簬鏃犵┓澶ф椂錛屽垎鏋愬叾緇撴瀯鐨勬晥鐜囷紝鎴戜滑鎶婅繖縐嶅垎鏋愭柟娉曠О涓烘笎榪涘垎鏋愶紙asymptotic analysis)銆傛笎榪涘垎鏋愪腑甯哥敤鐨勭鍙鋒槸澶у啓鐨凮錛坆ig-Oh)錛屼互O(n)鐨勫艦寮忔弿榪伴亶鍘嗘暟緇勭殑鎬ц兘銆侽鏄湳璇涓璪ig-Oh絎﹀彿鐨勮〃紺猴紝n鍒欎唬琛ㄩ亶鍘嗘暟緇勬椂闅忛暱搴﹀闀胯屼笌涔嬬嚎褰㈠闀跨殑紼嬪簭鎵ц姝ユ暟銆?/P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">璁$畻浠g爜鍧椾腑綆楁硶鐨勮繍琛屾椂闂寸殑涓縐嶇郴緇熸柟娉曞簲閬靛驚浠ヤ笅姝ラ錛?/P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">1銆佸垽鏂粍鎴愮畻娉曡繍琛屾椂闂寸殑姝ラ銆傚鍓嶆墍榪幫紝瀵逛簬鏁扮粍鑰岃█錛屽吀鍨嬬殑姝ラ搴旀槸瀵規暟緇勮繘琛岃鍐欒闂殑鎿嶄綔銆傝屽浜庡叾浠栨暟鎹粨鏋勫垯涓嶅敖鐒躲傜壒鍒湴錛屼綘搴旇鑰冭檻鐨勬槸鏁版嵁緇撴瀯鑷韓鐨勬楠わ紝鑰屼笌璁$畻鏈哄唴閮ㄧ殑鎿嶄綔鏃犲叧銆備互涓婇潰鐨勪唬鐮佸潡涓轟緥錛岃繍琛屾椂闂村簲璇ュ彧璁$畻璁塊棶鏁扮粍鐨勬鏁幫紝鑰屼笉鐢ㄨ冭檻鍒涘緩鍜屽垵濮嬪寲鍙橀噺浠ュ強姣旇緝涓や釜瀛楃涓叉槸鍚︾浉絳夌殑鏃墮棿銆?BR>2銆佹壘鍒扮鍚堣綆楄繍琛屾椂闂存潯浠剁殑浠g爜琛屻傚湪榪欎簺琛屼笂闈㈢疆1銆?BR>3銆佸垽鏂繖浜涚疆1鐨勮鏄惁鍖呭惈鍦ㄥ驚鐜腑錛屽鏋滄槸錛屽垯灝?鏀逛負1涔樹笂寰幆鎵ц鐨勬渶澶ф鏁般傚鏋滃祵濂椾袱閲嶆垨澶氶噸寰幆錛岀戶緇寰幆鍋氱浉鍚岀殑涔樻硶銆?BR>4銆佹壘鍒板姣忚鍐欎笅鐨勬渶澶у鹼紝瀹冨氨鏄繍琛屾椂闂淬?/P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">鐜板湪鎴戜滑鎸夌収榪欑姝ラ鏉ユ爣璁頒笂闈㈢殑浠g爜鍧椼傞鍏堟垜浠凡緇忚兘澶熺‘瀹氫笌璁$畻榪愯鏃墮棿鏈夊叧鐨勪唬鐮佽錛屽啀鏍規嵁姝ラ2錛屽湪鏁扮粍fs琚闂殑涓よ浠g爜浣滀笂鏍囪錛屼竴琛屾槸鏁扮粍鍏冪礌浣滀負String.Compare()鏂規硶鐨勫弬鏁幫紝涓琛屾槸鍦–onsole.WriteLine()鏂規硶涓傛垜浠皢榪欎袱琛屾爣璁頒負1銆傜劧鍚庢牴鎹楠?錛孲tring.Compare()鏂規硶鏄湪寰幆涓紝鏈澶у驚鐜鏁頒負n錛堝洜涓烘暟緇勯暱搴︿負n錛夈傚洜姝ゅ皢璇ヨ鐨勬爣璁?鏀逛負n銆傛渶鍚庯紝鎴戜滑寰楀埌鐨勮繍琛屾椂闂村氨鏄爣璁扮殑鏈澶у糿錛岃涓篛(n)銆傦紙璇戞敞錛氬嵆涓烘暟鎹粨鏋勪腑閫氬父鎵璇寸殑鏃墮棿澶嶆潅搴︼級</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">O(n)錛屾垨鑰呰綰垮艦鏃墮棿(linear-time)錛岃〃紺轟簡澶氱綆楁硶榪愯鏃墮棿涓殑涓縐嶃傚叾浠栬繕鏈塐(log2 n)錛孫(n log 2 n)錛孫(n2)錛孫(2n)絳夌瓑銆傛垜浠棤欏誨叧蹇冭繖浜涚箒鏉傜殑big-Oh璁板彿錛屽彧闇瑕佺煡閬撳湪鎷彿涓殑鍊艱秺灝忥紝鍒欎唬琛ㄦ暟鎹粨鏋勭殑鎬ц兘瓚婂ソ銆備婦渚嬫潵璇達紝鏃墮棿澶嶆潅搴︼紙鍦ㄨ繖閲屾垜榪樻槸瑙夊緱鐢ㄦ椂闂村鏉傚害姣旇繍琛屾椂闂存洿鑳界悊瑙o級涓篛(log n)鐨勭畻娉曡繙姣擮(n)鏇存湁鏁堢巼錛屽洜涓簂og n<N銆?BR></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR>娉細</P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鎴戜滑闇瑕佹俯涔犱互涓嬫暟瀛︾煡璇嗐傚湪榪欓噷錛?/SPAN><SPAN lang=EN-US>log <SUB>a</SUB> b</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鍙﹀涓縐嶈〃紺烘柟娉曚負</SPAN><SPAN lang=EN-US>a<SUP>y</SUP>=b</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">銆傚洜姝わ紝</SPAN><SPAN lang=EN-US>log<SUB>2</SUB>4=2</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">錛屽洜涓?/SPAN><SPAN lang=EN-US>2<SUP>2</SUP>=4</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">銆?/SPAN><SPAN lang=EN-US>Log<SUB>2</SUB>n</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">澧為暱閫熷害姣斿崟涓殑</SPAN><SPAN lang=EN-US>n</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">瑕佹參寰楀錛屽湪絎笁閮ㄥ垎鎴戜滑灝嗚冨療鏃墮棿澶嶆潅搴︿負</SPAN><SPAN lang=EN-US>O(log<SUB>2</SUB>n)</SPAN><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鐨勪簩鍙夋爲緇撴瀯銆傦紙榪欎釜娉ㄩ噴娌″澶ф剰鎬濆晩錛侊級</SPAN></P></FONT></SPAN> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></P> <P>鍦ㄨ繖綃囩郴鍒楁枃绔犱腑錛屾垜浠皢璁$畻姣忎竴縐嶆柊鐨勬暟鎹粨鏋勫拰瀹冧滑鐨勬笎榪涙搷浣滆繍琛屾椂闂達紝騫墮氳繃鐩鎬技鐨勬搷浣滄瘮杈冨叾浠栨暟鎹粨鏋勫湪榪愯鏃墮棿涓婄殑鍖哄埆銆?/P> <P>鏁扮粍錛氫竴縐嶇嚎褰㈢殑錛屽彲浠ョ洿鎺ヨ闂殑錛屽崟涓鏁版嵁緇撴瀯</P> <P>鍦ㄧ▼搴忕紪鍐欎腑錛屾暟緇勬槸鏈綆鍗曚篃鏄渶騫挎硾浣跨敤鐨勬暟鎹粨鏋勩傚湪鎵鏈夌殑紼嬪簭璇█涓暟緇勯兘鍏峰浠ヤ笅鍏卞悓鐨勫睘鎬э細<BR>1錛庢暟緇勭殑鏁版嵁瀛樺偍鍦ㄤ竴孌佃繛緇殑鍐呭瓨涔嬩腑錛?BR>2錛庢暟緇勭殑鎵鏈夊厓绱犻兘蹇呴』鏄悓涓縐嶆暟鎹被鍨嬶紝鍥犳鏁扮粍鍙堣璁や負鏄崟涓鏁版嵁緇撴瀯(homogeneous data structures)錛?BR>3錛庢暟緇勫厓绱犲彲浠ョ洿鎺ヨ闂傦紙鍦ㄥ緢澶氭暟鎹粨鏋勪腑錛岃繖涓鐗圭偣鏄笉蹇呰鐨勩備緥濡傦紝鏂囩珷絎洓閮ㄥ垎浠嬬粛鐨勬暟鎹粨鏋凷kipList銆傝璁塊棶SkipList涓殑鐗瑰畾鍏冪礌錛屼綘蹇呴』鏍規嵁鎼滅儲鍏朵粬鍏冪礌鐩村埌鎵懼埌鎼滅儲瀵硅薄涓烘銆傜劧鑰屽浜庢暟緇勮岃█錛屽鏋滀綘鐭ラ亾浣犺鏌ユ壘絎琲涓厓绱狅紝灝卞彲浠ラ氳繃arrayName[i]鏉ヨ闂畠銆傦級錛堣瘧娉細寰堝璇█閮借瀹氭暟緇勭殑涓嬫爣浠?寮濮嬶紝鍥犳璁塊棶絎琲涓厓绱狅紝搴斾負arrayName[i-1]錛?/P> <P>浠ヤ笅鏄暟緇勫父鐢ㄧ殑鎿嶄綔錛?BR>1錛庡垎閰嶇┖闂?BR>2錛庢暟鎹闂?BR>3錛庢暟緇勭┖闂撮噸鍒嗛厤錛圧edimensioning錛?/P> <P>鍦–#閲屽0鏄庢暟緇勬椂錛屾暟緇勪負絀哄鹼紙null錛夈備笅闈㈢殑浠g爜鍒涘緩浜嗕竴涓悕涓篵ooleanArray鐨勬暟緇勫彉閲忥紝鍏跺間負絀猴紙null錛夛細</P> <P>Bool [] boolleanArray;</P> <P>鍦ㄤ嬌鐢ㄨ鏁扮粍鏃訛紝蹇呴』鐢ㄤ竴涓壒瀹氭暟瀛楃粰瀹冨垎閰嶇┖闂達紝濡備笅鎵紺猴細</P> <P>booleanArray = new bool[10];</P> <P>閫氱敤鐨勮〃榪頒負錛?/P> <P>arrayName = new arrayType[allocationSize];</P> <P>瀹冨皢鍦–LR鎵樼鍫嗛噷鍒嗛厤涓鍧楄繛緇殑鍐呭瓨絀洪棿錛岃凍浠ュ綰蟲暟鎹被鍨嬩負arrayTypes銆佷釜鏁頒負allocationSize鐨勬暟緇勫厓绱犮傚鏋渁rrayType涓哄肩被鍨嬶紙璇戞敞錛氬int綾誨瀷錛夛紝鍒欐湁allocationSize涓湭灝佺錛坲nboxed錛夌殑arrayType鍊艱鍒涘緩銆傚鏋渁rrayType涓哄紩鐢ㄧ被鍨?璇戞敞錛氬string綾誨瀷)錛屽垯鏈塧llocationSize涓猘rrayType寮曠敤綾誨瀷鍊艱鍒涘緩銆傦紙濡傛灉浣犲鍊肩被鍨嬪拰寮曠敤綾誨瀷銆佹墭綆″爢鍜屾爤涔嬮棿鐨勫尯鍒笉鐔熸倝錛岃鏌ラ槄鈥滅悊瑙?Net鍏叡綾誨瀷緋葷粺Common Type System鈥濓級</P> <P>涓哄府鍔╃悊瑙?Net Framework涓暟緇勭殑鍐呴儴瀛樺偍鏈哄埗錛岃鐪嬩笅闈㈢殑渚嬪瓙錛?/P> <P>arrayName = new arrayType[allocationSize];</P> <P>This allocates a contiguous block of memory in the CLR-managed heap large enough to hold the allocationSize number of arrayTypes. If arrayType is a value type, then allocationSize number of unboxed arrayType values are created. If arrayType is a reference type, then allocationSize number of arrayType references are created. (If you are unfamiliar with the difference between reference and value types and the managed heap versus the stack, check out Understanding .NET's Common Type System.)</P> <P>To help hammer home how the .NET Framework stores the internals of an array, consider the following example:</P> <P>bool [] booleanArray;<BR>FileInfo [] files;</P> <P>booleanArray = new bool[10];<BR>files = new FileInfo[10];</P> <P>榪欓噷錛宐ooleanArray鏄肩被鍨婼ystem.Boolean鏁扮粍錛岃宖iles鏁扮粍鍒欐槸寮曠敤綾誨瀷System.IO.FileInfo鏁扮粍銆傚浘涓鏄劇ず浜嗘墽琛岃繖鍥涜浠g爜鍚嶤LR鎵樼鍫嗙殑鎯呭喌銆?BR></P> <P><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-fareast-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <IMG height=220 src="http://wayfarer.cnblogs.com/images/cnblogs_com/wayfarer/1-1.gif" width=450 border=0><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></SPAN><BR> <BR>鍥句竴錛氬湪鎵樼鍫嗕腑欏哄簭瀛樻斁鏁扮粍鍏冪礌</P> <P>璇瘋浣忓湪files鏁扮粍涓瓨鏀劇殑鍗佷釜鍏冪礌鎸囧悜鐨勬槸FileInfo瀹炰緥銆傚浘浜屽己璋冧簡榪欎竴鐐癸紙hammers home this point錛屾湁浜涗繗璇殑鎰熻錛屼笉鐭ラ亾鎬庝箞緲昏瘧錛夛紝鏄劇ず浜嗗鏋滄垜浠負files鏁扮粍涓殑FileInfo瀹炰緥鍒嗛厤涓浜涘煎悗鍐呭瓨鐨勫垎甯冩儏鍐點?BR> <BR></P> <P><IMG height=188 src="http://wayfarer.cnblogs.com/images/cnblogs_com/wayfarer/1-2.gif" width=450 border=0><BR>鍥句簩錛氬湪鎵樼鍫嗕腑欏哄簭瀛樻斁鏁扮粍鍏冪礌</P> <P><BR>.Net涓墍鏈夋暟緇勯兘鏀寔瀵瑰厓绱犵殑璇誨啓鎿嶄綔銆傝闂暟緇勫厓绱犵殑璇硶鏍煎紡濡備笅錛?/P> <P>// 璇諱竴涓暟緇勫厓绱?BR>bool b = booleanArray[7];</P> <P>// 鍐欎竴涓暟緇勫厓绱狅紝鍗寵祴鍊?BR>booleanArray[0] = false;</P> <P>璁塊棶涓涓暟緇勫厓绱犵殑榪愯鏃墮棿琛ㄧず涓篛(1)錛屽洜涓哄瀹冪殑璁塊棶鏃墮棿鏄笉鍙樼殑銆傞偅灝辨槸璇達紝涓嶇鏁扮粍瀛樺偍浜嗗灝戝厓绱狅紝鏌ユ壘涓涓厓绱犳墍鑺辯殑鏃墮棿閮芥槸鐩稿悓鐨勩傝繍琛屾椂闂翠箣鎵浠ヤ笉鍙橈紝鏄洜涓烘暟緇勫厓绱犳槸榪炵畫瀛樻斁鐨勶紝鏌ユ壘瀹氫綅鐨勬椂鍊欏彧闇瑕佺煡閬撴暟緇勫湪鍐呭瓨涓殑璧峰浣嶇疆錛屾瘡涓厓绱犵殑澶у皬錛屼互鍙婂厓绱犵殑绱㈠紩鍊箋?/P> <P>鍦ㄦ墭綆′唬鐮佷腑錛屾暟緇勭殑鏌ユ壘姣斿疄闄呯殑瀹炵幇紼嶅井澶嶆潅涓浜涳紝鍥犱負鍦–LR涓闂瘡涓暟緇勶紝閮借紜繚绱㈠紩鍊煎湪鍏惰竟鐣屼箣鍐呫傚鏋滄暟緇勭儲寮曡秴鍑鴻竟鐣岋紝浼氭姏鍑篒ndexOutOfRangeException寮傚父銆傝繖縐嶈竟鐣屾鏌ユ湁鍔╀簬紜繚鎴戜滑鍦ㄨ闂暟緇勪笉鑷充簬鎰忓鍦拌秴鍑烘暟緇勮竟鐣岃岃繘鍏ュ彟澶栦竴鍧楀唴瀛樺尯銆傝屼笖瀹冧笉浼氬獎鍝嶆暟緇勮闂殑鏃墮棿錛屽洜涓烘墽琛岃竟鐣屾鏌ユ墍闇鏃墮棿騫朵笉闅忔暟緇勫厓绱犵殑澧炲姞鑰屽鍔犮?/P> <P>娉細濡傛灉鏁扮粍鍏冪礌鐗瑰埆澶氾紝绱㈠紩杈圭晫媯鏌ヤ細瀵瑰簲鐢ㄧ▼搴忕殑鎵ц鎬ц兘鏈夌◢璁稿獎鍝嶃傝屽浜庨潪鎵樼浠g爜錛岃繖縐嶈竟鐣屾鏌ュ氨琚拷鐣ヤ簡銆傝浜嗚В鏇村淇℃伅錛岃鍙傝僇effrey Richter鎵钁楃殑Applied Microsoft .NET Framework Programming絎?4绔犮?/P> <P>浣跨敤鏁扮粍鏃訛紝浣犱篃璁擱渶瑕佹敼鍙樻暟緇勫ぇ灝忋傚彲浠ラ氳繃鏍規嵁鐗瑰畾鐨勯暱搴﹀ぇ灝忓垱寤轟竴涓柊鏁扮粍瀹炰緥錛屽茍灝嗘棫鏁扮粍鐨勫唴瀹規嫹璐濆埌鏂版暟緇勶紝鏉ュ疄鐜拌鎿嶄綔銆傛垜浠О榪欎竴榪囩▼涓烘暟緇勭┖闂撮噸鍒嗛厤(redimensioning)錛屽涓嬩唬鐮侊細</P> <P>using System;<BR>using System.Collections;</P> <P>public class MyClass<BR>{<BR>   public static void Main()<BR>   {<BR>      // 鍒涘緩鍖呭惈3涓厓绱犵殑int綾誨瀷鏁扮粍<BR>      int [] fib = new int[3];<BR>      fib[0] = 1;<BR>      fib[1] = 1;<BR>      fib[2] = 2;<BR>      <BR>      // 閲嶆柊鍒嗛厤鏁扮粍錛岄暱搴︿負10<BR>      int [] temp = new int[10];</P> <P>// 灝唂ib鏁扮粍鍐呭鎷瘋礉鍒頒復鏃舵暟緇?BR>      fib.CopyTo(temp, 0);<BR>      <BR>      // 灝嗕復鏃舵暟緇勮祴緇檉ib<BR>      fib = temp;   <BR>   }<BR>}</P> <P>鍦ㄤ唬鐮佺殑鏈鍚庝竴琛岋紝fib鎸囧悜鍖呭惈10涓厓绱犵殑Int32綾誨瀷鏁扮粍銆侳ib鏁扮粍涓?鍒?錛堣瘧娉細娉ㄦ剰涓嬫爣浠?寮濮嬶級鐨勫厓绱犲奸粯璁や負0錛圛nt32綾誨瀷錛夈?/P> <P>褰撴垜浠瀛樺偍鍚岀綾誨瀷鐨勬暟鎹紙鍘熸枃涓篽eterogeneous types鈥斺斿紓綾繪暟鎹被鍨嬶紝鎴戞鐤戞湁璇級騫朵粎闇瑕佺洿鎺ヨ闂暟鎹椂錛屾暟緇勬槸杈冨ソ鐨勬暟鎹粨鏋勩傛悳绱㈡湭鎺掑簭鐨勬暟緇勬椂闂村鏉傚害鏄嚎褰㈢殑銆傚綋鎴戜滑瀵瑰皬鍨嬫暟緇勮繘琛屾搷浣滐紝鎴栧緢灝戝瀹冭繘琛屾煡璇㈡搷浣滄椂錛屾暟緇勮繖縐嶇粨鏋勬槸鍙互鎺ュ彈鐨勩備絾褰撲綘鐨勫簲鐢ㄧ▼搴忛渶瑕佸瓨鍌ㄥぇ閲忔暟鎹紝涓旈綣佽繘琛屾煡璇㈡搷浣滄椂錛屾湁寰堝鍏朵粬鏁版嵁緇撴瀯鏇磋兘閫傚簲浣犵殑宸ヤ綔銆傛垜浠潵鐪嬬湅鏈枃鎺ヤ笅鏉ュ皢瑕佷粙緇嶇殑涓浜涙暟鎹粨鏋勩傦紙濡傛灉浣犺鏍規嵁鏌愪釜灞炴ф煡鎵炬暟緇勶紝涓旀暟緇勬槸鏍規嵁璇ュ睘鎬ц繘琛屾帓搴忕殑錛屼綘鍙互浣跨敤浜屽弶娉曪紙binary search錛夊鍏舵悳绱紝瀹冪殑鏃墮棿澶嶆潅搴︿負O(log n)錛屼笌鍦ㄤ簩鍙夋爲涓悳绱㈢殑鏃墮棿澶嶆潅搴︾浉鍚屻備簨瀹炰笂錛屾暟緇勭被涓寘鍚簡涓涓潤鎬佹柟娉旴inarySearch()銆傚瑕佷簡瑙h鏂規硶鐨勬洿澶氫俊鎭紝璇峰弬鑰冩垜鏃╂湡鐨勪竴綃囨枃绔犫滄湁鏁堝湴鎼滅儲鏈夊簭鏁扮粍鈥濄?/P> <P>娉細.Net Framework鍚屾牱鏀寔澶氱淮鏁扮粍銆備笌涓緇存暟緇勪竴鏍鳳紝澶氱淮鏁扮粍瀵規暟鎹厓绱犵殑璁塊棶榪愯鏃墮棿浠嶇劧鏄笉鍙樼殑銆傚洖鎯充竴涓嬫垜浠墠闈粙緇嶇殑鍦╪涓厓绱犵殑涓緇存暟緇勪腑鏌ヨ鎿嶄綔鐨勬椂闂村鏉傚害涓篛(n)銆傚浜庝竴涓猲xn鐨勪簩緇存暟緇勶紝鏃墮棿澶嶆潅搴︿負O(n2)錛屽洜涓烘瘡嬈℃悳绱㈤兘瑕佹鏌2涓厓绱犮備互姝ょ被鎺紝k緇存暟緇勬悳绱㈢殑鏃墮棿澶嶆潅搴︿負O錛坣k錛夈?/P> <P>ArrayList錛氬彲瀛樺偍涓嶅悓綾誨瀷鏁版嵁銆佽嚜澧為暱鐨勬暟緇?/P> <P>鏄庣‘鍦幫紝鏁扮粍鍦ㄨ璁℃椂鍙楀埌涓浜涢檺鍒訛紝鍥犱負涓緇存暟緇勫彧鑳藉瓨鍌ㄧ浉鍚岀被鍨嬬殑鏁版嵁錛岃屼笖鍦ㄤ嬌鐢ㄦ暟緇勬椂錛屽繀欏諱負鏁扮粍瀹氫箟鐗瑰畾鐨勯暱搴︺傚緢澶氭椂鍊欙紝寮鍙戜漢鍛樿姹傛暟緇勬洿鍔犵伒媧伙紝瀹冨彲浠ュ瓨鍌ㄤ笉鍚岀被鍨嬬殑鏁版嵁錛屼篃涓嶇敤鍘誨叧蹇冩暟緇勭┖闂寸殑鍒嗛厤銆傚湪.Net Framework鍩虹被搴撲腑鎻愪緵浜嗘弧瓚寵繖鏍鋒潯浠剁殑鏁版嵁緇撴瀯鈥斺擲ystem.Collections.ArrayList銆?/P> <P>濡備笅鐨勪竴灝忔浠g爜鏄疉rrayList鐨勭ず渚嬨傛敞鎰忓埌浣跨敤ArrayList鏃跺彲浠ユ坊鍔犱換鎰忕被鍨嬬殑鏁版嵁錛屼笖涓嶉渶瑕佸垎閰嶇┖闂淬傛墍鏈夌殑榪欎簺閮界敱緋葷粺鎺у埗銆?/P> <P>ArrayList countDown = new ArrayList();<BR>countDown.Add(5);<BR>countDown.Add(4);<BR>countDown.Add(3);<BR>countDown.Add(2);<BR>countDown.Add(1);<BR>countDown.Add("blast off!");<BR>countDown.Add(new ArrayList());</P> <P>浠庢繁灞傛鐨勫惈涔夋潵璁詫紝ArrayList浣跨敤鐨勫瓨鏀劇被鍨嬩負object鐨凷ystem.Array瀵硅薄銆傛棦鐒舵墍鏈夌被鍨嬮兘鏄洿鎺ユ垨闂存帴浠巓bject媧劇敓錛岃嚜鐒朵竴涓猳bject綾誨瀷鐨勬暟緇勪篃鍙互瀛樻斁浠諱綍綾誨瀷鐨勫厓绱犮侫rrayList榛樿鍒涘緩16涓猳bject綾誨瀷鍏冪礌鐨勬暟緇勶紝褰撶劧鎴戜滑涔熷彲浠ラ氳繃鏋勯犲嚱鏁頒腑鐨勫弬鏁版垨璁劇疆Capacity灞炴ф潵瀹氬埗ArrayList澶у皬銆傞氳繃Add()鏂規硶娣誨姞鏂板厓绱狅紝鏁扮粍鍐呴儴鑷姩媯鏌ュ叾瀹歸噺銆傚鏋滄坊鍔犳柊鍏冪礌瀵艱嚧瓚婄晫錛屽垯瀹歸噺鍒欒嚜鍔ㄦ垚鍊嶅鍔狅紝鎴戜滑縐頒負鑷闀褲?/P> <P>ArrayList鍜孉rray涓鏍鳳紝涔熷彲浠ラ氳繃绱㈠紩鐩存帴璁塊棶錛?/P> <P>// Read access<BR>int x = (int) countDown[0];<BR>string y = (string) countDown[5];</P> <P>// Write access<BR>countDown[1] = 5;</P> <P>// 浼氫駭鐢烝rgumentOutOfRange 寮傚父<BR>countDown[7] = 5;</P> <P>鏃㈢劧ArrayList瀛樺偍鐨勬槸object綾誨瀷鐨勫厓绱狅紝鍥犳浠嶢rrayList涓鍏冪礌鏃跺簲璇ユ樉紺虹殑鎸囧畾綾誨瀷杞崲銆傚悓鏃惰娉ㄦ剰鐨勬槸錛屽鏋滀綘璁塊棶鐨勬暟緇勫厓绱犺秴榪嘇rrayList鐨勯暱搴︼紝緋葷粺浼氭姏鍑篠ystem.ArgumentOutOfRange寮傚父銆?/P> <P>ArrayList鎻愪緵浜嗘爣鍑嗘暟緇勬墍涓嶅叿澶囩殑鑷闀跨伒媧繪э紝浣嗚繖縐嶇伒媧繪ф槸浠ョ壓鐗叉ц兘涓轟唬浠風殑錛屽挨鍏舵槸褰撴垜浠瓨鍌ㄧ殑鏄肩被鍨嬧斺斾緥濡係ystem.Int32錛孲ystem.Double錛孲ystem.Boolean絳夈傚畠浠湪鎵樼鍫嗕腑鏄互鏈皝綆卞艦寮?unboxed form)榪炵畫瀛樻斁鐨勩傜劧鑰岋紝ArrayList鐨勫唴閮ㄦ満鍒舵槸涓涓紩鐢ㄧ殑object瀵硅薄鏁扮粍錛涘洜姝わ紝鍗充嬌ArrayList涓彧瀛樻斁浜嗗肩被鍨嬶紝榪欎簺鍏冪礌浠嶇劧浼氶氳繃灝佺錛坆oxing錛夎漿鎹負寮曠敤綾誨瀷銆傚鍥句笁鎵紺猴細<BR> <IMG height=249 alt=1-3.gif src="http://wayfarer.cnblogs.com/images/cnblogs_com/wayfarer/1-3.gif" width=450 border=0></P> <P>鍥句笁錛氬瓨鍌ㄨ繛緇潡鐨刼bject寮曠敤鐨凙rrayList</P> <P>鍦ˋrrayList涓嬌鐢ㄥ肩被鍨嬶紝灝嗛澶栬繘琛屽皝綆?boxing)鍜屾挙綆?unboxing)鎿嶄綔錛屽綋浣犵殑搴旂敤紼嬪簭鏄竴涓緢澶х殑ArrayList錛屽茍棰戠箒榪涜璇誨啓鎿嶄綔鏃訛紝浼氬緢澶х▼搴︿笂褰卞搷紼嬪簭鎬ц兘銆傚鍥?鎵紺猴紝瀵逛簬寮曠敤綾誨瀷鑰岃█錛孉rrayList鍜屾暟緇勭殑鍐呭瓨鍒嗛厤鏄浉鍚岀殑銆?/P> <P>姣旇緝鏁扮粍鑰岃█錛孉rrayList鐨勮嚜澧為暱騫朵笉浼氬鑷翠換浣曟ц兘鐨勪笅闄嶃傚鏋滀綘鐭ラ亾瀛樺偍鍒癆rrayList鐨勫厓绱犵殑鍑嗙‘鏁伴噺錛屽彲浠ラ氳繃ArrayList鏋勯犲嚱鏁板垵濮嬪寲瀹歸噺浠ュ叧闂叾鑷闀垮姛鑳姐傝屽浜庢暟緇勶紝褰撲綘涓嶇煡閬撳叿浣撳閲忔椂錛屼笉寰椾笉鍦ㄦ彃鍏ョ殑鏁版嵁鍏冪礌瓚呰繃鏁扮粍闀垮害鐨勬椂鍊欙紝鎵嬪姩鏀瑰彉鏁扮粍鐨勫ぇ灝忋?/P> <P>涓涓粡鍏哥殑璁$畻鏈虹瀛﹂棶棰樻槸錛氬綋紼嬪簭榪愯鏃惰秴鍑轟簡緙撳瓨絀洪棿錛屽簲璇ュ垎閰嶅灝戞柊鐨勭┖闂翠負鏈浣熾備竴縐嶆柟妗堟槸鏄師鏉ュ垎閰嶇┖闂寸殑鍩虹涓婃瘡嬈″姞1銆備緥濡傛暟緇勬渶鍒濆垎閰嶄簡5涓厓绱狅紝閭d箞鍦ㄦ彃鍏ョ6涓厓绱犱箣鍓嶏紝灝嗗叾闀垮害澧炲姞涓?銆傛樉鐒訛紝榪欑鏂規鏈澶х▼搴︿笂鑺傜害浜嗗唴瀛樼┖闂達紝浣嗕唬浠峰お澶э紝鍥犱負姣忔彃鍏ヤ竴涓柊鍏冪礌閮借榪涜涓嬈″啀鍒嗛厤鎿嶄綔銆?/P> <P>鍙︿竴縐嶆柟妗堝垰濂界浉鍙嶏紝涔熷氨鏄瘡嬈″垎閰嶉兘鍦ㄥ師鏉ュぇ灝忕殑鍩虹涓婂鍔?00鍊嶃傚鏋滄暟緇勬渶鍒濆垎閰嶄簡5涓厓绱狅紝閭d箞鍦ㄦ彃鍏ョ6涓厓绱犱箣鍓嶏紝鏁扮粍絀洪棿澧為暱涓?00銆傛樉鐒訛紝璇ユ柟妗堝ぇ澶у湴鍑忓皯浜嗗啀鍒嗛厤鎿嶄綔鐨勬鏁幫紝浣嗕粎褰撴彃鍏ユ瀬灝戠殑鏁版嵁鍏冪礌鏃訛紝灝變細鏈変笂鐧劇殑鍏冪礌絀洪棿鏈嬌鐢紝瀹炲湪澶氮璐圭┖闂翠簡錛?/P> <P>ArrayList鐨勬笎榪戣繍琛屾椂闂村拰鏍囧噯鏁扮粍涓鏍楓傚嵆浣垮ArrayList鐨勬搷浣滄槸楂樺紑閿鐨勶紝灝ゅ叾鏄瓨鍌ㄥ肩被鍨嬶紝鍏跺厓绱犱釜鏁板拰姣忔鎿嶄綔鐨勪唬浠蜂箣闂寸殑鍏崇郴涓庢爣鍑嗘暟緇勭浉鍚屻?BR></P></DIV><img src ="http://www.shnenglu.com/mzty/aggbug/2053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mzty/" target="_blank">姊﹀湪澶╂動</a> 2005-12-24 15:36 <a href="http://www.shnenglu.com/mzty/archive/2005/12/24/2053.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c錛嬶紜鍗曞悜閾捐〃 錛堣璁哄簲涓嶅簲璇ュ湪榛樿鐨勬瀯閫犻噷灝卞垎閰嶇┖闂達級http://www.shnenglu.com/mzty/archive/2005/10/28/870.html姊﹀湪澶╂動姊﹀湪澶╂動Fri, 28 Oct 2005 00:42:00 GMThttp://www.shnenglu.com/mzty/archive/2005/10/28/870.htmlhttp://www.shnenglu.com/mzty/comments/870.htmlhttp://www.shnenglu.com/mzty/archive/2005/10/28/870.html#Feedback6http://www.shnenglu.com/mzty/comments/commentRss/870.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/870.html闃呰鍏ㄦ枃

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品网红福利| 久久综合色影院| 国产精品入口| 性色一区二区三区| 午夜视黄欧洲亚洲| 在线观看成人av电影| 欧美激情视频一区二区三区不卡| 欧美大片国产精品| 亚洲性图久久| 亚洲欧美中文日韩在线| 狠狠色综合播放一区二区| 欧美国产亚洲视频| 欧美性感一类影片在线播放| 久久国产日本精品| 欧美成人午夜激情视频| 亚洲免费视频网站| 久久xxxx| 一区二区三区|亚洲午夜| 欧美一级网站| 欧美在线播放一区| 一本一本a久久| 欧美一区在线看| 999亚洲国产精| 欧美亚洲视频| aa日韩免费精品视频一| 欧美一区二区在线视频| 一区二区三区**美女毛片| 欧美一级二区| 亚洲无毛电影| 美女日韩欧美| 久久九九免费视频| 欧美三级网址| 亚洲国产高清视频| 国产三级精品在线不卡| 亚洲精品少妇网址| 亚洲国产色一区| 欧美一区二区在线播放| 欧美日韩一区二区免费在线观看| 久久久久综合网| 国产精品久久久久久av福利软件| 六月丁香综合| 国产日韩一区二区三区在线| 亚洲美女黄网| 亚洲精品国偷自产在线99热| 久久精品国产99精品国产亚洲性色| 亚洲一区二区在线免费观看视频 | 欧美激情按摩在线| 国产一区二区三区在线观看精品| 一区二区三区四区精品| 亚洲精品无人区| 久久综合久久美利坚合众国| 久久久久.com| 国产在线播放一区二区三区| 亚洲午夜精品久久| 亚洲午夜免费视频| 欧美日韩在线一区二区| 亚洲精品激情| 在线视频免费在线观看一区二区| 欧美成人一区在线| 国产精品日本欧美一区二区三区| 日韩亚洲一区二区| 亚洲色图自拍| 国产精品大片| 亚洲一区在线播放| 欧美一区二区三区四区在线观看 | 亚洲人成高清| 欧美sm重口味系列视频在线观看| 欧美成人国产一区二区| 亚洲国产成人在线播放| 欧美高清日韩| 亚洲靠逼com| 午夜精品一区二区三区四区| 国产精品一区视频| 久久精品免费播放| 亚洲高清电影| 亚洲午夜av在线| 国产日本欧美在线观看 | 最新日韩中文字幕| 亚洲线精品一区二区三区八戒| 国产精品免费一区二区三区在线观看 | 国产亚洲aⅴaaaaaa毛片| 久久国产精品亚洲va麻豆| 久久综合一区| 9l视频自拍蝌蚪9l视频成人| 国产精品xxxxx| 欧美一区二区三区在线播放| 欧美91福利在线观看| 一区二区三区欧美亚洲| 国产精品爽黄69| 久久久久免费观看| 亚洲免费不卡| 久久久最新网址| 99国产精品| 国产在线欧美| 欧美精品成人91久久久久久久| 99精品热视频| 蜜月aⅴ免费一区二区三区| 欧美精品三级| 国产嫩草一区二区三区在线观看| 伊人久久av导航| 亚洲影院污污.| 亚洲第一主播视频| 欧美一区二区三区在线视频 | 亚洲风情亚aⅴ在线发布| 日韩午夜激情| 国产一区二区三区四区老人| 欧美成人午夜免费视在线看片| 亚洲亚洲精品在线观看 | 亚洲国产精品久久久久秋霞影院 | 精品91免费| 欧美午夜精品理论片a级大开眼界| 久久精品99无色码中文字幕| 亚洲精品在线免费| 美女黄毛**国产精品啪啪| 亚洲网址在线| 日韩视频免费观看| 尤物99国产成人精品视频| 国产精品无人区| 欧美日韩视频一区二区| 蜜桃av综合| 久久免费高清视频| 欧美一区2区三区4区公司二百| 亚洲美女精品久久| 亚洲第一区色| 欧美成人性生活| 久久久之久亚州精品露出| 午夜精品久久| 亚洲在线观看视频网站| 夜夜夜精品看看| 亚洲激情图片小说视频| 有码中文亚洲精品| 国产中文一区二区三区| 国产九区一区在线| 亚洲第一在线视频| 久久综合狠狠综合久久激情| 久久精品卡一| 久久欧美肥婆一二区| 久久久久久久久综合| 欧美影视一区| 久久九九久久九九| 久久亚洲一区二区| 久久夜色精品国产| 另类酷文…触手系列精品集v1小说| 久久精品人人做人人爽| 久久久久久国产精品mv| 久久久精品网| 麻豆精品在线观看| 欧美激情第4页| 亚洲人成啪啪网站| 亚洲狼人精品一区二区三区| 99re6这里只有精品视频在线观看| 亚洲精品国产精品国自产观看浪潮| 亚洲国产精品va在线看黑人| 亚洲精选国产| 亚洲午夜激情网站| 欧美亚洲一区在线| 美女主播一区| 欧美日韩在线另类| 国产欧美日韩亚洲精品| 亚洲电影免费观看高清完整版在线观看 | 一区二区三区久久精品| 亚洲欧美日韩精品在线| 欧美在线免费视频| 欧美a级一区二区| 欧美日产一区二区三区在线观看| 欧美特黄一级大片| 国产欧美一区二区三区久久人妖| 韩日欧美一区二区| 亚洲精品一区二区三区99| 中文在线资源观看网站视频免费不卡 | 香蕉免费一区二区三区在线观看| 午夜精品视频| 欧美777四色影视在线| 亚洲精品在线看| 久久精品网址| 欧美日韩美女一区二区| 国产手机视频精品| 99re66热这里只有精品4| 亚洲欧美一区二区原创| 免费不卡视频| 亚洲一区三区视频在线观看| 久久性天堂网| 亚洲精品一区二区三区在线观看| 亚洲资源在线观看| 欧美成人精品在线播放| 国产欧美日韩精品专区| 亚洲麻豆视频| 麻豆成人在线播放| 一区二区三区免费看| 免费亚洲婷婷| 韩国免费一区| 午夜免费电影一区在线观看| 亚洲高清视频一区二区| 欧美在线免费看| 国产精品尤物| 亚洲视频精选在线| 亚洲精品国产视频| 久久在精品线影院精品国产| 国产日本欧洲亚洲| 亚洲欧美在线x视频|