Index: base/bind.h.pump |
diff --git a/base/bind.h.pump b/base/bind.h.pump |
index 11b46670fcb11b788250f8abf49bb2f2bbf0d71f..9d4c5eef3bf4f5529393fc46e9f4f7336cbc07b4 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 |