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 |
+----------+----------------------+-------------------+-------------------+----------------+
我的问题是,为什么ucontext的开销比 Boost 库的实现高 20 倍?我看不出有什么明显的原因为什么会有如此大的差异。Boost 实现是使用了 ucontext 实现者遗漏的一些低级技巧,还是这里发生了其他事情?