get_fast/get_weak_fast API for folly::Singleton
Summary: This adds API which makes folly::Singleton as performant as Meyers/static-object singletons.
Test Plan:
unit test + benchmark
============================================================================
folly/experimental/test/SingletonTest.cpp relative time/iter iters/s
============================================================================
NormalSingleton 333.32ps 3.00G
MeyersSingleton 100.00% 333.33ps 3.00G
FollySingletonSlow 0.35% 94.36ns 10.60M
FollySingletonFast 99.43% 335.24ps 2.98G
FollySingletonFastWeak 0.62% 53.74ns 18.61M
============================================================================
Reviewed By: alikhtarov@fb.com
Subscribers: trunkagent, folly-diffs@
FB internal diff:
D1741961
Signature: t1:
1741961:
1418765462:
d9806f1bf5275bfbe2c4c53a41b735bda93753fe