Tag: 性能

Swift – 性能明智 – 比较两个数组,并在两者中获得每个和共同的差异

希望你有一个美好的一天。 我试图了解什么是最快的方法来做到以下几点: 假设我有这两个Arrays : var firstArray = ["a","b","c"] var secondArray = ["a","d","e"] 我想得到一个输出: 1) 在 firstArray 但在 secondArray 没有的对象Array 。 1) 在 secondArray 里面 但在 firstArray 里 没有的对象Array 。 3) firstArray和secondArray之间的公共对象secondArray 。 所以基本上输出将是: 1) ["b","c"] 2) ["d","e"] 3) ["a"] 这里的主要问题是要了解什么是最有效的方法。 非常感谢你!

MKOverlayView性能

我在地图上添加了大约3000个MKOverlay,正如你所想象的那样,有时需要一些时间,大约有八秒。 我正在寻找一种使用线程来提高性能的方法,因此用户可以在添加覆盖图时移动地图。 优选地,叠加层将按顺序添加,从地图区域内的开始。 我已经尝试了一些与GCD有关的事情: – (MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id)overlay { __block MKPolylineView* polyLineView; //do the heavy lifting (I presume this is the heavy lifting part, but // because this code doesn't compile, I can't actually *test* it) // on a background thread dispatch_async(backgroundQueue, ^ { polyLineView = [[[MKPolylineView alloc] initWithPolyline:overlay] autorelease]; [polyLineView setLineWidth:11.0]; //if the title is […]

核心数据performance:对更多对多关系的预测

使用SQL数据存储,我有这样一个模型: 类别< – >>项目 collections< – >>项目 品牌< – >>项目 每个左侧的实体都有一个多对多的关系,这个关系命名为Item到Item实体。 每一个分别与一个项目关系类别 , 收集 品牌和品牌相反。 我想用至less一个与特定集合和类别相关的项目获取所有品牌对象。 在自然语言中,我需要具有特定类别和特定集合的所有品牌的商品。 给定对象Category * myCategory和Collection * myCollection ,我用这种方式在Brand实体上构build一个谓词: NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"(ANY items.category == %@) AND (ANY items.collection == %@)",myCategory,myCollection]; 我得到正确的结果。 问题是性能。 太慢了! 我简化了三个层次的问题! 我们来考虑iOS多级别目录中的四个级别:应用程序显示可用类别,用户select类别,应用程序显示该类别中的集合,用户select集合,应用程序显示该集合中的品牌(以及已select的类别),用户select一个品牌,该应用程序显示在该品牌,集合和类别的材料… 说实话,我使用NSCompoundPredicate把每个用户的select放在子类中,dynamic构build最终的谓词。 但这个问题的目的并不重要。 在sql数据存储中, Item实体有超过30,000个(30k)的对象,而使用AND之间的关系非常缓慢(在上面的例子中,我注意到7-10秒的滞后时间来显示品牌)。 我会尽力: – 从类别,collections品和品牌实体中删除物品关系 – 在物品实体上,将类别 , collections 品牌和品牌关系replace为“category_id”,“collection_id”和“brand_id”等属性上的提取属性。 – 使用关键path或谓词来获取品牌而不使用多对多的关系。 […]

绘制backgroundcolor&边框与背景PNGs

我想为我的iPad应用程序的大多数button特定的RGBhex颜色。 我所做的是:我已经在我的项目中实现了UIButton子类,它模拟所需的背景颜色,文本颜色和button边框 – 然后我在我需要UIButton项目中随处使用它。 我的用户界面/用户体验devise师不提供PNG,他坚持我模仿相同颜色的网站button有hex代码。 我更多的是一个背景PNG的球迷。 现在,这个问题与编程的关系,你可能想知道的是,我正在访问.layer.borderWidth & .layer.borderColor属性,这个属性最终被无处不在使用。 那么,这种方法是否对应用程序有所帮​​助,而不是使用背景PNG? 注意 (如果相关) :所有button的大小相同。

如何发现如果OpenGL ES帧速率是口吃 – 没有仪器?

一位朋友问我这个有趣的问题,我没有回答这个问题。 他正在制作一个游戏,有时候他在帧率方面落后了。 就好像有10个或更多的帧被丢弃。 运行循环function由CADisplayLink调用。 有没有一种方法来告诉编程如果帧速率滞后? 我只是测量运行循环函数中的时间,然后检查它是否大于应该的值。 如果是的话,请记住有一个滞后。 在旅途中的各种设备上testing可能会有用。 你如何去跟踪这个没有连接到Xcode?

为什么PhoneGap看起来比Titanium更快?

我试图衡量一些跨平台解决scheme的执行性能,其中包括:Titanium和PhoneGap。 所以这里是我的性能testing器的titanium版本的一个例子,它非常简单,但我只是想了解我的代码执行速度有多快: var looplength; var start1; var start2; var end1; var end2; var duration1; var duration2; var diff; var diffpiter; var power; var info; for (power = 0; power < 24; power++) { looplength = Math.pow(2, power); start1 = new Date().getTime(); for (iterator = 0; iterator < looplength; iterator++) {a=iterator;b=iterator;} end1 = new Date().getTime(); start2 […]

Swift Dictionary荒谬的内存使用

我在其中一个应用程序中遇到了一个有趣的问题。 当多次访问Dictionary ,我的应用程序的高速caching的内存使用量在几秒钟内就超过了千兆字节。 这里是一些示例代码来显示问题。 override func viewDidLoad() { let dictionary = ["key1":"value1"] let nsKey: NSString = "key1" let swiftKey = nsKey as String for _ in 0 … 10000000 { dictionary[swiftKey] } } 反复访问字典会导致内存爬升,直到循环结束。 我看着仪器,看到了很多string分配。 原来使用NSString是这个问题。 将nsKey更改为像这样的swift String修复了这个问题: let nsKey = "key1" 还将字典更改为NSDictionary可以解决此问题: let dictionary: NSDictionary = ["key1":"value1"] 有谁知道为什么访问字典使用铸造的NSString导致如此多的堆分配,除了上面描述的还有其他修复吗? 这里有一些照片。 它看起来像幕后的string正在被分配和设置为autorelease (或者我读取错误的数据?)这可能是为什么内存使用不断分配,然后在以后的时间stream失? 如果这是真的,这应该被视为一个“错误”? 这个问题发生在OS X和iOS上。

反别名,UIImage和性能

我有一个UIImage加载到UIImageView 。 UIImage比UIImageView ,它已经缩小到适合。 显然缩小的UIImage显示锯齿状的边缘。 在性能方面反对这个图像的最好方法是什么? 我已经看到了使用drawInRect这个方法,但是我也读过了drawInRect并没有给出最好的性能 。 我已经阅读了几篇不同的文章,并且我自己尝试了一些方法。 但在阅读了关于使用UIViews和Core Graphics之间性能差异的更多 文章之后,我想知道哪种抗锯齿方法能够提供最佳性能?

预先填充UICollectionView单元重用队列

问题 我有一个应用程序与一个单一的UICollectionView ,这是第一次口吃,我滚动它。 我已经把源代码缩小到新的单元格(2)正在被创build的事实(使用initWithFrame:因为没有单元格躺在被重用。 在第一次滚动之后,重用队列不是空的,单元格可以重复使用,不会出现口吃。 黑客 所以我已经能够在iOS运行时头文件中的私有方法的帮助下解决这个问题: – (void)_reuseCell:(id)arg1; 我的假设是,这是细胞被添加到重用队列中的地方。 使用这个未logging的方法的黑客看起来像这样: int prefillCellCount = 10; NSMutableArray *cells = [[NSMutableArray alloc] initWithCapacity:prefillCellCount]; for (int i=0; i<10prefillCellCount i++) { UICollectionViewCell *cell = [self.gridView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; [cells addObject:cell]; } for (UICollectionViewCell *cell in cells) { [self.gridView _reuseCell:cell]; } 黑客的作品! 滚动时没有口吃。 问题 我不认为我能通过这个黑客过去的App Store审查。 有没有办法做到这一点,而不使用无证方法? 如果没有,是我唯一的手段只是混淆黑客?

为什么在Web视图中渲染组件速度较慢?

根据对这个问题过于宽泛的反馈,我正在缩小这个问题的范围,并将原始问题保留在结论中,以保留下面Jim的答案的含义,这是非常有用的和内容丰富的。 这是一个更具体的问题版本: 执行诸如渲染图像,文本或UI元素或从web视图容器(用于Android的WebView和iOS的UIWebView / WKWebView)发送web服务请求(使用AJAX)的任务比通过其他本地组件。 这是为什么? Web视图容器本身的初始加载是缓慢还是有其他技术原因? 我认为最终,在较低的层次上,相同的本地代码正在执行这些function。 为什么使用Web视图时会有性能损失? 人们经常指出,在Web视图中呈现的混合移动应用程序比原生应用程序慢。 我很好奇,对于一个简单的电子商务types的应用程序来说,无论如何通常从服务器加载产品数据并且应用程序具有简单的用户界面。 具体来说,我感兴趣的是为什么在Web视图组件中比起native来说下面的东西会慢一些: 用户界面:如果用户界面是使用HTML5组件和简单的JavaScript开发的,并且在应用程序安装时保存在文件系统上,那么呈现它们会比呈现本地用户界面组件慢吗? 如果答案是肯定的,我很好奇为什么。 为什么在iOS应用程序中加载button的速度会更快,但是iOS应用程序中embedded的Web视图的加载速度会更慢? 图像:如果与HTML页面相关的图像存储在本地文件系统中,渲染它们会比与本机应用程序相关的图像慢吗? 如果是这样,我会很惊讶,真的想知道原因。 从服务器加载的数据:从服务器加载的数据(json,XML等)如果加载使用AJAX与本机应用程序使用的任何方法加载速度较慢? 怎么样从服务器加载的图像? 我想networking速度会成为限制因素,但我可能是错的。 是否有一个简单的电子商务应用程序的其他部分,我失去了一个本地应用程序将有一个清晰的性能优势比Web视图应用程序? 此外,Facebook和LinkedIn从网页浏览型应用程序切换到本地网站所获得的巨大优势是什么? 我看到它的方式,他们的应用程序具有简单的用户界面(与游戏相比),大多数数据在访问时通过networking加载。 我错过了什么吗? 最后,本地平台所有者(苹果和谷歌)是否有利于有意拖慢Web视图types应用程序,推动其平台向前发展? (我很难相信谷歌会这样做,但是你永远不知道苹果)。 编辑:我的问题可能太长和广泛。 问题的要点是:做一些简单的事情,比如从文件系统中显示一个图像,或者在Web视图中花费更长的时间比使用另一个本地组件更长时间? 如果是这样,为什么?