On Tuesday, November 26, 2002, at 03:01 AM, Robert Ramey wrote:
No, Robert, one virtual function call can be much slower than changing byte order when copying integers.Date: Mon, 25 Nov 2002 10:41:17 +0100 From: Matthias Troyer <[EMAIL PROTECTED]>I guess this should be changed to: #ifdef BOOST_HAS_MS_INT64 virtual basic_iarchive & operator>>(int64_t & _Val) = 0; virtual basic_iarchive & operator>>(uint64_t & _Val) = 0; #endif #ifdef BOOST_HAS_LONG_LONG virtual basic_iarchive & operator>>(long long & _Val) = 0; #endifThis sounds better. Thanks.whoops, that doesn't work either - this will take some work to address.why can't this be handled using basic_oarchive::write_binary(void *p, size_t count)This does not allow type-specific transformation (e.g. change of byte order) to be performed. Thus we neeed one such function for each primitive type.I fail to see the problem. If you want superfast i/o with only once virtual function call use basic_oarchive::write_binary(void *p, size_t count) If you want each array item handled individually use ar << t Note that if t is a fundamental type, all serialization machinery is effectively bypassed. So the only overhead is one vtable indirection which should be small compared to doing something like changing bigendian to little endien
Matthias
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost