Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

Commit beb5949

Browse files
committed
performance considerations
1 parent c62ac77 commit beb5949

File tree

7 files changed

+93
-59
lines changed

7 files changed

+93
-59
lines changed

dist/es6-module-loader-sans-promises.js

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,15 @@ function logloads(loads) {
511511
// snapshot(linkSet.loader);
512512
}
513513

514+
function doLink(linkSet) {
515+
try {
516+
link(linkSet);
517+
}
518+
catch(exc) {
519+
return linkSetFailed(linkSet, exc);
520+
}
521+
}
522+
514523
// 15.2.5.2.3
515524
function updateLinkSetOnLoad(linkSet, load) {
516525
console.assert(load.status == 'loaded' || load.status == 'linked', 'loaded or linked');
@@ -546,12 +555,7 @@ function logloads(loads) {
546555
}
547556
/***/
548557

549-
try {
550-
link(linkSet);
551-
}
552-
catch(exc) {
553-
return linkSetFailed(linkSet, exc);
554-
}
558+
doLink(linkSet);
555559

556560
console.assert(linkSet.loads.length == 0, 'loads cleared');
557561

@@ -1105,20 +1109,20 @@ function logloads(loads) {
11051109
hash : m[8] || ''
11061110
} : null);
11071111
}
1112+
function removeDotSegments(input) {
1113+
var output = [];
1114+
input.replace(/^(\.\.?(\/|$))+/, '')
1115+
.replace(/\/(\.(\/|$))+/g, '/')
1116+
.replace(/\/\.\.$/, '/../')
1117+
.replace(/\/?[^\/]*/g, function (p) {
1118+
if (p === '/..')
1119+
output.pop();
1120+
else
1121+
output.push(p);
1122+
});
1123+
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
1124+
}
11081125
function toAbsoluteURL(base, href) {
1109-
function removeDotSegments(input) {
1110-
var output = [];
1111-
input.replace(/^(\.\.?(\/|$))+/, '')
1112-
.replace(/\/(\.(\/|$))+/g, '/')
1113-
.replace(/\/\.\.$/, '/../')
1114-
.replace(/\/?[^\/]*/g, function (p) {
1115-
if (p === '/..')
1116-
output.pop();
1117-
else
1118-
output.push(p);
1119-
});
1120-
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
1121-
}
11221126

11231127
href = parseURI(href || '');
11241128
base = parseURI(base || '');

dist/es6-module-loader-sans-promises.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader.js

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,15 @@ function logloads(loads) {
11951195
// snapshot(linkSet.loader);
11961196
}
11971197

1198+
function doLink(linkSet) {
1199+
try {
1200+
link(linkSet);
1201+
}
1202+
catch(exc) {
1203+
return linkSetFailed(linkSet, exc);
1204+
}
1205+
}
1206+
11981207
// 15.2.5.2.3
11991208
function updateLinkSetOnLoad(linkSet, load) {
12001209
console.assert(load.status == 'loaded' || load.status == 'linked', 'loaded or linked');
@@ -1230,12 +1239,7 @@ function logloads(loads) {
12301239
}
12311240
/***/
12321241

1233-
try {
1234-
link(linkSet);
1235-
}
1236-
catch(exc) {
1237-
return linkSetFailed(linkSet, exc);
1238-
}
1242+
doLink(linkSet);
12391243

12401244
console.assert(linkSet.loads.length == 0, 'loads cleared');
12411245

@@ -1789,20 +1793,20 @@ function logloads(loads) {
17891793
hash : m[8] || ''
17901794
} : null);
17911795
}
1796+
function removeDotSegments(input) {
1797+
var output = [];
1798+
input.replace(/^(\.\.?(\/|$))+/, '')
1799+
.replace(/\/(\.(\/|$))+/g, '/')
1800+
.replace(/\/\.\.$/, '/../')
1801+
.replace(/\/?[^\/]*/g, function (p) {
1802+
if (p === '/..')
1803+
output.pop();
1804+
else
1805+
output.push(p);
1806+
});
1807+
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
1808+
}
17921809
function toAbsoluteURL(base, href) {
1793-
function removeDotSegments(input) {
1794-
var output = [];
1795-
input.replace(/^(\.\.?(\/|$))+/, '')
1796-
.replace(/\/(\.(\/|$))+/g, '/')
1797-
.replace(/\/\.\.$/, '/../')
1798-
.replace(/\/?[^\/]*/g, function (p) {
1799-
if (p === '/..')
1800-
output.pop();
1801-
else
1802-
output.push(p);
1803-
});
1804-
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
1805-
}
18061810

18071811
href = parseURI(href || '');
18081812
base = parseURI(base || '');

dist/es6-module-loader.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/loader.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,15 @@ function logloads(loads) {
511511
// snapshot(linkSet.loader);
512512
}
513513

514+
function doLink(linkSet) {
515+
try {
516+
link(linkSet);
517+
}
518+
catch(exc) {
519+
return linkSetFailed(linkSet, exc);
520+
}
521+
}
522+
514523
// 15.2.5.2.3
515524
function updateLinkSetOnLoad(linkSet, load) {
516525
console.assert(load.status == 'loaded' || load.status == 'linked', 'loaded or linked');
@@ -546,12 +555,7 @@ function logloads(loads) {
546555
}
547556
/***/
548557

549-
try {
550-
link(linkSet);
551-
}
552-
catch(exc) {
553-
return linkSetFailed(linkSet, exc);
554-
}
558+
doLink(linkSet);
555559

556560
console.assert(linkSet.loads.length == 0, 'loads cleared');
557561

lib/system.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,20 @@
3232
hash : m[8] || ''
3333
} : null);
3434
}
35+
function removeDotSegments(input) {
36+
var output = [];
37+
input.replace(/^(\.\.?(\/|$))+/, '')
38+
.replace(/\/(\.(\/|$))+/g, '/')
39+
.replace(/\/\.\.$/, '/../')
40+
.replace(/\/?[^\/]*/g, function (p) {
41+
if (p === '/..')
42+
output.pop();
43+
else
44+
output.push(p);
45+
});
46+
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
47+
}
3548
function toAbsoluteURL(base, href) {
36-
function removeDotSegments(input) {
37-
var output = [];
38-
input.replace(/^(\.\.?(\/|$))+/, '')
39-
.replace(/\/(\.(\/|$))+/g, '/')
40-
.replace(/\/\.\.$/, '/../')
41-
.replace(/\/?[^\/]*/g, function (p) {
42-
if (p === '/..')
43-
output.pop();
44-
else
45-
output.push(p);
46-
});
47-
return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
48-
}
4949

5050
href = parseURI(href || '');
5151
base = parseURI(base || '');

test/perf.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!doctype html>
2+
<script src="../dist/es6-module-loader.js"></script>
3+
<script>
4+
System.set('module0', Module({}));
5+
System.instantiate = function(load) {
6+
return {
7+
deps: ['module1'],
8+
execute: function() {
9+
return Module({});
10+
}
11+
};
12+
}
13+
14+
function start() {
15+
var startTime = +Date.now();
16+
for (var i = 1; i <= 1000; i++)
17+
System.define('module' + i, "function() {} var p = 5; // non-trivial code");
18+
System.import('module1000').then(function() {
19+
console.log(Date.now() - startTime);
20+
});
21+
}
22+
</script>

0 commit comments

Comments
 (0)