1// Copyright (C) 2004, 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 <fstream> 20#include <sstream> 21#include <testsuite_performance.h> 22 23void test_extraction(int p = 6) 24{ 25 using namespace std; 26 using namespace __gnu_test; 27 28 const char* filename = "tmp_perf_float.txt"; 29 const int iterations = 10000000; 30 31 ostringstream oss; 32 oss << "precision " << p; 33 34 // Construct data. 35 { 36 ofstream out(filename); 37 out.precision(p); 38 for (int i = 0; i < iterations; ++i) 39 { 40 float f = i * 3.14159265358979323846; 41 out << f << '\n'; 42 } 43 } 44 45 { 46 time_counter time; 47 resource_counter resource; 48 49 ifstream in(filename); 50 in.precision(p); 51 float f; 52 start_counters(time, resource); 53 for (int j, i = 0; i < iterations; ++i) 54 in >> f; 55 stop_counters(time, resource); 56 report_performance(__FILE__, oss.str(), time, resource); 57 } 58 59 unlink(filename); 60}; 61 62int main() 63{ 64 test_extraction(6); 65 test_extraction(12); 66 return 0; 67} 68