2017-08-02 8 views
1

私はDispatchQueue.global().asyncスレッドを実行しており、多くの時間を消費するCoreDataの作業をしています。Swift:Background DispatchQueueスレッドが遅すぎる

このようにするのは悪い習慣です。

それにもかかわらず、私はこの重い計算作業をそこに戻したとき、アプリケーションは約2倍遅くなった。

これは、非同期タスクが割り当てられたすべてのリソースを取得しないためです。メインスレッドほど速くする方法はありますか?

ありがとうございました。

+0

キューに送信するタスクを投稿できますか? –

+0

大量のCoreDataに格納されている引用符のライブラリを検索するためのコードがたくさんあります。 –

答えて

1

DispatchQueue.global()の "qos"オプションパラメータを試してみることができます。ただし、タスクが終了してから終了するのではなく、何かを継続的に実行している場合は、グローバルディスパッチキューを使用する代わりにNSThreadを生成するほうがよいでしょう。

+0

qosを使ってより速く走らせる方法を教えてください。ドキュメントを読むことに基づいて、それは '.userInitiated'にqosを設定するように見えます。 –

+0

QoSが高いほど、OSが費やすリソースが増えます。これにより、バッテリーがより早く消耗されますが、速くなります。 –