A Monday 27 September 2010 17:50:55 Koert Kuipers escrigué:
> Hi all,
>
> I have a table that looks like this:
>
> /table (Table(17801755,), shuffle, zlib(1)) ''
> description := {
> "field1": UInt32Col(shape=(), dflt=0, pos=0),
> "field2": UInt32Col(shape=(), dflt=0, pos=1),
> "field3": Float64Col(shape=(), dflt=0.0, pos=2),
> "field4": Float32Col(shape=(), dflt=0.0, pos=3),
> "field5": Float32Col(shape=(), dflt=0.0, pos=4),
> "field6": Float32Col(shape=(), dflt=0.0, pos=5),
> "field7": Float32Col(shape=(), dflt=0.0, pos=6),
> "field8": Float32Col(shape=(), dflt=0.0, pos=7),
> "field9": Float32Col(shape=(), dflt=0.0, pos=8),
> "field10": Float32Col(shape=(), dflt=0.0, pos=9),
> "field11": UInt16Col(shape=(), dflt=0, pos=10),
> "field12": UInt16Col(shape=(), dflt=0, pos=11),
> "field13": UInt16Col(shape=(), dflt=0, pos=12),
> "field14": UInt16Col(shape=(), dflt=0, pos=13),
> "field15": Float64Col(shape=(), dflt=0.0, pos=14),
> "field16": Float32Col(shape=(), dflt=0.0, pos=15),
> "field17": UInt16Col(shape=(), dflt=0, pos=16)}
> byteorder := 'little'
> chunkshape := (248,)
>
> when I run a query on it this is the result:
> >>> start=time.time(); data=f.root.table.readWhere('field1==2912');
> >>> print time.time()-start
>
> 11.0780000687
>
> >>> len(data)
>
> 20678
>
> I wanted to speed up this sort of querying, so created a new table
> with blosc compression and copied the data. My old table has
> expectedrows = 1000000, but since reality turned out to be a lot
> more data I also updated expectedrows to 10000000
>
> /table1 (Table(17801755,), shuffle, blosc(1)) ''
> description := {
> "field1": UInt32Col(shape=(), dflt=0, pos=0),
> "field2": UInt32Col(shape=(), dflt=0, pos=1),
> "field3": Float64Col(shape=(), dflt=0.0, pos=2),
> "field4": Float32Col(shape=(), dflt=0.0, pos=3),
> "field5": Float32Col(shape=(), dflt=0.0, pos=4),
> "field6": Float32Col(shape=(), dflt=0.0, pos=5),
> "field7": Float32Col(shape=(), dflt=0.0, pos=6),
> "field8": Float32Col(shape=(), dflt=0.0, pos=7),
> "field9": Float32Col(shape=(), dflt=0.0, pos=8),
> "field10": Float32Col(shape=(), dflt=0.0, pos=9),
> "field11": UInt16Col(shape=(), dflt=0, pos=10),
> "field12": UInt16Col(shape=(), dflt=0, pos=11),
> "field13": UInt16Col(shape=(), dflt=0, pos=12),
> "field14": UInt16Col(shape=(), dflt=0, pos=13),
> "field15": Float64Col(shape=(), dflt=0.0, pos=14),
> "field16": Float32Col(shape=(), dflt=0.0, pos=15),
> "field17": UInt16Col(shape=(), dflt=0, pos=16)}
> byteorder := 'little'
> chunkshape := (3971,)
>
> >>> start=time.time(); data=f.root.table1.readWhere('field1==2912');
> >>> print time.time()-start
>
> 115.51699996
>
> >>> len(data)
>
> 20678
>
> Not exactly what I expected! I am obviously doing something wrong.
> Any suggestions? Thanks, Koert
Certainly surprising. Can you put your datafile on a public place so
that I can experiment with it?
Thanks,
--
Francesc Alted
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Pytables-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pytables-users