Boost v1.59 の Boost.Context のドキュメントでは、次のパフォーマンス比較結果が報告されています。
+----------+----------------------+-------------------+-------------------+----------------+
| Platform | ucontext_t | fcontext_t | execution_context | windows fibers |
+----------+----------------------+-------------------+-------------------+----------------+
| i386 | 708 ns / 754 cycles | 37 ns / 37 cycles | ns / cycles | ns / cycles |
| x86_64 | 547 ns / 1433 cycles | 8 ns / 23 cycles | 16 ns / 46 cycles | ns / cycles |
+----------+----------------------+-------------------+-------------------+----------------+
これらの実験のソース コードは GitHub でホストされていると思います。
私の質問は、ucontextのオーバーヘッドが Boost ライブラリの実装よりも 20 倍高いのはなぜですか? このような大きな違いが生じる明確な理由はわかりません。Boost の実装は、ucontext の実装者が見逃した低レベルのトリックを使用しているのでしょうか、それとも何か他のことがここで起こっているのでしょうか?