在应用程序切换器模式下,iOS SceneKit应用程序更快

时间:2019-05-28 14:01:46

标签: ios swift xcode scenekit

我正在开发的SceneKit应用程序遇到相当奇怪的行为。我调用一种方法来操纵各种function testArray() { var ss = SpreadsheetApp.getActive(); var arr = ss.getSheets(); arr.splice(0,10); //removes first 10 Sheets from Array; var exclude = []; //fill with unchangeable names; arr.forEach(function (sheet,index) { //iterates over Array of Sheets; var oldName = sheet.getName(); var newName = sheet.getRange(1,1).getValue(); if(newName.toString().length>0 && newName!==oldName) { //Move to next iteration if new name should be excluded; if(exclude.indexOf(newName)===-1) { sheet.setName(newName); //set name otherwise; } } }); // end of loop } // end of function 对象的set.seed(1) trn_index = createDataPartition(y = low_birth_weight$id, p = 0.70, list = FALSE) trn_low_bw = low_birth_weight[trn_index, ] tst_low_bw = low_birth_weight[-trn_index, ] low_bw_knn = train(low ~ ., method = "knn", data = trn_low_bw, trControl = trainControl(method = 'cv', number = 5)) 属性。该方法在循环中更改simdWorldPosition,可以执行约40k次。

我定义了一个SCNNode

simdWorldPosition

按下按钮会调用以下内容:

DispatchQueue
let updateQueue = DispatchQueue(label: Bundle.main.bundleIdentifier! +
        ".serialSceneKitQueue")

这些迭代很慢-我有时可以看到在几秒钟内发生了约一千次操作,然后花一分钟时间进行50次@objc func didPressGreedy() { updateQueue.async { let _ = self.Greedy() } } 更新。如果点击屏幕,我可以看到执行速度加快了。

当我使用iOS App Switcher(只需在iPhone XS上滑动应用程序并将其放置在App Switcher中)时,该应用程序将迭代的执行速度显着提高了10倍。

为什么会导致这种情况?如果我遇到概念性问题,请指向相关主题/文章。

1 个答案:

答案 0 :(得分:1)

  

为什么会导致这种情况?

听起来好像您的应用程序在切换器中要做的工作要少得多。这不足为奇……应用程序绘制的区域要小得多,没有触摸事件要处理,等等。区别可能与循环中的代码无关相比之下,该应用程序的其余部分做得并不多。

如果您真的想知道发生了什么(或没有发生什么),最好的办法是使用Instruments来分析代码。