当前位置: 首页 > news >正文

传奇游戏代理0加盟费aso排名优化知识

传奇游戏代理0加盟费,aso排名优化知识,网站建设如何描述,厦门网直播2019独角兽企业重金招聘Python工程师标准 一个可用的案例 现在我们已经对Instruments中动画性能工具非常熟悉了#xff0c;那么可以用它在现实中解决一些实际问题。 我们创建一个简单的显示模拟联系人姓名和头像列表的应用。注意即使把头像图片存在应用本地 一个可用的案例 现在我们已经对Instruments中动画性能工具非常熟悉了那么可以用它在现实中解决一些实际问题。 我们创建一个简单的显示模拟联系人姓名和头像列表的应用。注意即使把头像图片存在应用本地为了使应用看起来更真实我们分别实时加载图片而不是用–imageNamed:预加载。同样添加一些图层阴影来使得列表显示得更真实。清单12.1展示了最初版本的实现。 清单12.1 使用假数据的一个简单联系人列表 #import ViewController.h#import QuartzCore/QuartzCore.hinterface ViewController () UITableViewDataSourceproperty (nonatomic, strong) NSArray *items; property (nonatomic, weak) IBOutlet UITableView *tableView;endimplementation ViewController- (NSString *)randomName {NSArray *first  [Alice, Bob, Bill, Charles, Dan, Dave, Ethan, Frank];NSArray *last  [Appleseed, Bandicoot, Caravan, Dabble, Ernest, Fortune];NSUInteger index1  (rand()/(double)INT_MAX) * [first count];NSUInteger index2  (rand()/(double)INT_MAX) * [last count];    return [NSString stringWithFormat:% %, first[index1], last[index2]]; }- (NSString *)randomAvatar {NSArray *images  [Snowman, Igloo, Cone, Spaceship, Anchor, Key];NSUInteger index  (rand()/(double)INT_MAX) * [images count];    return images[index]; }- (void)viewDidLoad {[super viewDidLoad];    //set up dataNSMutableArray *array  [NSMutableArray array];    for (int i  0; i  1000; i) {//add name[array addObject:{name: [self randomName], image: [self randomAvatar]}];}self.items  array;    //register cell class[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:Cell]; }- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return [self.items count]; }- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    //dequeue cellUITableViewCell *cell  [self.tableView dequeueReusableCellWithIdentifier:Cell forIndexPath:indexPath];    //load imageNSDictionary *item  self.items[indexPath.row];NSString *filePath  [[NSBundle mainBundle] pathForResource:item[image] ofType:png];    //set image and textcell.imageView.image  [UIImage imageWithContentsOfFile:filePath];cell.textLabel.text  item[name];    //set image shadowcell.imageView.layer.shadowOffset  CGSizeMake(0, 5);cell.imageView.layer.shadowOpacity  0.75;cell.clipsToBounds  YES;    //set text shadowcell.textLabel.backgroundColor  [UIColor clearColor];cell.textLabel.layer.shadowOffset  CGSizeMake(0, 2);cell.textLabel.layer.shadowOpacity  0.5;    return cell; }end   当快速滑动的时候就会非常卡见图12.7的FPS计数器。 图12.7 滑动帧率降到15FPS 仅凭直觉我们猜测性能瓶颈应该在图片加载。我们实时从闪存加载图片而且没有缓存所以很可能是这个原因。我们可以用一些很赞的代码修复然后使用GCD异步加载图片然后缓存。。。等一下在开始编码之前测试一下假设是否成立。首先用我们的三个Instruments工具分析一下程序来定位问题。我们推测问题可能和图片加载相关所以用Time Profiler工具来试试图12.8。 图12.8 用The timing profile分析联系人列表  -tableView:cellForRowAtIndexPath: 中的CPU时间总利用率只有~28%也就是加载头像图片的地方非常低。于是建议是CPU/IO并不是真正的限制因素。然后看看是不是GPU的问题在OpenGL ES Driver工具中检测GPU利用率图12.9。 图12.9 OpenGL ES Driver工具显示的GPU利用率 渲染服务利用率的值达到51%和63%。看起来GPU需要做很多工作来渲染联系人列表。 为什么GPU利用率这么高呢我们来用Core Animation调试工具选项来检查屏幕。首先打开Color Blended Layers图12.10。 图12.10 使用Color Blended Layers选项调试程序 屏幕中所有红色的部分都意味着字符标签视图的高级别混合这很正常因为我们把背景设置成了透明色来显示阴影效果。这就解释了为什么渲染利用率这么高了。 那么离屏绘制呢打开Core Animation工具的Color Offscreen - Rendered Yellow选项图12.11。 图12.11 Color Offscreen–Rendered Yellow选项 所有的表格单元内容都在离屏绘制。这一定是因为我们给图片和标签视图添加的阴影效果。在代码中禁用阴影然后看下性能是否有提高图12.12。 图12.12 禁用阴影之后运行程序接近60FPS 问题解决了。干掉阴影之后滑动很流畅。但是我们的联系人列表看起来没有之前好了。那如何保持阴影效果而且不会影响性能呢 好吧每一行的字符和头像在每一帧刷新的时候并不需要变所以看起来UITableViewCell的图层非常适合做缓存。我们可以使用shouldRasterize来缓存图层内容。这将会让图层离屏之后渲染一次然后把结果保存起来直到下次利用的时候去更新见清单12.2。 清单12.2 使用shouldRasterize提高性能 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    //dequeue cellUITableViewCell *cell  [self.tableView dequeueReusableCellWithIdentifier:CellforIndexPath:indexPath];...    //set text shadowcell.textLabel.backgroundColor  [UIColor clearColor];cell.textLabel.layer.shadowOffset  CGSizeMake(0, 2);cell.textLabel.layer.shadowOpacity  0.5;    //rasterizecell.layer.shouldRasterize  YES;cell.layer.rasterizationScale  [UIScreen mainScreen].scale;    return cell; }   我们仍然离屏绘制图层内容但是由于显式地禁用了栅格化Core Animation就对绘图缓存了结果于是对提高了性能。我们可以验证缓存是否有效在Core Animation工具中点击Color Hits Green and Misses Red选项图12.13。 图12.13 Color Hits Green and Misses Red验证了缓存有效 结果和预期一致 - 大部分都是绿色只有当滑动到屏幕上的时候会闪烁成红色。因此现在帧率更加平滑了。 所以我们最初的设想是错的。图片的加载并不是真正的瓶颈所在而且试图把它置于一个复杂的多线程加载和缓存的实现都将是徒劳。所以在动手修复之前验证问题所在是个很好的习惯 总结 在这章中我们学习了Core Animation是如何渲染以及我们可能出现的瓶颈所在。你同样学习了如何使用Instruments来检测和修复性能问题。 转载于:https://my.oschina.net/u/2438875/blog/508123
http://www.yutouwan.com/news/178883/

相关文章:

  • 网站建设的工作职责做电脑系统的网站好
  • 网页制作和网站建设网站小图标素材
  • 站优云seo优化互联网营销是做什么
  • 网站下雪特效在哪个网站做民营企业申报
  • 10个国内建筑网站北京工商局网站如何做股东变更
  • 淘宝客网站一定要备案吗用html
  • 低价网站建设怎么样建设手机银行注销网站
  • 网站开发主框架一般用什么布局长春网站建设团队
  • 电商设计网站有哪些功能模块做网站属于什么费用
  • 做网站那个搜索引擎好WordPress中文标题不显示
  • 网站建设与维护大作业河南省建设厅专业业务系统网站
  • 织梦搞笑图片网站源码网站设计价钱
  • 企业营销型网站建设的可行性分析网络营销方式有哪些分类
  • 网站建设步骤图项目管理软件开发案例
  • 大型做网站记事本做网站怎么加图片
  • wdcp创建多个网站网站建设贰金手指下拉贰壹
  • 佛山乐从网站建设网站开发的就业前景如何
  • 汤原建设局网站心理咨询网站
  • 怎么提升网站的流量吗网站开发顶岗实习报告
  • 建站平台 绑定域名建网站必须要服务器吗
  • 网络优化公司网站代码网站建设中网站制作包括哪些内容
  • 律师做几个网站wordpress qq邮件订阅
  • 福州仓前网站建设做网站需要什么专业
  • 河南省做网站的公司东阿聊城做网站的公司
  • 如何进行网页设计和网站制作 163com箱登录
  • app开发企业网站建设仿58网站源码
  • 做的好的商城网站设计网站建站行业新闻
  • 中国黑色网站模板天津的网站建设公司
  • 四川省住房和城乡建设厅网站不见了宝安公司网站建设比较好的
  • 深圳做棋牌网站建设哪家服务好网站被人抄袭怎么办