這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
今天拿golang 與 NET4.0 做了在字串方面的效能比較,看看誰牛!
一、讀取txt文字檔
GO的代碼:
readbuf, _ := ioutil.ReadFile(userFile) strcontent := string(readbuf)
NET的代碼:
string file = @"D:\txt\1.txt"; string strcontent = File.ReadAllText(file);
他們讀的都D:\txt\1.txt 檔案,大小是445M(如果檔案太大,超過了500M,GO進行讀取的時候會出現記憶體溢出的異常)
GO的讀取速度是在1秒左右,NET的讀取速度是在2秒左右
二、字串分割
主要對上面讀取出來的字串做Split分割的操作
go的代碼:arry:=strings.Split(strcontent,"0")
NET的代碼: var arry = strcontent.Split(new char[]{'0'});
go在分割上花了4秒左右,而NET則是1秒左右
三、字串尋找
主要是對字串做Index和LastIndex操作
go的代碼:strings.LastIndex(strcontent,"重慶")
net的代碼:int index = strcontent.LastIndexOf("重慶");
go在Index和LastIndex操作都是1秒內完成的,而net的Index是在1秒內完成,LastIndexOf則在2秒左右。
四、字串替換
主要是對字串做Replace操作
go的代碼:strings.Replace(strcontent,"重慶","廣州",-1)
net的代碼: strcontent.Replace("重慶", "廣州");
go啟動並執行時候報異常:記憶體溢出,NET則是在1秒左右
從上面得出go的處理字串上還不是很成熟,對於大的字串操作容易出異常,效能上的優勢也不是很明顯,在字串分割上效能比較差。
net的字串處理比較穩定,效能上也都還可以,所有的每個不同的操作所花的時間都相差不大,不會出現像go那樣有些操作效能好,有些操作效能差。
go畢竟還是1.1的版本,還有許多需要完善的地方,未來的潛力很大,只是現在這個階段還不太適合進入商業項目的開發,風險比較高。