今天看到乙個對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...