是的,它确实减慢了代码速度。
print 和 println 都会降低应用程序的性能。
Println 问题
println 在 Swift 进行代码优化时不会被移除。
for i in 0...1_000 {
println(i)
}
此代码无法优化,并且在编译汇编代码后会执行一个包含 1000 条指令的循环,这些指令实际上并没有做任何有价值的事情。
分析汇编代码
问题在于 Swift 编译器无法使用 print 和 println 命令对代码进行优化优化。
如果您查看生成的汇编代码,您可以看到它。
您可以使用Hopper Disassembler 查看汇编代码,也可以使用swiftc 编译器将 Swift 代码编译为汇编:
xcrun swiftc -emit-assembly myCode.swift
Swift 代码优化
让我们看几个例子以便更好地理解。
Swift 编译器可以消除很多不必要的代码,比如:
示例:
class Object {
func nothing() {
}
}
for i in 0...1_000 {
let object = Object3(x: i)
object.nothing()
object.nothing()
}
在这个例子中,Swift 编译器会做这个优化:
1.删除两个nothing方法调用
在此之后循环体将只有 1 条指令
for i in 0...1_000 {
let object = Object(x: i)
}
2. 然后它会删除创建Object 实例,因为它实际上没有被使用。
for i in 0...1_000 {
}
3.最后一步是删除空循环。
我们最终没有代码可以执行
解决方案
这绝对不是最好的解决方案。
//println("A")
使用此解决方案,您可以简单地更改 debug_print 函数的逻辑
debug_println("A)
func debug_println<T>(object: T) {
#if DEBUG
println(object)
#endif
}
结论
始终从发布应用程序中删除 print 和 println!!
如果添加 print 和 println 指令,则 Swift 代码无法以最佳方式优化,并可能导致性能大幅下降。