1// Copyright (C) 2003, 2009 Free Software Foundation, Inc. 2// 3// This file is part of the GNU ISO C++ Library. This library is free 4// software; you can redistribute it and/or modify it under the 5// terms of the GNU General Public License as published by the 6// Free Software Foundation; either version 3, or (at your option) 7// any later version. 8 9// This library is distributed in the hope that it will be useful, 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12// GNU General Public License for more details. 13 14// You should have received a copy of the GNU General Public License along 15// with this library; see the file COPYING3. If not see 16// <http://www.gnu.org/licenses/>. 17 18 19#include <locale> 20#include <testsuite_performance.h> 21 22int main() 23{ 24 using namespace std; 25 using namespace __gnu_test; 26 27 time_counter time; 28 resource_counter resource; 29 wchar_t bufwc[] = L"Mi innamoravo di tutto (Fabrizio De Andre')"; 30 char bufc[sizeof(bufwc) / sizeof(wchar_t)]; 31 32 locale loc; 33 const ctype<wchar_t>& ct = use_facet<ctype<wchar_t> >(loc); 34 35 // narrow 36 start_counters(time, resource); 37 for (long i = 0; i < 200000000; ++i) 38 ct.narrow(i % 128, '*'); 39 stop_counters(time, resource); 40 report_performance(__FILE__, "narrow", time, resource); 41 clear_counters(time, resource); 42 43 // narrow array 44 start_counters(time, resource); 45 for (long i = 0; i < 20000000; ++i) 46 ct.narrow(bufwc, bufwc + sizeof(bufwc) / sizeof(wchar_t), '*', bufc); 47 stop_counters(time, resource); 48 report_performance(__FILE__, "narrow array", time, resource); 49 clear_counters(time, resource); 50 51 // widen 52 start_counters(time, resource); 53 for (long i = 0; i < 200000000; ++i) 54 ct.widen(i % 128); 55 stop_counters(time, resource); 56 report_performance(__FILE__, "widen", time, resource); 57 clear_counters(time, resource); 58 59 // widen array 60 start_counters(time, resource); 61 for (long i = 0; i < 20000000; ++i) 62 ct.widen(bufc, bufc + sizeof(bufc), bufwc); 63 stop_counters(time, resource); 64 report_performance(__FILE__, "widen array", time, resource); 65 66 return 0; 67} 68