Just a Computer Graphics Studio & My Life

[iOS] 載入來源不同的影像

iOS已經寫好的方法,通常我們只要會使用就好,至於實作內容我們就姑且當作沒看到⋯⋯不過在一些情況下,我們很注重效能、效果、效率,原本微不足道的差異或錯誤,將造成「失之毫釐差以千里」的結果。我們就來試驗一下載入來源不同的影像吧~

ban5.png

拿它來作實驗!

如果只是載入一張影像,對於今日硬體設備如此強大而言,我們對記憶體使用量幾乎沒有感知,於是特別給它跑了好幾圈,這樣微小的差異將被放大出來~

我所使用的圖如上,它的容量只有30KB,名稱為ban5.png,各別跑10^6次,看記憶體容量會暴增到怎樣的程度,imageWithDataimageNamed來比試一下。

/**
 Theme: Read Image from Different Resource
 IDE: Xcode 5
 Language: Objective C
 Date: 102/12/24
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
-(void)getImageFromRemote
{// from web
    NSString *url = @"https://cg2010studio.files.wordpress.com/2011/12/ban5.png";
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
    for (int i = 0; i < 1000000; i++) {
        UIImage *image = [UIImage imageWithData:data];
        [self.imageView setImage:image];
    }
}

-(void)getImageFromLocal
{// from resource
    for (int i = 0; i < 1000000; i++) {
        UIImage *image = [UIImage imageNamed:@"ban5.png"];
        [self.imageView setImage:image];
    }
}

從Web抓,記憶體1.65GB; 從Resource抓,記憶體166MB。

後者名稱打:(皆可顯示影像)

  • ban5
  • ban5.png

記憶體都是近約166MB。

名稱打除了正確名稱外的副檔名如:(皆不能顯示影像)

  • ban5.jpg
  • ban5.pn

記憶體都是近約1.39GB。

如此看得出來實作內容所造成的差異。

其實這裡我苦惱的是,那些沒有指標的記憶體不知道如何釋放⋯⋯

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: