Xin Tong
f95d9b3c92
Change FSO heuristic.
...
FSO functions that have high potential but does not have caller inside
current module.
The thunk can then be inlined into the module calling the function and
the function would get the benefit of FSO.
The heuristic for selecting such function is
1. Have no indirect caller. This would introduce a thunk.
2. Have potential to give better performance. i.e. function argument can
be O2G.
Regression
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP
--- | --- | --- | --- | ---
BenchLangCallingCFunction | 184 | 211 | +14.7% | **0.87x**
Calculator | 55 | 59 | +7.3% | **0.93x**
DeadArray | 687 | 741 | +7.9% | **0.93x**
MonteCarloPi | 39275 | 41669 | +6.1% | **0.94x**
Improvement
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP
--- | --- | --- | --- | ---
LuhnAlgoLazy | 2478 | 2327 | -6.1% | **1.06x**
OpenClose | 54 | 51 | -5.6% | **1.06x**
SortLettersInPlace | 1016 | 946 | -6.9% | **1.07x**
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced | 149993 | 139755 | -6.8% | **1.07x**
Phonebook | 9666 | 8992 | -7.0% | **1.07x**
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 222713 | 206538 | -7.3% | **1.08x**
LuhnAlgoEager | 2393 | 2226 | -7.0% | **1.08x**
Dictionary | 1307 | 1196 | -8.5% | **1.09x**
JSONHelperDeserialize | 3808 | 3492 | -8.3% | **1.09x**
StdlibSort | 7310 | 4084 | -44.1% | **1.79x**
I see 0.15% increase in code size for Benchmark_O.
Thanks @gottesmm for suggesting this opportunity.
rdar://25345056
2016-03-29 23:04:36 -07:00
practicalswift
11a8b6c2ba
[gardening] Daily cleanup: typos, header formatting.
2016-03-28 09:29:38 +02:00
Xin Tong
5907b8a3e2
Rename FunctionSignatureOptCloner to FunctionSignatureOpts
...
Eventually, we decided to do this
1. Have the function signature opts (used to be called the cloner to create
the optimized function.
2. Mark the thunk as always_inline
3. Rely on the inliner to inline the thunk to get the benefit of calling optimized
function directly.
2016-03-24 12:50:12 -07:00