看板 C_Sharp 關於我們 聯絡資訊
事情是這樣的,在下正在的寫的專案中有一個需要大量取代字元的部分, 大概就像是,一個字串裡面的a通通變成b,b都變成c...等等, 我原本的做法是,用一個for迴圈從頭到尾給它全部跑一遍, 遇到a就+=一個b到另一個儲存用的字串...這樣的做法。 但這樣的寫法我一直都覺得毛毛的,好像太笨,效能會太差, 後來經過老師的提點,發現還有Replace這個指令可以用, 於是乎我把程式改為Replace的做法試試看, 先StringBuilder一個出來, ToLower (這個專案大小寫不重要,重要是一定要取代乾淨) 接著就是數行Replace指令 (要取代的項目還挺多的) 我讓字串都先取代成大寫,這樣就不怕重複取代到, 最後再補一個ToLower,完成。 程式碼變得清爽很多(原先的迴圈+大量if else判定超肥), 但是!!悲劇的發現,執行效能不但沒有變快,反而似乎還更低了?! 我是不知道怎麼詳細的測執行速度啦, (看板上都可以報出0.xxxxxxxxxxxxxxx的超詳細數值) 不過資料量一大,勝負還蠻明顯的,原先需要跑個兩秒, 改成Replace就跑到三秒+了。請益,是不是這樣的Replace寫法不適, 或Replace本就沒辦法很快...? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.169.34.157
Laluth:測效能用Stopwatch 07/20 17:06
chentsungmin:試試 Regex.Replace方法 07/23 15:55
stu87616:不是欸@@ 我要取代的字元都已經很明確了 07/23 16:17
stu87616:加上Regex不會更快吧 07/23 16:18
yeo1987:字元修改前後長度一樣的話, 指標 + hash 跑迴圈? 07/23 16:31
chchwy:Regex鐵定是最慢的,這方法就不用看了... 07/23 19:42
stu87616:字元修改長度不是一樣的 所以不可行.. 07/24 09:13
leekp:.Replace("b","c").Replace("a","b) !? 08/02 12:25