-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathguids.js
More file actions
57 lines (40 loc) · 1.31 KB
/
guids.js
File metadata and controls
57 lines (40 loc) · 1.31 KB
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
var N = 10000
var setka = [1000, 10000, 50000, 100000];
for (var s=0; s<setka.length; s++){
var ObjectHolder = {};
var GuidsArr = [];
var Arr2 = [];
var Arr3 = [];
var M = setka[s];
// генерируем массив объектов и сохраняем гуиды
for (var i=0; i<M; i++) {
var g = guid();
ObjectHolder[g] = {Counter:0};
GuidsArr.push(g);
}
// формируем массив с N гиудами
for (var i=0; i<N; i++)
Arr2.push(GuidsArr[rand(0, GuidsArr.length-1)]);
// замеряем
console.time('time1 M='+ M);
for (var i=0; i<N; i++)
ObjectHolder[Arr2[i]].Counter++;
console.timeEnd('time1 M='+ M);
// формируем массив с N объектами
for (var i=0; i<N; i++)
Arr3.push(ObjectHolder[GuidsArr[rand(0, GuidsArr.length-1)]]);
console.time('time2 M='+ M);
for (var i=0; i<N; i++)
Arr3[i].Counter++;
console.timeEnd('time2 M='+ M);
}
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
};
return s4() + s4() +'-'+ s4() +'-'+ s4() +'-'+
s4() +'-'+ s4() + s4() + s4();
}
function rand(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}