On Mon, 24 Oct 2005 07:08:49 -0400, Piyush Kapadia wrote
I too tested boost date and found that it is extremely slow and eventually had to write code that performs much faster.
For parsing only, or for other purposes? Your general statement isn't precise enough to be of help. Slowness in the parsing isn't a new report -- there are certainly a series of changes that would make the to_string routines faster. Some of them have been submitted over time and have been incorporated. Some that have been submitted incorporate statics and other techniques that might compromise the correctness of the library in some environments and hence don't get added. Submissions are always welcome.
Speed is one of major strength of C++, we should produce performance details of each module as well.
If you really want to help, perhaps you should consider becoming the Boost "performance wizard" -- it would be a tremendous amount of work.
For example boost::variant is 20 times slower than boost::any, which are similar in functionality, boost::any is very easy to use and is very fast but does not support serialization.
For what operation? There may be good reason why variant must be slower.
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of __PPS__ Sent: Monday, October 24, 2005 2:18 AM To: boost-users@lists.boost.org Subject: [Boost-users] date_time:
Are there better conversion functions from ISO date format (calendar, ordinal, week dates) in basic and/or extended format? Should conversion from invalid iso date like "20050231" fail or produce same results as date(2005,02,31). (I know that it produces the same results, but is it right to convert invalid iso date representation to valid date?)
In 1.33 the following code produces 2 exceptions: try { std::string ds("20050231"); date d = from_undelimited_string(ds); std::cout << d << std::endl; } catch(bad_day_of_month& e) { std::cout << "exception: " << e.what() << std::endl; } try { date d(2005,02,31); std::cout << d << std::endl; } catch(bad_day_of_month& e) { std::cout << "exception: " << e.what() << std::endl; }
Another thing I noted, some conversion functions accept const std::string &, but most of them accept plain std::string, isn't better to convert all of them to constant references???
Sure unless they copy the string anyway, which I don't think they do.
If anybody interested, I wrote such function that accepts iso date string in any of the above mentioned 6 combinations and returns date. It runs 90-100 times faster than equivalent date_from_iso_string from boost. And yes, it does make sure that "20050229" fails
As I said above, contributions always welcome. Jeff