Skip to content

Commit 1a326d5

Browse files
devversionmhevery
authored andcommitted
build: serve largetable benchmark tests with bazel (angular#28645)
PR Close angular#28645
1 parent 28bdeee commit 1a326d5

File tree

17 files changed

+178
-65
lines changed

17 files changed

+178
-65
lines changed

modules/benchmarks/src/largetable/BUILD.bazel

+2-8
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,8 @@ load("//tools:defaults.bzl", "ts_library")
44

55
ts_library(
66
name = "util_lib",
7-
srcs = [
8-
"util.ts",
9-
],
10-
deps = [
11-
"//modules/benchmarks/src:util_lib",
12-
"//packages:types",
13-
"//packages/core",
14-
],
7+
srcs = ["util.ts"],
8+
deps = ["//modules/benchmarks/src:util_lib"],
159
)
1610

1711
ts_library(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
load("//tools:defaults.bzl", "ts_library")
2+
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
3+
4+
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
5+
6+
ts_library(
7+
name = "baseline",
8+
srcs = glob(["*.ts"]),
9+
tsconfig = "//modules/benchmarks:tsconfig-build.json",
10+
deps = [
11+
"//modules/benchmarks/src:util_lib",
12+
"//modules/benchmarks/src/largetable:util_lib",
13+
],
14+
)
15+
16+
ts_devserver(
17+
name = "devserver",
18+
entry_module = "angular/modules/benchmarks/src/largetable/baseline/index",
19+
index_html = "index.html",
20+
port = 4200,
21+
deps = [":baseline"],
22+
)

modules/benchmarks/src/largetable/baseline/index.html

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<!doctype html>
22
<html>
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
37
<body>
48

59
<h2>Params</h2>
@@ -24,11 +28,5 @@ <h2>Baseline Largetable Benchmark</h2>
2428
<div>
2529
<largetable id="root">Loading...</largetable>
2630
</div>
27-
28-
<script>
29-
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
30-
|| '../../bootstrap_plain.js';
31-
document.write('<script src="' + mainUrl + '">\u003c/script>');
32-
</script>
3331
</body>
34-
</html>
32+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
load("//tools:defaults.bzl", "ts_library")
2+
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
3+
4+
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
5+
6+
ts_library(
7+
name = "incremental_dom",
8+
srcs = glob(["*.ts"]),
9+
tsconfig = "//modules/benchmarks:tsconfig-build.json",
10+
deps = [
11+
"//modules/benchmarks/src:util_lib",
12+
"//modules/benchmarks/src/largetable:util_lib",
13+
],
14+
)
15+
16+
ts_devserver(
17+
name = "devserver",
18+
entry_module = "angular/modules/benchmarks/src/largetable/incremental_dom/index",
19+
index_html = "index.html",
20+
port = 4200,
21+
static_files = [
22+
"@ngdeps//node_modules/incremental-dom:dist/incremental-dom.js",
23+
],
24+
deps = [":incremental_dom"],
25+
)

modules/benchmarks/src/largetable/incremental_dom/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<!doctype html>
22
<html>
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
37
<body>
48

59
<h2>Params</h2>
@@ -24,7 +28,5 @@ <h2>Incremental-Dom Largetable Benchmark</h2>
2428
<div>
2529
<largetable id="root"></largetable>
2630
</div>
27-
28-
<script src="../../bootstrap_plain.js"></script>
2931
</body>
30-
</html>
32+
</html>

modules/benchmarks/src/largetable/incremental_dom/index.ts

+16-14
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,26 @@ import {bindAction, profile} from '../../util';
1010
import {buildTable, emptyTable} from '../util';
1111
import {TableComponent} from './table';
1212

13-
export function main() {
14-
let table: TableComponent;
13+
let table: TableComponent;
1514

16-
function destroyDom() { table.data = emptyTable; }
17-
18-
function createDom() { table.data = buildTable(); }
15+
function destroyDom() {
16+
table.data = emptyTable;
17+
}
1918

20-
function noop() {}
19+
function createDom() {
20+
table.data = buildTable();
21+
}
2122

22-
function init() {
23-
table = new TableComponent(document.querySelector('largetable'));
23+
function noop() {}
2424

25-
bindAction('#destroyDom', destroyDom);
26-
bindAction('#createDom', createDom);
25+
function init() {
26+
table = new TableComponent(document.querySelector('largetable'));
2727

28-
bindAction('#updateDomProfile', profile(createDom, noop, 'update'));
29-
bindAction('#createDomProfile', profile(createDom, destroyDom, 'create'));
30-
}
28+
bindAction('#destroyDom', destroyDom);
29+
bindAction('#createDom', createDom);
3130

32-
init();
31+
bindAction('#updateDomProfile', profile(createDom, noop, 'update'));
32+
bindAction('#createDomProfile', profile(createDom, destroyDom, 'create'));
3333
}
34+
35+
init();

modules/benchmarks/src/largetable/incremental_dom/table.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
*/
88

99
import {TableCell} from '../util';
10+
11+
// We load "IncrementalDOM" as a AMD global because the "incremental-dom" NPM package does not
12+
// come with a named UMD module, and it's easier to just import the AMD file and use it globally.
13+
declare const IncrementalDOM: any;
1014
const {patch, elementOpen, elementClose, elementOpenStart, elementOpenEnd, attr, text} =
11-
require('incremental-dom');
15+
IncrementalDOM;
1216

1317
export class TableComponent {
1418
constructor(private _rootEl: any) {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
load("//tools:defaults.bzl", "ts_library")
2+
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
3+
4+
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
5+
6+
ts_devserver(
7+
name = "devserver",
8+
index_html = "index.html",
9+
port = 4200,
10+
static_files = ["largetable.js"],
11+
)

modules/benchmarks/src/largetable/iv/index.html

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<!doctype html>
22
<html>
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
37
<body>
48

59
<h2>Params</h2>
@@ -24,8 +28,5 @@ <h2>IV Largetable Benchmark</h2>
2428
<div>
2529
<largetable id="root"></largetable>
2630
</div>
27-
28-
<script type="text/javascript" src="largetable.js"></script>
29-
3031
</body>
3132
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
load("//tools:defaults.bzl", "ng_module")
2+
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
3+
4+
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
5+
6+
# Note that this benchmark has been designed for Angular with ViewEngine, but once
7+
# ViewEngine is removed, we should should consider removing this one since there
8+
# already is a "render3" benchmark.
9+
ng_module(
10+
name = "ng2",
11+
srcs = glob(["*.ts"]),
12+
tsconfig = "//modules/benchmarks:tsconfig-build.json",
13+
# TODO: FW-1004 Type checking is currently not complete.
14+
type_check = False,
15+
deps = [
16+
"//modules/benchmarks/src:util_lib",
17+
"//modules/benchmarks/src/largetable:util_lib",
18+
"//packages/core",
19+
"//packages/platform-browser",
20+
"//packages/platform-browser-dynamic",
21+
],
22+
)
23+
24+
ts_devserver(
25+
name = "devserver",
26+
entry_module = "angular/modules/benchmarks/src/largetable/ng2/index",
27+
index_html = "index.html",
28+
port = 4200,
29+
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
30+
static_files = [
31+
"@ngdeps//node_modules/zone.js:dist/zone.js",
32+
"@ngdeps//node_modules/reflect-metadata:Reflect.js",
33+
],
34+
deps = [":ng2"],
35+
)

modules/benchmarks/src/largetable/ng2/index.html

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<!doctype html>
22
<html>
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
37
<body>
48

59
<h2>Params</h2>
@@ -24,11 +28,5 @@ <h2>Ng2 Largetable Benchmark</h2>
2428
<div>
2529
<largetable id="root">Loading...</largetable>
2630
</div>
27-
28-
<script>
29-
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
30-
|| '../../bootstrap_ng2.js';
31-
document.write('<script src="' + mainUrl + '">\u003c/script>');
32-
</script>
3331
</body>
3432
</html>

modules/benchmarks/src/largetable/ng2/index.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,5 @@ import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
1212
import {init} from './init';
1313
import {AppModule} from './table';
1414

15-
export function main() {
16-
enableProdMode();
17-
platformBrowserDynamic().bootstrapModule(AppModule).then(init);
18-
}
15+
enableProdMode();
16+
platformBrowserDynamic().bootstrapModule(AppModule).then(init);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
load("//tools:defaults.bzl", "ng_module")
2+
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
3+
4+
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
5+
6+
ng_module(
7+
name = "ng2_switch",
8+
srcs = glob(["*.ts"]),
9+
tsconfig = "//modules/benchmarks:tsconfig-build.json",
10+
# TODO: FW-1004 Type checking is currently not complete.
11+
type_check = False,
12+
deps = [
13+
"//modules/benchmarks/src:util_lib",
14+
"//modules/benchmarks/src/largetable:util_lib",
15+
"//packages/core",
16+
"//packages/platform-browser",
17+
"//packages/platform-browser-dynamic",
18+
],
19+
)
20+
21+
ts_devserver(
22+
name = "devserver",
23+
entry_module = "angular/modules/benchmarks/src/largetable/ng2_switch/index",
24+
index_html = "index.html",
25+
port = 4200,
26+
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
27+
static_files = [
28+
"@ngdeps//node_modules/zone.js:dist/zone.js",
29+
"@ngdeps//node_modules/reflect-metadata:Reflect.js",
30+
],
31+
deps = [":ng2_switch"],
32+
)

modules/benchmarks/src/largetable/ng2_switch/index.html

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<!doctype html>
22
<html>
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
37
<body>
48

59
<h2>Params</h2>
@@ -24,11 +28,5 @@ <h2>Ng2 with NgSwitch Largetable Benchmark</h2>
2428
<div>
2529
<largetable id="root">Loading...</largetable>
2630
</div>
27-
28-
<script>
29-
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
30-
|| '../../bootstrap_ng2.js';
31-
document.write('<script src="' + mainUrl + '">\u003c/script>');
32-
</script>
3331
</body>
3432
</html>

modules/benchmarks/src/largetable/ng2_switch/index.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,5 @@ import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
1212
import {init} from './init';
1313
import {AppModule} from './table';
1414

15-
export function main() {
16-
enableProdMode();
17-
platformBrowserDynamic().bootstrapModule(AppModule).then(init);
18-
}
15+
enableProdMode();
16+
platformBrowserDynamic().bootstrapModule(AppModule).then(init);

modules/benchmarks/src/largetable/render3/BUILD.bazel

-8
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,12 @@ ng_rollup_bundle(
3232
],
3333
)
3434

35-
genrule(
36-
name = "favicon",
37-
srcs = ["//modules/benchmarks:favicon"],
38-
outs = ["favicon.ico"],
39-
cmd = "cp $< $@",
40-
)
41-
4235
ts_devserver(
4336
name = "devserver",
4437
static_files = [
4538
":bundle.min_debug.js",
4639
":bundle.min.js",
4740
"index.html",
48-
":favicon",
4941
],
5042
tags = ["ivy-only"],
5143
)

modules/benchmarks/src/largetable/render3/index.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<!doctype html>
22
<html>
3-
3+
<head>
4+
<!-- Prevent the browser from requesting any favicon. -->
5+
<link rel="icon" href="data:,">
6+
</head>
47
<body>
58

69
<h2>Params</h2>

0 commit comments

Comments
 (0)