[Liblas-devel] I/O performance? -- your help requested!
Smith, Michael ERDC-CRREL-NH
michael.smith at usace.army.mil
Sat Feb 5 07:47:53 EST 2011
lidar at lidarora1 tmp]$ uname -a
Linux lidarora1 2.6.32-100.0.19.el5 #1 SMP Fri Sep 17 17:51:41 EDT 2010
x86_64 x86_64 x86_64 GNU/Linux
2 CPU, 4cores/cpu + hyperthreading = 16 virtual cores
processor : 15
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU X5570 @ 2.93GHz
stepping : 5
cpu MHz : 1600.000
cache size : 8192 KB
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.18 seconds
real 0m0.379s
user 0m0.349s
sys 0m0.029s
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.17 seconds
real 0m0.366s
user 0m0.336s
sys 0m0.029s
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.16 seconds
real 0m0.366s
user 0m0.338s
sys 0m0.026s
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000 -s
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.16 seconds
real 0m0.364s
user 0m0.338s
sys 0m0.024s
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000 -s
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.17 seconds
real 0m0.369s
user 0m0.339s
sys 0m0.028s
[lidar at lidarora1 tmp]$ time laszippertest -n 1000000 -s
(skipping range coder test)
laszipper1 wrote 7000000 bytes in 0.03 seconds
laszipper2 wrote 3898142 bytes in 0.13 seconds
SUCCESS: lasunzipper1 read 7000000 bytes in 0.02 seconds
SUCCESS: lasunzipper2 read 3898142 bytes in 0.17 seconds
real 0m0.364s
user 0m0.335s
sys 0m0.027s
--
Michael Smith
Remote Sensing/GIS Center
US Army Corps of Engineers
On 2/4/11 11:39 AM, "Michael P. Gerlek" <mpg at flaxen.com> wrote:
> Do you have 5-10 minutes to spare today?
>
> Your libLAS team (well, me anyway) is wondering about I/O performance of the
> liblas kit -- specifically, when doing binary reading and writing, is there
> any fundamental performance difference between using C-style FILE* I/O and
> C++-style stream I/O? And if streams are better, would boost's stream be
> better still? If you google around a bit, you'll find lots of contradictory
> (and sometimes overly passionate) statements about this topic. At the end
> of the day, though, the consensus seems to be that:
>
> (1) you need to be "smart" if you're using C++ I/O -- it is easy to shoot
> yourself in the foot
> (2) modern C++ streams are implemented on top of the native OS APIs
> (3) under Visual Studio, FILE* operations and streams are both implemented
> using the win32 APIs, but streams have an additional lock (that is claimed
> by some to be not needed)
>
> and, most importantly,
>
> (4) performance varies greatly with different I/O patterns, e.g. large
> sequential block reads vs small random reads
>
> Very fortunately, we happen to already have a rough, 1st-order I/O
> performance test built into the laszip tree. If you have that tree built
> (http://hg.liblas.org/zip), in Release mode, could you please send me the
> results of running the "laszippertest" test app, as follows?
>
> time ./laszippertest -n 1000000
> time ./laszippertest -n 1000000
> time ./laszippertest -n 1000000
> time ./laszippertest -n 1000000 -s
> time ./laszippertest -n 1000000 -s
> time ./laszippertest -n 1000000 -s
>
> The first three runs will encode and decode 1 million random points using
> FILEs, and the second three will do it with streams. This is not a perfect
> test, but it represents something approximating the real I/O footprint or
> traces that liblas uses.
>
> Oh, and be sure to include the kind of platform (processor speed, compiler,
> OS) you're running it on.
>
> Thanks much!
>
> -mpg
>
>
> _______________________________________________
> Liblas-devel mailing list
> Liblas-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/liblas-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/liblas-devel/attachments/20110205/25cfc9f8/attachment.html
More information about the Liblas-devel
mailing list