OC中指針運(yùn)算效率(原創(chuàng))

我其實(shí)對C跟Objective-C都不太了解,我知道OC是C的超集,那么C中很多語法跟邏輯按道理來說都可以在OC來寫。

回到正題,比如有這樣一個(gè)運(yùn)算場景,有一個(gè)數(shù)組,里面有上億個(gè)數(shù)據(jù),需要逐一對里面的數(shù)據(jù)進(jìn)行運(yùn)算,現(xiàn)在用常規(guī)邏輯來試試:

NSMutableArray *ary=[NSMutableArray new];
NSInteger len=100000000;
for (int i=0; i<=len; i++) {
    [ary addObject:@(i)];
}
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
double total=0;
for (int n=0; n<len; n++) {
    total+=[ary[n] intValue];
}
NSLog(@"===:%f",total);
NSTimeInterval interval2 = [[NSDate date] timeIntervalSince1970];
NSLog(@"===interval2-interval:%f",(interval2-interval));

運(yùn)行輸出:

 ===:4999999950000000.000000
 ===interval2-interval:3.026512

我電腦是13寸MAC,CPU是2.9GHz intel core i5,我運(yùn)行了幾次,結(jié)果都是在3秒左右。

然后我們換成指針運(yùn)算的方式:

NSMutableArray *ary=[NSMutableArray new];
NSInteger len=100000000;
for (int i=0; i<=len; i++) {
    [ary addObject:@(i)];
}
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
double total=0;
void *pe=(__bridge void*)nm;
for (int n=0; n<len; n++) {
    total=total+[(__bridge_transfer id)pe intValue];
    pe+=16;
}
NSLog(@"===:%f",total);
NSTimeInterval interval2 = [[NSDate date] timeIntervalSince1970];
NSLog(@"===interval2-interval:%f",(interval2-interval));

輸出:

 ===:4999999950000000.000000
 ===interval2-interval:1.125193

也是運(yùn)行了好幾次,都是在1.1秒左右。

想想看,3秒跟1秒,這個(gè)在計(jì)算機(jī)里面可以說是天壤之別吧,值得我們思考。~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2、#import和#include的區(qū)別是什么?#import<> 跟 #import""有什么區(qū)別? .#im...
    AlanGe閱讀 382評論 0 0
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,844評論 0 4
  • 很多時(shí)候,人們對“浮躁”這個(gè)詞太熟悉,熟悉到不去關(guān)注它到底是什么意思。我特意查了一下釋義,“躁”的意思是:心里有眾...
    三城一郭閱讀 1,643評論 0 4
  • 文/無憂先生 在夜里哭泣,原因沒有你 我不想逃避,背叛我心忘記你 他倆多開心,他倆多歡愉 為何我活著會有這么多思緒...
    無憂先生閱讀 343評論 0 0
  • 在前篇重組/分解動畫完成后,我想到了一個(gè)最佳使用場景:CollectionView 添加和刪除項(xiàng)目時(shí)的動畫。效果如...
    seedante閱讀 12,262評論 4 38

友情鏈接更多精彩內(nèi)容