[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Patch



The attached tar file contains re-worked xdr.h and giop.h and a patch of all
the other little changes that I've made. The patch is against xtl-1.3.pl.8.

The patch is largely small changes to the code to make it strictly ANSI
compliant, so that I could compile with DEC's cxx. There are other small
changes, however.

Note 1
=====
xdr.h now aligns data on 32 bit boundaries. Data remains in big endian format.
Both it and giop.h work cleanly. Note that the input_raw() routines are
unchanged from the original versions.

Note 2
=====
All code, except examples/auto compiles with both DEC cxx and gcc-2.95.2.
examples/auto triggers an internal compiler bug in gcc.
All code compiles without warnings, except for DEC cxx's declaration that long
long is not standard. rpcgen also has warnings. See earlier post.
All compiled code runs successfully. The benchmark results are at the bottom of
this mail.

Note 3
=====
The "quick hack" in md.h was incorrect. I've replaced it with my own that does
work!

Note 4
=====
I've created a new method in generic_format::reset_buffer()

        void reset_buffer() {
                buffer.rewind();
                output_start();
        }

(and similarly in v_format)

This is used in examples/bench/xtl and examples/bench/vxtl, replacing
	mb.rewind()
with
	gf.reset_buffer()
etc.

I've done this because mb.rewind() loses the byte order and alignment
information in GIOP_format.

Note 5
=====
I've modified alltests.h to make it a harder test for alignment.

Note 6
=====
In the copyright notice at the start of each file, shouldn't the web address:
	jop@di.uminho.pt - http://gsd.di.uminho.pt/~jop
be
	jop@di.uminho.pt - http://gsd.di.uminho.pt/jop
?

Best wishes,
Angus

Benchmark results
==============
Note the times for raw!!!!


Fri Apr 28 13:13:19 BST 2000

bench/memcpy

memcpy

real   0.1
user   0.1
sys    0.0

real   0.1
user   0.1
sys    0.0

real   0.1
user   0.1
sys    0.0
memcpy opt

real   0.1
user   0.1
sys    0.0

real   0.1
user   0.1
sys    0.0

real   0.1
user   0.1
sys    0.0

bench/rpcgen

rpcgen

real   1.9
user   1.9
sys    0.0

real   1.9
user   1.9
sys    0.0

real   1.9
user   1.9
sys    0.0
rpcgen opt

real   2.2
user   2.0
sys    0.0

real   2.1
user   2.0
sys    0.0

real   3.8
user   2.1
sys    0.0

bench/xtl

xdr
436000

real   11.6
user   8.5
sys    0.0
436000

real   11.7
user   8.5
sys    0.0
436000

real   11.5
user   8.5
sys    0.0
xdr opt
436000

real   1.6
user   1.2
sys    0.0
436000

real   1.6
user   1.2
sys    0.0
436000

real   1.6
user   1.2
sys    0.0
giop
455996

real   17.1
user   11.4
sys    0.0
455996

real   17.8
user   11.4
sys    0.0
455996

real   16.7
user   11.4
sys    0.0
giop opt
455996

real   3.8
user   2.7
sys    0.0
455996

real   3.5
user   2.7
sys    0.0
455996

real   3.5
user   2.6
sys    0.0
raw
415000

real   3830.7
user   17.1
sys    138.6
415000

real   3830.7
user   17.2
sys    137.3
415000

real   3838.6
user   17.1
sys    138.2
raw opt
415000

real   3889.4
user   6.2
sys    137.3
415000

real   3885.6
user   6.2
sys    137.9
415000

real   3893.4
user   6.2
sys    137.7

patch.tar.gz