From a6526803fb07f126414f0259d4d0baf8e89d70b1 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 1 Jul 2014 23:56:08 -0700 Subject: [PATCH] perf(cd): fewer string concatenations (10% improvement) --- lib/change_detection/watch_group.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/change_detection/watch_group.dart b/lib/change_detection/watch_group.dart index 830fa20d8..2be94c1a7 100644 --- a/lib/change_detection/watch_group.dart +++ b/lib/change_detection/watch_group.dart @@ -672,10 +672,11 @@ abstract class _ArgHandler extends _Handler { } class _PositionalArgHandler extends _ArgHandler { + static final List _ARGS = new List.generate(20, (index) => 'arg[$index]'); final int index; _PositionalArgHandler(WatchGroup watchGrp, _EvalWatchRecord record, int index) : this.index = index, - super(watchGrp, 'arg[$index]', record); + super(watchGrp, _ARGS[index], record); void acceptValue(object) { watchRecord.dirtyArgs = true; @@ -684,11 +685,17 @@ class _PositionalArgHandler extends _ArgHandler { } class _NamedArgHandler extends _ArgHandler { + static final Map _NAMED_ARG = new HashMap(); + static String _GET_NAMED_ARG(Symbol symbol) { + String name = _NAMED_ARG[symbol]; + if (name == null) name = _NAMED_ARG[symbol] = 'namedArg[$name]'; + return name; + } final Symbol name; _NamedArgHandler(WatchGroup watchGrp, _EvalWatchRecord record, Symbol name) : this.name = name, - super(watchGrp, 'namedArg[$name]', record); + super(watchGrp, _GET_NAMED_ARG(name), record); void acceptValue(object) { if (watchRecord.namedArgs == null) {