Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift应用程序仅在为Xcode';什么是时间分析器?_Ios_Xcode_Performance_Swift_Profiler - Fatal编程技术网

Ios Swift应用程序仅在为Xcode';什么是时间分析器?

Ios Swift应用程序仅在为Xcode';什么是时间分析器?,ios,xcode,performance,swift,profiler,Ios,Xcode,Performance,Swift,Profiler,我正在开发一个处理大型浮点数组的应用程序,当我在iPhone5上运行时,我非常失望地发现Swift显然比Python慢10倍。我想这不可能是真的,但如果我没有在时间分析器中测试应用程序,并意识到问题可能不是我的算法或Swift的实现造成的,我会认为这是真的 当应用程序是为profiler构建的时,它的性能很好:它在不知不觉中用很短的时间完成处理,这是它应该做的。但通常,如果我点击Xcode中的run按钮(play符号)来构建和运行,即使编译器设置为最快的,也需要大约20秒才能完成。(代码在构建之

我正在开发一个处理大型浮点数组的应用程序,当我在iPhone5上运行时,我非常失望地发现Swift显然比Python慢10倍。我想这不可能是真的,但如果我没有在时间分析器中测试应用程序,并意识到问题可能不是我的算法或Swift的实现造成的,我会认为这是真的

当应用程序是为profiler构建的时,它的性能很好:它在不知不觉中用很短的时间完成处理,这是它应该做的。但通常,如果我点击Xcode中的run按钮(play符号)来构建和运行,即使编译器设置为最快的,也需要大约20秒才能完成。(代码在构建之间保持不变。)速度太慢了

当我在MacBook Pro上构建并运行模拟器时,速度相当快,但即使如此,它也比在我的小iPhone 5上构建并运行时间分析器时慢

当我在AppDelegate的application()函数中放置以下测试代码时,构建之间的性能差异也存在,因此我认为这不是GUI/线程问题或其他问题。同样的测试代码在我的Mac上用Objective-C(在我设备上的一个单独的应用程序中)和Python实现时运行得很快

var nums: [Float] = []

for var i = 0; i < 250000; i++ {
    nums.append(Float(i) * 0.001)
}
var nums:[Float]=[]
对于var i=0;i<250000;i++{
附加数值(浮点数(i)*0.001)
}
(除非通过时间分析器运行,否则这大约需要20秒。)


你们中有人以前经历过类似的事情吗?如果您能帮我解决这个问题,我将非常高兴。

您是在调试模式而不是发布模式下构建应用程序的。调试模式更容易调试,但发布模式生成的代码更快


为调试模式生成时,编译器会插入有助于调试器的特殊调试符号。我曾经尝试在发布模式下调试应用程序,但调试器甚至找不到我的变量。发布模式不仅不包含这些符号,还优化了你的应用程序,生成了更小更快的二进制文件


以下是如何在调试模式和发布模式之间切换:

  • 单击Xcode左上角的方案

  • 选择“编辑方案…”

  • 单击“构建配置”下拉列表

  • 将生成配置更改为Release

  • 重建您的项目

(我这里不提供图像,因为我假设您知道如何重建项目。)

如果您将构建配置更改为Release,是否有效?我认为它当前设置为Release。我对构建设置没有太多的干扰,但也许有一种方法可以还原为默认值以防万一?默认值是调试,而不是发布。当设置为调试时,应用程序速度慢但易于调试,发布时速度快但难以调试。我不太确定“将构建配置更改为发布”是什么意思。。。它让我可以为运行、测试或分析而构建。此外,我还创建了两个新的Xcode项目,即使我唯一的代码就是上面发布的代码,问题仍然存在。仍然在瞬间通过时间分析器运行。这就是原因。时间分析器生成默认版本。我将发布一个解释如何改变它的答案。真的很感激它:你是“娜达”,对我来说没人:p现在工作得很好。我以前从未遇到过调试模式性能方面的问题,实际上也从未注意到任何差异,但我尝试执行的操作速度非常慢,看起来像是一个奇怪的错误。更糟糕的是,当你看到调试本身没有一点改进时。它甚至有更多的bug,因为它最终使应用程序崩溃了……是的,我曾经这样认为——直到我开始为Arduino微控制器编程。你甚至没有调试器;你必须使LED灯闪烁。如果你犯了一个会导致iOS崩溃的错误,它会在Arduino上做一些奇怪和意想不到的事情。祝Arduino调试愉快。