2

Cocoaでは、NSThreadはpthreadよりも高速ですか?パフォーマンスは向上しますか?無視することは無視できますか?

4

4 に答える 4

10

これを裏付けるデータはありませんが、手足に出て「同等だ」と言います。 NSThreadはほぼ確実にpthreadのラッパーです(システムスレッドを作成する他の方法は本当にありますか?)。したがって、NSThreadpthreadと比較して使用するオーバーヘッドは、新しいオブジェクトを作成してから破棄することに関連するオーバーヘッドになります。スレッド自体が開始されると、パフォーマンスの点ではほぼ同じになります。

ここでの本当の質問は、「なぜあなたは知る必要があるのか​​」ということだと思います。NSThreadスポーンがパフォーマンスに悪影響を与えると思われる状況に遭遇したことがありますか?(数百のスレッドを生成している場合、これが問題であることがわかりますが、その場合、NSThreadオブジェクトではなく、数百のスレッドが問題である可能性があります)

NSThreadオブジェクトの作成がアプリケーションのボトルネックであるという証拠がない限り、私は間違いなく「無視できない」オプションを選択します。

于 2010-01-14T20:43:52.550 に答える
1

pthreadのオーバーヘッドは実際にはわずかに少なくなりますが、実際に違いが生じるとは思えません。NSThreadは、その下でpthreadを使用します。スレッド内のコードの実際の実行速度は、両方で同じになります。

于 2010-01-14T20:43:17.293 に答える
0

iPhone SDKでは、NSThreadはpthreadを実際のスレッドとして使用します。率直に言って、それらは同等です。

ただし、pthread APIを使用すると、pthreadAPIを介して「ディープ」設定にアクセスできます。たとえば、スケジューリング方法、スタックサイズ、デタッチされているかどうかなど。これらのAPIはNSThreadカプセルによって隠されています。

したがって、特定の条件下では、pthreadが優先されます。

于 2010-01-15T03:46:16.253 に答える
0

また、NSThreadの追加料金として支払う「オーバーヘッド」または「インスタンス化の違い」は、pthread APIを使用してpthreadを正しく構成するために、最終的に実行する必要のある追加のサイクルと呼び出しによって均等になると思います。

NSThreadは、マルチスレッド化が必要なCocoa /Cocoa-touchアプリケーションのコーディングを節約する便利なラッパーに他なりません。

于 2013-02-05T20:55:52.250 に答える