카테고리 없음

<ios프로젝트2> UICollectionView가 이미지 보여주는게 너무 느리다.

studying develop 2020. 3. 19. 18:58

UICollection is very slow in showing Image with Swift 3

 

비슷한 질문인거 같다.

 

 

DispatchQueue.global(qos: .background).async { // load data in back ground mode so that main thread can be safed.
let url = NSURL(string: list.poster_image_url)
            let data = NSData(contentsOf:url! as URL)
            var image = UIImage(data: data as! Data)
    DispatchQueue.main.async(execute: {
                                cell.movieTitle.text = list.name
                cell.imageView?.image = image
                            }) 
self.images_cache[imageName!] = image       
        }

 

로딩하는건 qos를 백그라운드로 하라는거 같다. 메인말고!!

뷰세팅은 메인에서 하라는건가 그럼?

 


ui는 메인에서하고, 가져오는건 백그라운드에서 했다.

그랬을때 아래 코드 시간을 측정했는데 종종 오래걸리는 놈이 있는줄 알았는데 아니였다. 소수점이였네.

 

        if let JpgCacheImage = CacheData.JpgCache.object(forKey: imageUrl as NSString){
            //get this time
            let startTime = CFAbsoluteTimeGetCurrent()
            self.galleryImageView.image = JpgCacheImage
            
            print("cache image used")
            
            let endTime = CFAbsoluteTimeGetCurrent()
            
            print("in settinDetail taken time : \(endTime - startTime)")
            
        }

 

in settinDetail taken time : 0.00023698806762695312
cache image used
in settinDetail taken time : 0.00015997886657714844
cache image used
cache image used
cache image used
in settinDetail taken time : 0.00011599063873291016
cache image used
cache image used
in settinDetail taken time : 0.00012803077697753906
cache image used
cache image used
in settinDetail taken time : 0.00028002262115478516
cache image used
cache image used
in settinDetail taken time : 0.00020194053649902344
cache image used
cache image used
in settinDetail taken time : 0.0001310110092163086
cache image used
cache image used
in settinDetail taken time : 0.00010800361633300781
cache image used
cache image used
in settinDetail taken time : 0.00014793872833251953
cache image used
cache image used
in settinDetail taken time : 0.0001220703125
cache image used
cache image used
in settinDetail taken time : 0.00014007091522216797
cache image used
cache image used
in settinDetail taken time : 0.00013899803161621094
cache image used
cache image used
in settinDetail taken time : 5.0067901611328125e-05
cache image used
cache image used
in settinDetail taken time : 6.401538848876953e-05
cache image used
cache image used
in settinDetail taken time : 0.0004420280456542969
cache image used
cache image used
in settinDetail taken time : 0.0004889965057373047
cache image used
cache image used
in settinDetail taken time : 0.0002859830856323242
cache image used
cache image used
in settinDetail taken time : 0.0002779960632324219
cache image used
cache image used
in settinDetail taken time : 0.0003930330276489258
cache image used
cache image used
in settinDetail taken time : 0.0002859830856323242
cache image used
cache image used
in settinDetail taken time : 0.0004800558090209961
cache image used
cache image used
in settinDetail taken time : 0.00021898746490478516
cache image used
cache image used
in settinDetail taken time : 0.0004420280456542969
cache image used
cache image used
in settinDetail taken time : 7.402896881103516e-05
cache image used
cache image used
in settinDetail taken time : 0.00011706352233886719
cache image used

 


GCD 공부중...

 

group.enter(), group.leave()를 안하는게 더 빠른데? 아니네, 케바케네.

근데 자동 종료되면 notify가 자동으로 되나?

 

음 이 문제 보다. image loading time이 매우 길다. 6초 정도...