diff options
author | Paolo Carlini <pcarlini@suse.de> | 2004-01-30 17:06:42 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2004-01-30 17:06:42 +0000 |
commit | 33e95e9d04f933f645493ca5699c4d282930ba03 (patch) | |
tree | e11edb1a4469b6923bc6712c0ec30309ea3e2a27 /libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc | |
parent | 48ef529f41516b02d71d415a5b38ae8cb8e068cb (diff) | |
download | gcc-33e95e9d04f933f645493ca5699c4d282930ba03.zip gcc-33e95e9d04f933f645493ca5699c4d282930ba03.tar.gz gcc-33e95e9d04f933f645493ca5699c4d282930ba03.tar.bz2 |
Reshuffle performance testsuite.
2004-01-30 Paolo Carlini <pcarlini@suse.de>
Reshuffle performance testsuite.
* testsuite/performance/allocator.cc, allocator_map_thread.cc,
allocator_thread.cc, complex_norm.cc, container_benchmark.cc,
cout_insert_int.cc, filebuf_copy.cc, filebuf_sputc.cc,
fstream_seek_write.cc, ifstream_extract_float.cc,
ifstream_extract_int.cc, ifstream_getline.cc, is_wchar_t.cc,
list_create_fill_sort.cc, map_create_fill.cc,
narrow_widen_char.cc, narrow_widen_wchar_t.cc,
ofstream_insert_float.cc, ofstream_insert_int.cc,
string_append.cc, wchar_t_in.cc, wchar_t_length.cc,
wchar_t_out.cc: Split into...
* testsuite/performance/20_util/allocator.cc: New.
* testsuite/performance/20_util/allocator_map_thread.cc: New.
* testsuite/performance/20_util/allocator_thread.cc: New.
* testsuite/performance/21_strings/string_append: New.
* testsuite/performance/22_locale/is_wchar_t.cc: New.
* testsuite/performance/22_locale/narrow_widen_char.cc: New.
* testsuite/performance/22_locale/narrow_widen_wchar_t.cc: New.
* testsuite/performance/22_locale/wchar_t_in.cc: New.
* testsuite/performance/22_locale/wchar_t_length.cc: New.
* testsuite/performance/22_locale/wchar_t_out.cc: New.
* testsuite/performance/23_containers/container_benchmark.cc: New.
* testsuite/performance/23_containers/list_create_fill_sort.cc: New.
* testsuite/performance/23_containers/map_create_fill.cc: New.
* testsuite/performance/26_numerics/complex_norm.cc: New.
* testsuite/performance/27_io/cout_insert_int.cc: New.
* testsuite/performance/27_io/filebuf_copy.cc: New.
* testsuite/performance/27_io/filebuf_sputc.cc: New.
* testsuite/performance/27_io/fstream_seek_write.cc: New.
* testsuite/performance/27_io/ifstream_extract_float.cc: New.
* testsuite/performance/27_io/ifstream_extract_int.cc: New.
* testsuite/performance/27_io/ifstream_getline.cc: New.
* testsuite/performance/27_io/ofstream_insert_float.cc: New.
* testsuite/performance/27_io/ofstream_insert_int.cc: New.
From-SVN: r76974
Diffstat (limited to 'libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc')
-rw-r--r-- | libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc b/libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc new file mode 100644 index 0000000..4e51068 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc @@ -0,0 +1,84 @@ +// Copyright (C) 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#include <cstdio> +#include <cstring> +#include <fstream> +#include <langinfo.h> +#include <iconv.h> +#include <testsuite_performance.h> + +// libstdc++/11602 +int main(int argc, char** argv) +{ + using namespace std; + using namespace __gnu_test; + + time_counter time; + resource_counter resource; + const int iters = 300000; + + wchar_t wbuf[1024]; + char cbuf[1024]; + + wmemset(wbuf, L'a', 1024); + + // C (iconv) + iconv_t cd = iconv_open(nl_langinfo(CODESET), "WCHAR_T"); + start_counters(time, resource); + for (int i = 0; i < iters; ++i) + { + size_t inbytesleft = 1024 * sizeof(wchar_t); + size_t outbytesleft = 1024; + char* in = reinterpret_cast<char*>(wbuf); + char* out = cbuf; + iconv(cd, &in, &inbytesleft, &out, &outbytesleft); + } + stop_counters(time, resource); + iconv_close(cd); + report_performance(__FILE__, "C (iconv)", time, resource); + clear_counters(time, resource); + + // C++ (codecvt) + locale loc; + const codecvt<wchar_t, char, mbstate_t>& cvt = + use_facet<codecvt<wchar_t, char, mbstate_t> >(loc); + mbstate_t state; + memset(&state, 0, sizeof(state)); + start_counters(time, resource); + for (int i = 0; i < iters; ++i) + { + const wchar_t* from_next; + char* to_next; + cvt.out(state, wbuf, wbuf + 1024, from_next, + cbuf, cbuf + 1024, to_next); + } + stop_counters(time, resource); + report_performance(__FILE__, "C++ (codecvt)", time, resource); + + return 0; +} |