/usr/share/doc/python-tables-doc/bench/LRU-experiments.py is in python-tables-doc 3.1.1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | # Testbed to perform experiments in order to determine best values for
# the node numbers in LRU cache. Tables version.
from __future__ import print_function
from time import time
from tables import *
import tables
print("PyTables version-->", tables.__version__)
filename = "/tmp/junk-tables-100.h5"
NLEAVES = 2000
NROWS = 1000
class Particle(IsDescription):
name = StringCol(16, pos=1) # 16-character String
lati = Int32Col(pos=2) # integer
longi = Int32Col(pos=3) # integer
pressure = Float32Col(pos=4) # float (single-precision)
temperature = Float64Col(pos=5) # double (double-precision)
def create_junk():
# Open a file in "w"rite mode
fileh = open_file(filename, mode="w")
# Create a new group
group = fileh.create_group(fileh.root, "newgroup")
for i in range(NLEAVES):
# Create a new table in newgroup group
table = fileh.create_table(group, 'table' + str(i), Particle,
"A table", Filters(1))
particle = table.row
print("Creating table-->", table._v_name)
# Fill the table with particles
for i in range(NROWS):
# This injects the row values.
particle.append()
table.flush()
# Finally, close the file
fileh.close()
def modify_junk_LRU():
fileh = open_file(filename, 'a')
group = fileh.root.newgroup
for j in range(5):
print("iter -->", j)
for tt in fileh.walk_nodes(group):
if isinstance(tt, Table):
pass
# for row in tt:
# pass
fileh.close()
def modify_junk_LRU2():
fileh = open_file(filename, 'a')
group = fileh.root.newgroup
for j in range(20):
t1 = time()
for i in range(100):
#print("table-->", tt._v_name)
tt = getattr(group, "table" + str(i))
#for row in tt:
# pass
print("iter and time -->", j + 1, round(time() - t1, 3))
fileh.close()
def modify_junk_LRU3():
fileh = open_file(filename, 'a')
group = fileh.root.newgroup
for j in range(3):
t1 = time()
for tt in fileh.walk_nodes(group, "Table"):
tt.attrs.TITLE
for row in tt:
pass
print("iter and time -->", j + 1, round(time() - t1, 3))
fileh.close()
if 1:
# create_junk()
# modify_junk_LRU() # uses the iterator version (walk_nodes)
# modify_junk_LRU2() # uses a regular loop (getattr)
modify_junk_LRU3() # uses a regular loop (getattr)
else:
import profile
import pstats
profile.run('modify_junk_LRU2()', 'modify.prof')
stats = pstats.Stats('modify.prof')
stats.strip_dirs()
stats.sort_stats('time', 'calls')
stats.print_stats()
|