https://github.com/eastzone/atpg
Tip revision: 9d7a7fe55529326bf4b734f65c3eef07bd707d3f authored by eastzone on 11 August 2015, 05:09:41 UTC
[license] More missing files
[license] More missing files
Tip revision: 9d7a7fe
link_cover.py
#!/usr/bin/python
import sqlite3, time, random
DATABASE_FILE = "work/internet2.sqlite"
rule_lists = []
query = "SELECT rules FROM test_packets_globally_compressed"
conn = sqlite3.connect(DATABASE_FILE, 6000)
rows = conn.execute(query)
for row in rows:
rule_lists.append(row[0].split())
conn.close()
st = time.time()
rule_ids_set = set()
for rule_list in rule_lists:
for rule in rule_list:
if rule.startswith("link"):
rule_ids_set.add(rule)
start_packets = len(rule_lists)
result_rule_lists = []
while(len(rule_ids_set) > 0):
lucky_index = random.randint(0, len(rule_lists)-1)
rule_list = rule_lists[lucky_index]
for r in rule_list:
new = False
if r.startswith("link"):
if r in rule_ids_set:
new = True
result_rule_lists.append(rule_list)
# Rules that have been hit already
if new:
for r2 in rule_list:
if r2.startswith("link"):
if r2 in rule_ids_set:
rule_ids_set.remove(r2)
del rule_lists[lucky_index]
break
end_packets = len(result_rule_lists)
en = time.time()
print "Compression: Start=%d, End=%d, Ratio=%f, Time=%f" % (start_packets, end_packets, float(end_packets)/start_packets, en-st)