美文网首页
性能优化

性能优化

作者: dandelionYD | 来源:发表于2019-04-12 10:55 被阅读0次

面试题

1.你在项目里面是怎么优化内存的?
2.优化你是从哪几个方面入手?
3.列表卡顿的原因可能有哪些?平时是怎么优化的?
4.遇到tableview卡顿?会造成卡顿的原因有哪些?

CPU和GPU

PerformanceOptimization_1.png

屏幕成像原理

PerformanceOptimization_2.png

卡顿产生的原因

PerformanceOptimization_3.png

卡顿优化 - CPU

PerformanceOptimization_4.png
图片处理:
- (void)image{
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.frame = CGRectMake(100, 100, 100, 56);
    [self.view addSubview:imageView];
    self.imageView = imageView;

    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        // 获取CGImage
        CGImageRef cgImage = [UIImage imageNamed:@"timg"].CGImage;

        // alphaInfo
        CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(cgImage) & kCGBitmapAlphaInfoMask;
        BOOL hasAlpha = NO;
        if (alphaInfo == kCGImageAlphaPremultipliedLast ||
            alphaInfo == kCGImageAlphaPremultipliedFirst ||
            alphaInfo == kCGImageAlphaLast ||
            alphaInfo == kCGImageAlphaFirst) {
            hasAlpha = YES;
        }

        // bitmapInfo
        CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host;
        bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst;

        // size
        size_t width = CGImageGetWidth(cgImage);
        size_t height = CGImageGetHeight(cgImage);

        // context
        CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, CGColorSpaceCreateDeviceRGB(), bitmapInfo);

        // draw
        CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);

        // get CGImage
        cgImage = CGBitmapContextCreateImage(context);

        // into UIImage
        UIImage *newImage = [UIImage imageWithCGImage:cgImage];

        // release
        CGContextRelease(context);
        CGImageRelease(cgImage);

        // back to the main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            self.imageView.image = newImage;
        });
    });
}


卡顿优化 - GPU

PerformanceOptimization_5.png

离屏渲染

PerformanceOptimization_6.png

卡顿检测

PerformanceOptimization_7.png

如: LXDAppFluecyMonitor


耗电的主要来源及优化

PerformanceOptimization_8.png PerformanceOptimization_9.png PerformanceOptimization_10.png

APP的启动优化

DYLD_PRINT_STATISTICS
DYLD_PRINT_STATISTICS_DETAILS (打印的更加详细)
一般在400ms内属于正常
  • App的启动
PerformanceOptimization_11.png PerformanceOptimization_12.png
  • App的启动 - dyld
PerformanceOptimization_13.png
  • App的启动 - runtime
PerformanceOptimization_14.png
  • App的启动 - main
PerformanceOptimization_15.png
  • App的启动优化
PerformanceOptimization_16.png

安装包瘦身

PerformanceOptimization_17.png

LSUnusedResources

https://www.jetbrains.com/objc/


LinkMap

PerformanceOptimization_18.png

LinkMap

相关文章

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

  • Android性能优化(下)

    Android性能优化 内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优...

网友评论

      本文标题:性能优化

      本文链接:https://www.haomeiwen.com/subject/zhiqwqtx.html