Tag: 性能

为什么Rand()总是生成具有固定唯一组数的随机数?

即使如此,我再次执行下面的代码,并再次获得相同的输出。 但是,我认为它不应该: int ObjectCount =500; NSMutableArray *mut_arr = [[NSMutableArray alloc]initWithCapacity:0]; for (int i = 0; i<ObjectCount ; i++) { [mut_arr addObject:[NSNumber numberWithInt: rand()%ObjectCount]]; } NSSet* uniqueSet = [NSSet setWithArray:mut_arr]; NSLog(@"Array of %d objects generates %d Unique Objects",[mut_arr count],[uniqueSet count]); 输出如下: 500个对象数组生成317个唯一对象 在这里,由于数组包含随机数,所以对于相同的ObjectCount,唯一设置计数应该再次相同。

在UITableView图像上慢速滚动

我显示了很多直接从我的应用程序加载的图像(未下载)。 当我第一次滚动时,我的表格视图很慢。 所有我的细胞显示后,它变得光滑。 我不知道为什么。 我有一个我加载在viewDidLoad中的UIImage数组。 然后在我的tableview委托,我只是在给定的索引path获取图像,并将其设置为我的单元格的UIImageView。 你知道我怎样才能提高表演?

每次启动时UIWebView白屏,同时预加载所有选项卡

在提出我的问题之前,我想提一提,我尝试在这里和这里寻找解决scheme。 我正在创build一个混合应用程序,它使用本机UIWebView呈现响应式devise的Web应用程序。 以下是问题描述: 1.我有一个UITabBarController 。 2.每个选项卡都有一个UIWebView 。 3.我必须预载所有标签。 4.我显示一个UIActivityIndicator直到内容加载到第一个选项卡上。 5.白屏出现约8-10秒 ,然后内容开始出现。 我会很高兴看到这个时间成为2-4秒 。 以下是我的实施: [self performSelectorOnMainThread:@selector(loadAllTabs) withObject:nil waitUntilDone:YES]; -(void) loadAllTabs { for(UIViewController * viewController in self.viewControllers){ if(![[NSUserDefaults standardUserDefaults]boolForKey:@"isSessionExpired"]) { if((int)[self.viewControllers indexOfObject:viewController] != 4) { viewController.tabBarItem.tag = (int)[[self viewControllers] indexOfObject:viewController]; [viewController view]; } } } } 在WebView控制器的viewDidLoad我有: [_tgWebView loadRequest:[NSURLRequest requestWithURL:homeURL]]; 我期待SuppressesIncrementalRendering ,但由于我预载所有标签,这是行不通的。 由于我的应用程序支持iOS 7+ ,因此WKWebView无法在这里应用。 我也想过增加发射图像的时间,但得知这不是一个好的做法。 […]

衡量强/弱ARC引用的影响 – 对执行时间的影响

我想知道是否(和多less)强/弱引用pipe理对代码执行有影响,尤其是当释放许多类可能具有弱引用的对象时。 起初我把它误认为ARC,但事实并非如此。 关于同一个话题也有类似的问题 ,但是他们没有研究性能影响或者试图从中得到一些数据。 让我清楚一点:我不是说ARC或者强/弱可能会对性能造成不好的影响,或者说“不要使用这个”。 我喜欢这个。 我只是好奇它有多高效,以及如何确定它的大小。 我把这段代码放在一起,以便了解强/弱引用在执行时的性能影响。 import Foundation class Experiment1Class { weak var aClass: Experiment1Class? } class Experiment2Class { var aClass: Experiment2Class? } var persistentClass: Experiment1Class? = Experiment1Class() var nonWeakPersistentClass: Experiment2Class? = Experiment2Class() var classHolder = [Experiment1Class]() var nonWeakClassholder = [Experiment2Class]() for _ in 1…1000 { let aNewClass = Experiment1Class() aNewClass.aClass = persistentClass […]

手指画的效率问题

我想开发一个应用程序来绘制触摸iPhone屏幕search如何做到这一点我已经find了一个示例配方(09-油漆)到第七章的埃里卡·萨申iPhone开发者食谱3.0代码示例 。 在这个例子中,你可以在这行下面看到,屏幕上的触摸被存储到一个NSMutableArray以便使用UIView方法drawRect绘制。 有了这个解决scheme,我有一个问题时, points组保持重要的点数。 我怎么解决这个问题? 如何在不清除UIView情况下调用drawRect方法,并只添加最后一行(已绘制的行和points组的最后一个点之间)? // Start new array – (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event { self.points = [NSMutableArray array]; CGPoint pt = [[touches anyObject] locationInView:self]; [self.points addObject:[NSValue valueWithCGPoint:pt]]; } // Add each point to array – (void) touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event { CGPoint pt = [[touches anyObject] locationInView:self]; […]

移动networking性能:将数据从networking服务器传输到手机的最有效的数据types是什么?

问:在networking服务器(/ other?)和手机(即ios / android / other)之间传输数据时,哪种数据types是最有效/最快速的? JSON? XML? HTML? 问:应该使用哪种服务器技术? php + mysql? 问:应该使用什么样的API? RESTtypes的? RPC? 任何虽然?

epub阅读器来处理大的html文件

我正在IOS平台上创build一个epub阅读器。 基本上,它使用UIWebview来显示epub文件,我读了开源的Aepubreader的代码,发现它非常好,但不是基于文本。 我想使它基于文本和页面转向像iBooks。 所以我尝试改进Aepubreader 基本的逻辑stream程是 解压epub文件。 parsing元数据(opf,toc文件)。 通过UIWebView加载html文件并将其绑定到UIPageViewController 除了表演,一切都很好。 假设epub有十个html文件(file1 – file10)。 file1〜file9是小尺寸(如100k),但是文件10是1MB。 当我读到file10的第一页时,加载这个1MB文件花费了很多时间。 这是可以接受的,因为这是第一次。 但是当我转到file10的第二页。 我仍然需要再次加载这个1MB的文件,然后调用一个js按页码滚动offsetx(无法为每个Apple官方文档复制一个UIWebView)。 这是不可接受的。 当这个文件翻页时,我不能让用户总是等待。 最后我得到了一个解决scheme,以避免重新加载这个大文件。 当我得到第一页的文件10显示。 我将这个可见的视图作为一个图像捕获,但不显示它,当我转到下一页,我显示这个图像的page1,同时,我把UIwebview从页面1到页面2。 像Page2.view.addSubview(webviewfrompage1)。 这将避免重新加载webview并节省时间。 但是,另一个问题来了,Page2.view.addSubview(webviewfrompage1)将导致page2 layoutsubview,这意味着page2将重绘其视图以显示webview内容。 这是一个1MB的文件内容,重绘仍然花费时间,它会卡住翻页animation。 我搜查了很多,但仍然没有解决办法。 我检查的iBooks,它的作品完美。 那大文件是怎么回事? 请让我知道,如果你有任何想法。 或其他解决scheme来处理epub显示。 提前致谢 ————————————————– ——————————————- 回复torazaburo: 是的,你是对的。 我打算使用window.scroll(offsetX,offsetY)来获取下一页的内容。 但这还不够。 我想要像ibooks那样的翻页animation。 所以我使用UIPageViewController。 使用UIPageViewController意味着我必须实现以下两个代表 – (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {} (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { […]

iOS:阅读NSUserDefaults vsvariables的速度

我有一个应用程序,它会立即调用variables。 这些variables存储在NSUserDefaults 。 我想知道NSUserDefaults存储在哪里? 如果我直接调用NSUserDefaults而不是使用variables。 哪个更快? variables或NSUserDefaults 。 因为使用variables来存储NSUserDefaults将是使用更多内存的原因。

CoreAnimation性能分析 – 带有CAShapeLayer的CAReplicatorLayer

我正在制作一个依赖CoreAnimation的应用程序。 它有一个CAReplicatorLayer和一个CAShapeLayer作为子图层。 当有12个重复,然后animation的path(touchMoved改变它)一旦graphics在屏幕上变大(大约12-20帧),FPS显着减less。 时间剖析器显示大约10%的CPU利用率,Open GL ES驱动器剖析器报告大约90-97%的“Render Utilization”和40-50%的“Tiler Utilization”。 本指南解释了这两个字,但不是很详细。 谁能解释这两者究竟是什么? 苹果文件 显然渲染利用率高是问题所在,那么我能做些什么来提高性能呢?

修改cordova插件加载行为,以加快加载时间

我正在寻找一种方法来加快cordova的插件加载,所以我可以最早显示我的用户界面(用户界面没有第一次启动时对所有插件的严格需求)。 我到目前为止所尝试的: 根据文档,我已经尝试添加: <param name="onload" value="false" /> ; 为我加载的每个function。 没有帮助。 ( 关于SO的相关查询 ) 已将应用程序初始化代码从deviceReady移出(初始化不需要Cordova特定位)。 我如何得出结论,插件是一个瓶颈? 如下: 我卸载了应用程序所需的所有插件(其中23个!),加载时间被削减2.5到3秒。 所以我相信这是一个瓶颈。 另外,我删除了所有JS和CSS,包括cordova.js,并加载了一个空白的HTML页面。 与插件和无插件。 差别是巨大的。 总的来说,这个问题是,直到所有的插件本地代码没有运行,WebView本身并没有出现。 更多的插件,更多的时间是可见的。 有什么办法可以让Cordova立即加载WebView,并让JS加载,同时在后台初始化插件,并在必要时触发deviceReady ? 我可以在稍后的时间做cordova具体的事情。 有关: 在API加载之前在Cordova中显示webView phonegap插件onload = false不起作用