-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.dart
70 lines (60 loc) · 1.58 KB
/
example.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import 'package:safe/Safe.dart';
void main() {
final dynamic v = {
'dog': [
'aa',
'bb',
10,
{'sub': '123'},
[10, 20]
],
'cat': {
'sub': '123',
20: ['apple', 'banana', 20]
},
};
print(Safe.run(() => v['dog'][0]));
print(Safe.get(v, ['dog', 3, 'sub', 12323, 'fdasfdsa']));
print(Safe.set(v, ['dog', 3, 'sub'], '100'));
// 性能测试: 无任何判断 共耗时 8.312ms
var p1 = TimeLog.point();
for (var i = 0; i < 100000; i++) {
var a = v['dog'][3]['sub'];
}
TimeLog.long(p1);
// 性能测试: try-catch, 无错误时, 共耗时 10.33ms
var p2 = TimeLog.point();
for (var i = 0; i < 100000; i++) {
Safe.run(() => v['dog'][3]['sub']);
}
TimeLog.long(p2);
// 性能测试: try-catch, 捕获错误时, 共耗时 563.099ms
var p3 = TimeLog.point();
for (var i = 0; i < 100000; i++) {
Safe.run(() => v['dog'][3]['sub']['213213']);
}
TimeLog.long(p3);
// 性能测试: 判断路径安全 共耗时 15.835ms
var p4 = TimeLog.point();
for (var i = 0; i < 100000; i++) {
Safe.get(v, ['dog', 3]);
}
TimeLog.long(p4);
// 性能测试: 判断路径安全 共耗时 13.73ms
var p5 = TimeLog.point();
for (var i = 0; i < 100000; i++) {
Safe.set(v, ['dog', 2], 'new-dog');
}
TimeLog.long(p5);
}
class TimeLog {
static bool isDev = true;
static int point() {
return DateTime.now().microsecondsSinceEpoch;
}
static void long(num t, [String name = 'Use time: ']) {
if (isDev) {
print('$name${(DateTime.now().microsecondsSinceEpoch - t) / 1000}ms');
}
}
}