Skip to content

Commit ae5d3df

Browse files
authored
Dart build modes (aot/jit) (#101)
1 parent a0afe77 commit ae5d3df

File tree

12 files changed

+165
-16
lines changed

12 files changed

+165
-16
lines changed

bench/algorithm/binarytrees/4.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class Manager {
127127
}
128128

129129
Future<void> main(List<String> args) async {
130-
int n = args.length > 0 ? int.parse(args[0]) : 0;
130+
int n = args.length > 0 ? int.parse(args[0]) : 7;
131131

132132
// Start up the workers, then dispatch work to them
133133
final futureManager = Manager.init(workerCount);

bench/algorithm/edigits/1.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,26 @@ public static void Main(string[] args)
1717
var a = BigInteger.Pow(new BigInteger(10), n - 1);
1818
var answer = p * a / q;
1919
var answerStr = answer.ToString();
20+
Span<char> sb = stackalloc char[10];
2021
for (var i = 0; i < n; i += 10)
2122
{
22-
Span<char> sb = stackalloc char[10] { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', };
23-
for (var j = i; j < n && j < i + 10; j++)
24-
{
25-
sb[j - i] = answerStr[j];
26-
}
2723
var count = i + 10;
2824
if (count > n)
2925
{
3026
count = n;
3127
}
28+
for (var j = i; j < i + 10; j++)
29+
{
30+
if (j < n)
31+
{
32+
sb[j - i] = answerStr[j];
33+
}
34+
else
35+
{
36+
sb[j - i] = ' ';
37+
}
38+
}
39+
3240
Console.WriteLine($"{new String(sb)}\t:{count}");
3341
}
3442
}

bench/algorithm/edigits/1.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import 'dart:math' as Math;
2+
3+
void main(List<String> arguments) {
4+
var n = arguments.length > 0 ? int.parse(arguments[0]) : 27;
5+
var k = binarySearch(n);
6+
var l = sumTerms(0, k - 1);
7+
var p = l[0];
8+
var q = l[1];
9+
p += q;
10+
var a = BigInt.from(10).pow(n - 1);
11+
var answer = p * a ~/ q;
12+
var answerStr = answer.toString();
13+
for (var i = 0; i < n; i += 10) {
14+
var count = i + 10;
15+
if (count > n) {
16+
count = n;
17+
}
18+
var sb = [32, 32, 32, 32, 32, 32, 32, 32, 32, 32];
19+
for (var j = i; j < n && j < i + 10; j++) {
20+
sb[j - i] = answerStr.codeUnitAt(j);
21+
}
22+
print("${String.fromCharCodes(sb)}\t:$count");
23+
}
24+
}
25+
26+
List<BigInt> sumTerms(int a, int b) {
27+
if (b == a + 1) {
28+
return [BigInt.from(1), BigInt.from(b)];
29+
}
30+
var mid = (a + b) ~/ 2;
31+
var pairLeft = sumTerms(a, mid);
32+
var pairRight = sumTerms(mid, b);
33+
return [
34+
pairLeft[0] * pairRight[1] + pairRight[0],
35+
pairLeft[1] * pairRight[1]
36+
];
37+
}
38+
39+
int binarySearch(int n) {
40+
var a = 0;
41+
var b = 1;
42+
while (!testK(n, b)) {
43+
a = b;
44+
b *= 2;
45+
}
46+
while (b - a > 1) {
47+
var m = (a + b) ~/ 2;
48+
if (testK(n, m)) {
49+
b = m;
50+
} else {
51+
a = m;
52+
}
53+
}
54+
return b;
55+
}
56+
57+
bool testK(int n, int k) {
58+
if (k < 0) {
59+
return false;
60+
}
61+
var lnKFactorial = k * (Math.log(k) - 1) + 0.5 * Math.log(Math.pi * 2);
62+
var log10KFactorial = lnKFactorial / Math.ln10;
63+
return log10KFactorial >= n + 50;
64+
}

bench/algorithm/mandelbrot/2.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'dart:async';
44
import 'dart:typed_data';
55

66
void main(args) {
7-
int n = args.length > 0 ? int.parse(args[0]) : 2000;
7+
int n = args.length > 0 ? int.parse(args[0]) : 200;
88

99
var threads = Platform.numberOfProcessors;
1010
final segmentFutures = <Future>[];

bench/algorithm/nbody/3.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'dart:math' as Math;
1111
import 'dart:typed_data';
1212

1313
void main(args) {
14-
int n = args.length > 0 ? int.parse(args[0]) : 0;
14+
int n = args.length > 0 ? int.parse(args[0]) : 10000;
1515

1616
NBodySystem system = NBodySystem();
1717
print(system.energy().toStringAsFixed(9));

bench/bench_dart.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ problems:
2121
- name: pidigits
2222
source:
2323
- 2.dart
24+
- name: edigits
25+
source:
26+
- 1.dart
2427
- name: spectral-norm
2528
source:
2629
- 1.dart
@@ -41,3 +44,17 @@ environments:
4144
build: dart compile exe app.dart -o out/app
4245
out_dir: out
4346
run_cmd: app
47+
- os: linux
48+
compiler: dart/aot
49+
version: latest
50+
docker:
51+
include: dart
52+
include_sub_dir:
53+
before_build:
54+
- dart pub get
55+
build: dart compile aot-snapshot app.dart -o out/app.aot
56+
out_dir: out
57+
run_cmd: dartaotruntime app.aot
58+
runtime_included: false
59+
runtime_version_parameter: --version
60+

bench/bench_dart_jit.yaml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
lang: dart
2+
problems:
3+
- name: helloworld
4+
source:
5+
- 1.dart
6+
- name: binarytrees
7+
source:
8+
- 4.dart
9+
- name: fasta
10+
source:
11+
- 1.dart
12+
- name: fannkuch-redux
13+
source:
14+
- 2.dart
15+
# - name: mandelbrot
16+
# source:
17+
# - 2.dart
18+
- name: nbody
19+
source:
20+
- 3.dart
21+
- name: pidigits
22+
source:
23+
- 2.dart
24+
- name: edigits
25+
source:
26+
- 1.dart
27+
- name: spectral-norm
28+
source:
29+
- 1.dart
30+
compiler_version_command: dart --version
31+
compiler_version_regex:
32+
runtime_version_parameter:
33+
runtime_version_regex:
34+
source_rename_to: app.dart
35+
environments:
36+
- os: linux
37+
compiler: dart/jit
38+
version: latest
39+
docker:
40+
include: dart
41+
include_sub_dir:
42+
before_build:
43+
- dart pub get
44+
build: dart compile jit-snapshot app.dart -o out/app.jit
45+
out_dir: out
46+
run_cmd: dart run app.jit
47+
runtime_included: false
48+
runtime_version_parameter: --version

bench/bench_java.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,14 @@ environments:
8989
build: javac app.java -d out && cp -r /opt/java/openjdk ./out
9090
out_dir: out
9191
run_cmd: openjdk/bin/java app
92-
- os: linux
93-
compiler: adoptopenjdk-openj9
94-
version: 16
95-
docker: adoptopenjdk/openjdk16-openj9:slim
96-
include:
97-
build: javac app.java -d out && cp -r /opt/java/openjdk ./out
98-
out_dir: out
99-
run_cmd: openjdk/bin/java app
92+
# - os: linux
93+
# compiler: adoptopenjdk-openj9
94+
# version: 16
95+
# docker: adoptopenjdk/openjdk16-openj9:slim
96+
# include:
97+
# build: javac app.java -d out && cp -r /opt/java/openjdk ./out
98+
# out_dir: out
99+
# run_cmd: openjdk/bin/java app
100100
# - os: linux
101101
# compiler: zuluopenjdk
102102
# version: 16

bench/bench_rust_wasm_deno.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ problems:
2525
source:
2626
# - 1.rs
2727
- 2.rs
28+
- name: edigits
29+
source:
30+
- 1.rs
2831
source_rename_to: main.rs
2932
compiler_version_command: rustc -V
3033
compiler_version_regex:

bench/bench_rust_wasm_node.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ problems:
2525
source:
2626
# - 1.rs
2727
- 2.rs
28+
- name: edigits
29+
source:
30+
- 1.rs
2831
source_rename_to: main.rs
2932
compiler_version_command: rustc -V
3033
compiler_version_regex:

0 commit comments

Comments
 (0)