C 的string逐位處理效率比較

2021-06-09 16:06:22 字數 869 閱讀 2857

今天看到乙個對string做逐位處理的**,我看見**使用指標來指向string,我就在想為什麼不用中括號,型如string s; s[i] = ....; 這種操作。

想到這個**作者一向以效率優先考慮,於是我測試了一下效率,果不其然。。。哈哈

#include #include #include #include #include #include #include using namespace std;

static unsigned long gettimemicros()

string forcelower(string astr)

}return astr;

}string forcelower2(string astr)

}return astr;

}int main()

end = gettimemicros();

cout << "做10萬次轉小寫操作(用指標),耗時(微秒): " << end - start << endl;

start = gettimemicros();

for (int i = 0; i < 100000; i++)

end = gettimemicros();

cout << "做10萬次轉小寫操作(用中括號),耗時(微秒): " << end - start << endl;

return 0;

}

輸出:做10萬次轉小寫操作(用指標),耗時(微秒): 31013

做10萬次轉小寫操作(用中括號),耗時(微秒): 81645

可以看出來,有效率是三倍的差距。在做高效能的程式,只有每個細節都全力保證高效能,才能為實現整體高效能添磚加瓦!!

逐位處理長串數字需要注意的

之前在做pat的時候,總是會遇到有很長的數字要逐位處理,這種時候一般有兩種方法 1.用int,long,以及對應的unsighed型別儲存 long number scanf ld number for int i 0 i 2.用字串接收數字,字串中的每一位字元對應數字的每一位數,利用ascii表得...

c 中string拼接的效率分析

通過unity profiler測試的 及執行結果 using unityengine using unityengine.profiling using system.text if unity 5 5 or newer using tprofiler unityengine.profiling....

C語言程式設計題目(5)單字元的位處理 資料加密

這道題目理解起來其實並不難,關鍵是加密演算法的實現,這裡先把關鍵函式貼上來 1 char charconv char mark 2值得注意的是呼叫了自定義函式my2pow,返回2的x冪次值,之所以不用系統的pow函式是為了避免型別轉換的麻煩 引數 返回值都是double型別 1 int my2pow...