Kam*_*ran 6 sorting android ios kotlin swift
我试图排序尺寸亿的阵列中的Swift和Kotlin,我可以看到它们之间的巨大的性能差距.对于这个数字,Kotlin几乎18快Swift(在我的机器上).
我记录了一些结果,我发现当尺寸大约为10000或更小时swift更快但是一旦数量增加,Swift与之相比变得非常慢Kotlin.
Swift和Kotlin的代码如下,
迅速
let n = 100000000
var arr = Array(repeating: 0, count: n)
for i in 1...n {
arr[i-1] = Int(arc4random_uniform(UInt32(n)))
}
//Record time before sort
arr.sort()
//Record time after sort
Run Code Online (Sandbox Code Playgroud)
科特林
val n = 100000000
val arr = IntArray(n)
for (i in 1..n) {
arr[i-1] = Random().nextInt(n)
}
//Record time before sort
arr.sort()
//Record time after sort
Run Code Online (Sandbox Code Playgroud)
两者记录的时间如下,
迅速
Size: 1000 Time: 0.001 sec
Size: 10000 Time: 0.009 - 0.01 sec
Size: 100000 Time: 0.122 - 0.127 sec
Size: 1000000 Time: 1.392 - 1.409 sec
Size: 10000000 Time: 16.115 - 16.569 sec
Size: 100000000 Time: 187.346 - 187.71 sec
Size: 1000000000 Waited more than 6 minutes and gave up!
Run Code Online (Sandbox Code Playgroud)
科特林
Size: 1000 Time: 0.06 sec
Size: 10000 Time: 0.063 - 0.084 sec
Size: 100000 Time: 0.083 - 0.105 sec
Size: 1000000 Time: 0.23 - 0.501 sec
Size: 10000000 Time: 1.098 - 1.807 sec
Size: 100000000 Time: 10.759 - 11.141 sec
Size: 1000000000 Time: 124.252 - 127.54 sec
Run Code Online (Sandbox Code Playgroud)
所以,在这里你可以看到Swift当尺寸增加时变得非常慢,尽管当数量很小时它会变得更快.
正如MartinR强调要使用release构建配置进行编译,Swift因此我将其更改为release,Swift对于任何数字来说似乎都更快,如以下结果所示,
带有构建配置的Swift版本
Size: 1000 Time: 0.001 sec
Size: 10000 Time: 0.001 sec
Size: 100000 Time: 0.006 - 0.007 sec
Size: 1000000 Time: 0.076 - 0.081 sec
Size: 10000000 Time: 0.891 - 0.898 sec
Size: 100000000 Time: 9.01 - 10.14 sec
Size: 1000000000 Time: 113.87 - 117.285 sec
Run Code Online (Sandbox Code Playgroud)
如上所示,这对于某人在执行某种性能基准测试时检查构建配置中的Swift结果可能会有所帮助release,调试和发布配置中的结果差异很大。
在调试和发布配置中,编译器使用不同的优化级别,因此会影响性能。在此问题中可以找到有关优化级别的一些讨论
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |