From fcc21b36a360ed7d5e9e19950bff6fcc5f40c833 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 20 Feb 2015 11:41:39 -0800 Subject: [PATCH] docs: Explain static dispatch advantage more clearly --- src/doc/trpl/static-and-dynamic-dispatch.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/doc/trpl/static-and-dynamic-dispatch.md b/src/doc/trpl/static-and-dynamic-dispatch.md index 9421dac7bf6..84d05c63e8f 100644 --- a/src/doc/trpl/static-and-dynamic-dispatch.md +++ b/src/doc/trpl/static-and-dynamic-dispatch.md @@ -79,10 +79,11 @@ fn main() { } ``` -This has some upsides: static dispatching of any method calls, allowing for -inlining and hence usually higher performance. It also has some downsides: -causing code bloat due to many copies of the same function existing in the -binary, one for each type. +This has a great upside: static dispatch allows function calls to be +inlined because the callee is known at compile time, and inlining is +the key to good optimization. Static dispatch is fast, but it comes at +a tradeoff: 'code bloat', due to many copies of the same function +existing in the binary, one for each type. Furthermore, compilers aren’t perfect and may “optimise” code to become slower. For example, functions inlined too eagerly will bloat the instruction cache