Skip to content

Commit d767a45

Browse files
committed
tweak directive sort, use loops since its perf critical
1 parent f8b9cce commit d767a45

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/compiler/compile.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ function sortDirectives (dirs) {
121121
if (dirs.length === 0) return
122122

123123
var groupedMap = {}
124-
for (var i = 0, j = dirs.length; i < j; i++) {
124+
var i, j, k, l
125+
for (i = 0, j = dirs.length; i < j; i++) {
125126
var dir = dirs[i]
126127
var priority = dir.descriptor.def.priority || DEFAULT_PRIORITY
127128
var array = groupedMap[priority]
@@ -132,13 +133,15 @@ function sortDirectives (dirs) {
132133
}
133134

134135
var index = 0
135-
Object.keys(groupedMap).sort(function (a, b) {
136+
var priorities = Object.keys(groupedMap).sort(function (a, b) {
136137
return a > b ? -1 : a === b ? 0 : 1
137-
}).forEach(function (priority) {
138-
groupedMap[priority].forEach(function (item) {
139-
dirs[index++] = item
140-
})
141138
})
139+
for (i = 0, j = priorities.length; i < j; i++) {
140+
var group = groupedMap[priorities[i]]
141+
for (k = 0, l = group.length; k < l; k++) {
142+
dirs[index++] = group[k]
143+
}
144+
}
142145
}
143146

144147
/**

0 commit comments

Comments
 (0)