小编Hyu*_*nSu的帖子

为什么 for-in 比 swift 调试模式下的慢?

为什么 for-in 比 swift 调试模式下的慢?如果您认为,是的,它是在没有优化的情况下运行的。

??下面的代码,时间是for-in和没有优化的比较

49999995000000 for-in -- 时间 = 3.3352

4999999950000000 而 -- 时间 = 0.3613

??但是,如果使用速度优化

49999995000000 for-in -- 时间 = 0.0037

49999995000000 而 -- 时间 = 0.0035

我想知道“为什么 for-in 比没有优化的时候慢?为什么优化中的 for-in 和 while 这么快?”

import Foundation

func processTime(_ title: String, blockFunction: () -> ()) {
    print()
    let startTime = CFAbsoluteTimeGetCurrent()
    blockFunction()
    let processTime = CFAbsoluteTimeGetCurrent() - startTime
    print(title, " -- time = \(String(format : "%.4f",processTime))")
}

processTime("for-in") {
    var sum = 0
    for …
Run Code Online (Sandbox Code Playgroud)

for-loop swift

5
推荐指数
1
解决办法
134
查看次数

GCD真的是线程安全的吗?

我研究过GCD和线程安全。在苹果文档中,GCD是Thread-Safe的,意味着多个线程可以访问。我了解了线程安全的含义,即每当多个线程访问某个对象时总是给出相同的结果。

我认为Thread-Safe和GCD的Thread-Safe的含义不一样,因为我测试了下面写的一些案例,将0到9999相加。

当我多次执行下面的代码时,“something.n”值不同。如果 GCD 是线程安全的,为什么“something.n”值不一样?

我真的很困惑..你能帮助我吗?我真的很想掌握线程安全!!!

class Something {
    var n = 0
}
class ViewController: UIViewController {
    let something = Something()
    var concurrentQueue = DispatchQueue(label: "asdf", attributes: .concurrent)
    override func viewDidLoad() {
        super.viewDidLoad()
        let group = DispatchGroup()
        for idx in 0..<10000 {
            concurrentQueue.async(group: group) {
                self.something.n += idx
            }
        }
    
        group.notify(queue: .main ) {
            print(self.something.n)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

thread-safety grand-central-dispatch swift

2
推荐指数
1
解决办法
998
查看次数

iOS什么时候使用动态链接库?在iOS中使用动态库有什么好处?

我对Window 或 Linux 中的动态链接库和 iOS 中的动态链接库的优势之间的差异感到很奇怪。

\n

下面的\xe2\xac\x87\xef\xb8\x8f这几句就是为了证明我为什么感觉怪怪的。

\n

我了解到库可以分为静态库动态库

\n

使用动态库的优点是允许其他应用程序使用相同的动态库(在Window中,.dll文件),这样每个应用程序的内存使用量都可以减少,并且可以更容易地重新分发动态库而不是重新分发应用程序。\n实际上我在使用某些应用程序时可能会遇到“没有XXX.dll文件”的情况

\n

在Xcode中,当创建新项目时,我们可以在.\n中选择框架静态库framework & library。\n创建项目后,我们可以选择如何成为Mach-O Type,例如“可执行文件,动态库,静态库”等。

\n

所以,我认为如果我选择带有动态库的Mach-O类型,则该项目将使用动态链接库以链接方式编译。

\n

\xe2\xac\x87\xef\xb8\x8f 我真的很想知道。

\n
    \n
  1. 但就像在 Window 中一样,iOS 用户可以在 iPhone 中下载.so 文件以便应用程序正常工作或更新动态库吗?
  2. \n
  3. iPhone 中启动的其他应用程序可以使用相同的动态库吗?
  4. \n
\n

因为我无法体验到这一点。

\n
    \n
  1. 如果它(1,2)不能,为什么要使用动态库,即使我们无法像在 Window 或 Linux 中那样获得使用动态库的实际优势?
  2. \n
\n

xcode dynamic-linking dynamic-library ios

2
推荐指数
1
解决办法
2225
查看次数