[英]Efficient string concatenation in C
這是我的問題:我有一個數組,其中包含命令a [1],后跟幾個命令args a [2],a [3],...
我需要做的是以下幾點
cmd arg1 arg2 arg3
這是我要怎么做(偽代碼):
好吧,它起作用了,但是我想知道是否故意使用strcat實際上是有效的/正確的方法。
有什么建議么?
不,使用strcat()
效率不高,因為每次調用它都必須逐步遍歷字符串以查找結尾。
如果有的話,最好一次使用snprintf()
所有操作(並且可以在其中擠壓參數),或者直接使用指針操作自己做。
當然,要使這在實踐中起作用,您確實確實需要經常運行此命令。
如果您已經存儲了每個組件字符串的長度,則可以切換到使用具有正確指針偏移量的memcpy
而不是使用strcat
,因為strcat
不必查找字符串的末尾並測試每個源字符是否針對'\\0'
,但是除此之外,您還可以做很多事情,以使創建串聯的速度更快。
strcat()
以及標准庫中的所有字符串操作函數效率低下。 這是由於字符串存儲在C中的方式,即以零結尾,因此每個函數都必須通過遍歷每個字符來找到字符串的結尾。
無論如何,您正在做一個過早的優化:與命令執行相比,這里的多個strcat()調用執行起來確實非常快,因此您不必擔心連接方式的效率。
在優化代碼的一部分之前,您必須證明這是一個瓶頸,並且優化確實會縮短執行時間。 在大多數情況下,無需進行優化:根本不值得花費時間。
我會用sprintf做到的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.