Demo entry 6319226

homework

   

Submitted by Soley on Nov 07, 2016 at 19:45
Language: Python. Code size: 2.9 kB.

# coding=utf-8

# Dæmi3 - vb11. Búið til töflu R(key, value) með og án vísis 
# á key (í 2 mismunandi gagnagrunna) og setjið inn 10 milljón
# handahófskennd heiltölugildi á bilinu 0-10000000 í töfluna.

# a) mælið tímann sem það tekur að setja inn gildin með og án vísis
# b) mælið tímann sem það tekur að keyra fyrirspurnina 
# SELECT COUNT(*) FROM R WHERE key >= 1000
# AND key <= 10000; með og án vísis

import sqlite3
import time

# Búum til gagnagrunninn sem við notum.
conn = sqlite3.connect('vb11_3.db')
c = conn.cursor()

# a.1) mæla tímann sem það tekur að setja inn gildin ÁN VÍSIS
# Búum til töflu R:
c.execute("DROP TABLE IF EXISTS R")
c.execute("CREATE TABLE R(key INT, value INT)")
conn.commit()

# Búum til timer -  til að taka tímann
start_a1 = time.clock()

# Data er fylki sem heldur utanum heiltölugildin frá 0-100000000
data1 = [(i, 1) for i in range(10000000)]

# Setjum gögnin í töfluna R:
c.executemany("INSERT INTO R VALUES(?,?)", data1)

# stoppum tímann:
stop_a1 = time.clock() - start_a1

conn.commit()

# a.2) mæla tímann sem það tekur að setja inn gildin MEÐ VÍSI
# Búum til töflu R2:
c.execute("DROP TABLE IF EXISTS R2")
c.execute("CREATE TABLE R2(key INT, value INT)")
c.execute("CREATE INDEX KeyIndex ON R2(key)")
conn.commit()

# Ekki gleyma að setja tímann í gang!
start_a2 = time.clock()

# Data er fylki sem heldur utanum heiltölugildin frá 0-100000000
data2 = [(i, 1) for i in range(10000000)]

# Setjum gögnin í töfluna:
c.executemany("INSERT INTO R2 VALUES(?,?)", data2)

# Stoppum tímann
stop_a2 = time.clock()-start_a2

# Prentum út tímann:
print "Timi an visis: " +str(stop_a1)
print "Timi med visi: " +str(stop_a2)

# b.1) mælum tímann sem það tekur að keyra fyrirspurnina ÁN VÍSIS
# SELECT COUNT(*) FROM R WHERE key >= 1000 AND key <=10000
# Setjum tímann í gang:
start_b1 = time.clock()
# tafla R er tafla ÁN VÍSIS og það er búið að setja gildin inn í hana. 
# Við viljum bara taka tímann á því hvað það tekur langan tíma 
# að telja gildin á milli 1000 og 10000.
c.execute("SELECT COUNT(*) FROM R WHERE key >= 1000 AND key <= 10000")

# stoppum tímann
stop_b1 = time.clock()-start_b1
conn.commit()

# b.2) mælum tímann sem það tekur að keyra fyrirspurnina MEÐ VÍSI
# SELECT COUNT(*) FROM R WHERE key >= 1000 AND key <=10000
# Setjum tímann í gang:
start_b2 = time.clock()
# tafla R2 er tafla MEÐ VÍSI og það er búið að setja gildin inn í hana. 
# Við viljum bara taka tímann á því hvað það tekur langan tíma að 
# telja gildin á milli 1000 og 10000.
c.execute("SELECT COUNT(*) FROM R2 WHERE key >= 1000 AND key <= 10000")

# stoppum tímann
stop_b2 = time.clock()-start_b2
conn.commit()

# prentum út tímann:
print "SELECT an visis: " +str(stop_b1)
print "SELECT med visi: " +str(stop_b2)

#conn.commit()
conn.close()

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).