aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2004-01-30 17:06:42 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2004-01-30 17:06:42 +0000
commit33e95e9d04f933f645493ca5699c4d282930ba03 (patch)
treee11edb1a4469b6923bc6712c0ec30309ea3e2a27 /libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
parent48ef529f41516b02d71d415a5b38ae8cb8e068cb (diff)
downloadgcc-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.cc84
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;
+}