Skip to content

Commit e7bcb39

Browse files
committed
perf: Do no use string keys during line generation
Using explicit keys rather than string keys seems to save 15-20% of the line generation time.
1 parent 1206604 commit e7bcb39

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/webgl/lineFeature.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ var webgl_lineFeature = function (arg) {
147147
miterLimit = m_this.style.get('miterLimit')(data),
148148
antialiasing = m_this.style.get('antialiasing')(data) || 0,
149149
uniformFunc = m_this.style.get('uniformLine'), uniformVal, uniform,
150-
order = m_this.featureVertices(), orderk0, prevkey, nextkey, offkey,
150+
order = m_this.featureVertices(), orderk0,
151151
orderLen = order.length,
152152
// webgl buffers; see _init for details
153153
posBuf, prevBuf, nextBuf, farBuf, flagsBuf,
@@ -348,24 +348,21 @@ var webgl_lineFeature = function (arg) {
348348
posBuf[dest3] = position[v1.pos];
349349
posBuf[dest3 + 1] = position[v1.pos + 1];
350350
posBuf[dest3 + 2] = 0; // position[v1.pos + 2];
351-
prevkey = !orderk0 ? 'prev' : 'next';
352-
nextkey = !orderk0 ? 'next' : 'prev';
353-
prevBuf[dest3] = position[v1[prevkey]];
354-
prevBuf[dest3 + 1] = position[v1[prevkey] + 1];
355-
prevBuf[dest3 + 2] = 0; // position[v1[prevkey] + 2];
356-
nextBuf[dest3] = position[v1[nextkey]];
357-
nextBuf[dest3 + 1] = position[v1[nextkey] + 1];
358-
nextBuf[dest3 + 2] = 0; // position[v1[nextkey] + 2];
359-
farBuf[dest3] = position[v2[nextkey]];
360-
farBuf[dest3 + 1] = position[v2[nextkey] + 1];
361-
farBuf[dest3 + 2] = 0; // position[v2[nextkey] + 2];
351+
prevBuf[dest3] = position[orderk0 ? v1.next : v1.prev];
352+
prevBuf[dest3 + 1] = position[(orderk0 ? v1.next : v1.prev) + 1];
353+
prevBuf[dest3 + 2] = 0; // position[(orderk0 ? v1.next : v1.prev) + 2];
354+
nextBuf[dest3] = position[orderk0 ? v1.prev : v1.next];
355+
nextBuf[dest3 + 1] = position[(orderk0 ? v1.prev : v1.next) + 1];
356+
nextBuf[dest3 + 2] = 0; // position[(orderk0 ? v1.prev : v1.next) + 2];
357+
farBuf[dest3] = position[orderk0 ? v2.prev : v2.next];
358+
farBuf[dest3 + 1] = position[(orderk0 ? v2.prev : v2.next) + 1];
359+
farBuf[dest3 + 2] = 0; // position[(orderk0 ? v2.prev : v2.next) + 2];
362360
}
363361
if (updateFlags) {
364-
offkey = !orderk0 ? 'negStrokeOffset' : 'posStrokeOffset';
365362
flagsBuf[dest] = (order[k][3] +
366363
v1.flags * flagsNearLineMult +
367364
v2.flags * flagsFarLineMult +
368-
v1[offkey] * flagsNearOffsetMult);
365+
(orderk0 ? v1.posStrokeOffset : v1.negStrokeOffset) * flagsNearOffsetMult);
369366
}
370367
strokeWidthBuf[dest] = v1.strokeWidth;
371368
strokeColorBuf[dest3] = v1.strokeColor.r;

0 commit comments

Comments
 (0)