-
Notifications
You must be signed in to change notification settings - Fork 10
/
extract_index.py
92 lines (60 loc) · 1.92 KB
/
extract_index.py
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
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/python3
import json
from dateutil import parser
import operator
import datetime
import sys
input_har = json.load(open(sys.argv[1], "r"))
objects=[]
bytes=[]
tot_bytes=0
tot_obj=0
start_time=parser.parse(input_har["log"]["entries"][0]["startedDateTime"]).timestamp()
domain=input_har["log"]["pages"][0]["title"].split("/")[2]
on_load_time=input_har["log"]["pages"][0]["pageTimings"]["onLoad"]
DOM_load_time=input_har["log"]["pages"][0]["pageTimings"]["onContentLoad"]
for entry in input_har["log"]["entries"]:
obj_start_time=parser.parse(entry["startedDateTime"]).timestamp()
obj_delta_time= sum( [ v for v in entry["timings"].values() if v != -1])
obj_time = obj_start_time - start_time + obj_delta_time/1000
size = entry["response"]["bodySize"]
objects.append( (obj_time, 1 ))
bytes.append ( (obj_time, size))
tot_bytes+=size
tot_obj+=1
last_obj_time=obj_time
'''
#should return 4
tot_bytes=tot_obj=4
bytes=( (1,1),(3,1),(4,1),(8,1) )
objects=( (1,1),(3,1),(4,1),(8,1) )
objects=sorted(objects,key=operator.itemgetter(0))
bytes=sorted(bytes,key=operator.itemgetter(0))
'''
cumul_bytes=0
cumul_objects=0
for i in range (len(bytes)):
time, size = bytes[i]
bytes[i] = (time, size/tot_bytes + cumul_bytes)
objects[i] = (time, 1/tot_obj + cumul_objects)
cumul_bytes=size/tot_bytes + cumul_bytes
cumul_objects=1/tot_obj + cumul_objects
bytes = [(t, round(1-b,5)) for t,b in bytes]
objects = [(t, round(1-b,5)) for t,b in objects]
prec_score=1
prec_time=0
byte_index=0
for time, score in bytes:
component=(time-prec_time)*prec_score
byte_index+=component
prec_score=score
prec_time = time
prec_score=1
prec_time=0
object_index=0
for time, score in objects:
component=(time-prec_time)*prec_score
object_index+=component
prec_score=score
prec_time = time
print(domain, byte_index, object_index, on_load_time/1000, DOM_load_time/1000 )