剛剛入職,需要根據給定的二進位制檔案翻譯成大白話文,涉及到了很多優先順序、幀號等等,前期程式設計過程中沒有過多的注意加上沒有拿實際資料測試,大量使用了拼接字串(+、+=),在文字量or資料量很小的情況下執行很完美,幾乎沒什麼卡頓,最後拿採集到的實際資料(50m左右二進位制檔案)進行測試時,程式執行奇慢無比,甚至會導致奔潰。
尋求同事幫助,發現拼接字串這一項上耗用太多時間,以及gc(garbage collector)**不及時,輕輕鬆鬆程式就奔潰了。後來經過在網上查閱各類資料,發現在涉及大量字串拼接的時候可以使用system.text.stringbuilder類。
using system.text;
stringbuilder mystring =
newstringbuilder()
;//建立stringbuilder類的新例項
stringbuilder mystring1 =
newstringbuilder(50
);//該物件的容量
mystring1.capacity =25;
//也可以這麼設定容量
stringbuilder mystring2 =
newstringbuilder
("yes,i do.",50
);// 這樣也行
stringbuilder物件是動態物件,允許擴充它所封裝的字串中字元的數量,但是您可以為它可容納的最大字元數指定乙個值。此值稱為該物件的容量。容量和字元數量不一樣,當修改stringbuilder時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍。個人認為可設可不設。
方法名用途
將資訊追加到當前stringbuilder的結尾
用帶格式文字替換字串中傳遞的格式說明符
stringbuilder.insert
將字串或物件插入到當前 stringbuilder 物件的指定索引處
stringbuilder.remov
從當前 stringbuilder 物件中移除指定數量的字元
stringbuilder.replace
替換指定索引處的指定字元
using system.text;
stringbuilder mystring =
newstringbuilder()
;//建立stringbuilder類的新例項
mystring.
("新增的字串文字1");
mystring.
("新增的字串文字2");
string str1 =
"字串文字1"
;string str2 =
"字串文字2"
;string str3;
mystring.
("新增,新增"
,str1,str2)
;str3 = mystring.
tostring()
;
使用時記得tostring()。
對於少量固定的字串拼接可以使用「+」,如string str = 「a」 + 「b」 + 「c」,則csc編譯器會優化成 str = string.concat(「a」, 「b」, 「c」); 不會建立多個字串。如果寫成 string str = 「a」; s += 「b」; s += 「c」; 則會多建立3個新字串。
字串較少時,可以使用stirng.format()代替stringbuider。string.format() : 字串格式化,內部呼叫的是stringbuilder。
當操作大量字串時,比如在迴圈體內or大量字串拼接等等,一定要使用stringbuider!一定要使用stringbuider!一定要使用stringbuider!c#中stringbuilder的使用
c# .net string字串效率提高-字串拼接
c#**優化—字串拼接效率比較
c# 效能優化——三種字串拼接效率
c 拼接字串陣列 C 字串拼接
測試環境 unity2018.4 net4.x。需要注意.net4.x和3.5差異還是挺大的 寫的內容大部分網上已有,算是總結他人的成果,是 1 先說幾條結論 1 1 字串在c 中是高頻出現的 1 2 這類高頻出現方法 字段通常不是每幀的效能瓶頸。但有可能是瞬間卡頓的 1 3 字串記憶體開銷計算 2...
c 拼接字串陣列 陣列 字串拼接
題目描述輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。public class solution 交換的值不是拼接後的兩個相鄰字串 if before after for int i 0 i...
C 字串拼接顯示
常見的c字串拼接可能就是將條字串拼接在一塊新的記憶體區域內,並得到新記憶體區域的起始位址,這類操作可以自己寫,也可以使用c庫函式 c c extern char strcat const char dest,const char src 將src字串新增到dest字串末尾,並返回dest位址 但是此...