Objective-C、C++和swift 的運行效率比較


自己做iOS開發,以后慢慢都要轉swift,前段時間看到網上的一個帖子,說swift的運行效率奇低,覺得自己有必要驗證一下。

我用了一個最簡單的加法運算,從0加到10000000,看三種語言的時耗。

swift 2.2:

import Foundation

let start = CFAbsoluteTimeGetCurrent()
var sum = 0
for i in 0...10000000{
    sum += i;
}
print("swift")
print(sum)
print(String(CFAbsoluteTimeGetCurrent() - start) + "s")

運行結果:

Objective-C 2.0:

 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc, const char * argv[]) {
 4     @autoreleasepool {
 5         NSInteger sum = 0;
 6         CFTimeInterval start = CFAbsoluteTimeGetCurrent();
 7         for (int i = 0; i <= 10000000; i++) {
 8             sum += i;
 9         }
10         CFTimeInterval end = CFAbsoluteTimeGetCurrent();
11         CFTimeInterval dur = end - start;
12         printf("Objective-C sum=%ld\n",sum);
13         printf("dur:%f s\n",dur);
14         
15     }
16     return 0;
17 }

運行結果:

C++ 11:

 1 int main(int argc, const char * argv[]) {
 2     chrono::system_clock::time_point startTime = chrono::system_clock::now();
 3     long sum = 0;
 4     for (int i = 0; i < 10000000; i++) {
 5         sum += i;
 6     }
 7     chrono::system_clock::time_point endTime = chrono::system_clock::now();
 8     cout << "C++ sum: " << sum << endl;
 9     cout << "duration: " <<(endTime - startTime).count()*1.0/CLOCKS_PER_SEC << "s" << endl;
10     return 0;
11 }

運行結果:

 

 運行結果可以發現:C++的效率比Objective-C 和 swift 的效率要高,C++ 只比 Objective-C 稍高一點,且二者的精度都比swift的低,要那么高精度有什么用,不知道蘋果的用意。CFAbsoluteTimeGetCurrent,函數的內部設置導致的把,是double類型的。C++運行速度是swift運行的兩倍,運行結果會和硬件也有關系,如CPU主頻等。當然swift還在持續改進,swifter們不要太頭大。持續關注吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM