スレッドローカル変数を多用するライブラリを作成しています。C++でスレッドローカル変数を取得するさまざまな方法のパフォーマンスをテストするいくつかのベンチマークを指摘できますか。
- C ++0xthread_local変数
- コンパイラ拡張(Gcc __thread、...)
- boost :: threads_specific_ptr
- pthread
- ウィンドウズ
- ..。
C ++ 0x thread_localは、それを提供するコンパイラーではるかに優れたパフォーマンスを発揮しますか?
スレッドローカル変数を多用するライブラリを作成しています。C++でスレッドローカル変数を取得するさまざまな方法のパフォーマンスをテストするいくつかのベンチマークを指摘できますか。
C ++ 0x thread_localは、それを提供するコンパイラーではるかに優れたパフォーマンスを発揮しますか?
これらは通常、スレッドのプライベート メモリ空間内の配列内の単純なオフセットとして実装されます。X
したがって、タイプのスレッド固有変数 にアクセスするとT
、
T y = X;
大まかに翻訳すると、
T y = *(T*)(cur_thread.local_tbl[key_X]);
これは単純すぎて、実装間でパフォーマンスに大きなばらつきがあるとは予想できません。とはいえ、そのようなベンチマークを見つけた場合は、こちらでフォローアップしてください.
いつでもご利用いただけますtime.h
。パフォーマンスのものをテストするときの友人であり、他に何も利用できません。