DMelt:IO/Performance

From HandWiki
Member


I/O performance

The classes HFile and PFile have similar performance. The output files for scientific data are compressed in both cases. PFile typically generate files by 10-20% smaller the serialization using HFile.

Let us write 100 vectors with 10000 random numbers using HFile and PFile and note the time of the execution:

from jhplot import *
from jhplot.io import *
import time

Max=10000
start = time.clock()
f1=HFile("test.ser","w")
for i in range(100):
      p=P0D("test")
      p.randomUniform(Max,0,10)
      f1.write(p)
f1.close()
print 'HFile write=',time.clock()-start

start = time.clock()
f1=PFile("test.pbu","w")
for i in range(100):
      p=P0D("test")
      p.randomUniform(Max,0,10)
      f1.write(p)
f1.close()      
print 'PFile write=',time.clock()-start

The output is:

HFile write= 3.1675735
PFile write= 1.703302514

You can see that PFile class a factor 2 faster in write mode. The PFile file is 10-20% smaller.

from jhplot import *
from jhplot.io import *
import time

tart = time.clock()
f1=HFile("test.ser")
for i in range(100):
      p=f1.read()
      if p == None: break
f1.close()
print 'HFile read=',time.clock()-start

start = time.clock()
f1=PFile("test.pbu")
for i in range(100):
      p=f1.read()
      if p == None: break
f1.close()
print 'PFile read=',time.clock()-start

The output is:

HFile read= 0.918767501
PFile read= 0.591144485

As you can see, the PFile class is faster by 30-40% for the read operation.