summaryrefslogtreecommitdiffstats
path: root/base/bind.h.pump
diff options
context:
space:
mode:
Diffstat (limited to 'base/bind.h.pump')
-rw-r--r--base/bind.h.pump20
1 files changed, 19 insertions, 1 deletions
diff --git a/base/bind.h.pump b/base/bind.h.pump
index 11b4667..9d4c5ee 100644
--- a/base/bind.h.pump
+++ b/base/bind.h.pump
@@ -5,7 +5,25 @@ $$
$$ http://code.google.com/p/googletest/wiki/PumpManual
$$
-$var MAX_ARITY = 6
+$$
+$$ MAX_ARITY controls the number of arguments that Bind() supports.
+$$ The amount of code, and more importantly, the number of template types
+$$ generated by pump grows at O(MAX_ARITY^2).
+$$
+$$ We tried going to 11 and found it imposed an extra 10 penalty on windows
+$$ cycle times compared to our original baseline of 6.
+$$
+$$ Currently 7 is chosen as a compromise between supporting a convenient
+$$ number of arguments and keeping compile times low. At 7, we have 115
+$$ templates being generated by pump.
+$$
+$$ Be careful when adjusting this number. If people find a need to bind
+$$ a larger number of arguments, consider refactoring the function to use
+$$ a param struct instead of raising the MAX_ARITY.
+$$
+$$ See http://crbug.com/98542 for more context.
+$$
+$var MAX_ARITY = 7
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be