私はコード内で非常に重要な場所で現在実行中のスレッドのIDを使用するつもりです。そのIDをどこかにキャッシュするか、メソッドを呼び出すかを選択する必要があります(UNIXのようなシステムの場合はgettid
、ウィンドウの場合はGetCurrentThreadId
)毎回それを得るために。それはより良いですか?スレッドIDがシステムコールを取得していますか?現在のスレッド時間のIDを取得する操作が高価ですか?
8
A
答えて
0
いいえ、高価な呼び出しではありません。これはシステムコールなのですが、高価なものからは遠いです。明らかに、シンプルな変数に値をキャッシュすることができれば、それは10倍の速さになります。
しかし、すべてのパフォーマンス関連のクエリと同様に、実際にはベンチマークに劣ります。単一のスレッドを使用し、スレッドIDを取得するために関数を呼び出すこと、そして何をしたいのかを簡単に設定できます。それで何らかのテストを実行するのにかかる時間を測定します。次に、スレッドIDの呼び出しを同じ範囲の定数値に置き換えて、それがどのように機能するかを確認します。
7
少なくともWindowsでは、GetCurrentThreadId()
はで、かなりであり、システムコールは必要ありません。独自の変数ではなく、多くの値をキャッシュにはほとんど利益があるかもしれません
int GetCurrentThreadId() {
_asm {
mov eax, fs:[18h]
mov eax, [eax+24h]
}
}
:基本的にはということになります。主な利点は、変数を頻繁に使用される他の変数と一緒に保存するとローカリティ(つまりキャッシュの使用率)が向上する可能性があります。
メモリのフェッチ(またはおそらく2つ)を排除する可能性があるようなタイトなループで作業しているのでなければ、それが返す値をキャッシュすることはあまりありません。
関連する問題
- 1. C#でWindows 8の現在のスレッドIDを取得
- 2. MVCで現在のページ名を取得する操作
- 3. Mapboxでビデオの現在の時間を取得するには?
- 4. 現在のユーザーIDを取得する
- 5. php取得US/Eastern現在の時間
- 6. 現在のアンドロイドデバイスで時間を取得するには?
- 7. 現在のシステム時間をミリ秒で取得する
- 8. スライディングウィンドウで現在のウィンドウ時間を取得する方法は?
- 9. 現在の時間をミリ秒で取得する方法は?
- 10. video.jsで現在の再生時間を取得する方法
- 11. アンドロイドで現在の時間を取得する方法は?
- 12. NSUserDefaultsの読み取りアクセスは「高価な」操作ですか?
- 13. Qt現在のアプリケーションの起動時間を取得する
- 14. ビデオの現在のフレーム番号/時間を取得する
- 15. GVRVideoViewの現在の再生時間を取得する方法
- 16. 現在のEST時間を取得する方法
- 17. システム/モバイル時間ではなく、タイムゾーンから現在時刻を取得する
- 18. 現在の時刻と日付を24時間タイムスケールで取得する
- 19. 現在の時刻を12時間形式で取得するには?
- 20. フックの現在のページIDを取得
- 21. React Native - 現在の時間を取得し、動的なx(時間)軸を作成しますか?
- 22. ユニットテストで現在時刻を操作しますか?
- 23. コトリンで現在の現地日時を取得する方法
- 24. Nette Framework - 現在のセッションIDを取得
- 25. QTは現在のログインユーザIDを取得
- 26. DNN 8.00.02 - 現在のモジュールIDを取得
- 27. Chapelで現在のタスクIDを取得しますか?
- 28. CloudKitで現在のユーザーIDを取得しますか?
- 29. Node.jsで現在のプロセスが開始されてからの時間の取得
- 30. nodejsで特定のタイムゾーンで現在の時間を取得する方法は?
私はUnixが同じことをしているのを見ましたが(しかしgsでは重要ではありません)。だから、あなたの答えは複数のプラットフォームで正しいです。それは非常に安いです。 – boiler96