/* Copyright 2014 Wolfgang Thaller. This file is part of Retro68. Retro68 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 3 of the License, or (at your option) any later version. Retro68 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 Retro68. If not, see . */ #include #include #include #include #include //#include "fixed.h" #include using std::sqrt; class timer { long t; public: timer() : t(TickCount()) {} float elapsed() { return (TickCount() - t) / 60.15f; } }; template void runTests(std::string type, std::vector& numbers) { std::cout << "***********************************\n"; std::cout << "Running tests on type " << type << ":\n"; std::cout << "***********************************\n"; Debugger(); int n = numbers.size(); std::vector outputs(n); Debugger(); std::cout << "Testing Multiplication..." << std::flush; { timer t; /* for(int i = 0; i < n; i++) { outputs[i] = numbers[i] * numbers[n - i - 1]; }*/ std::cout << 1000 * t.elapsed() / n << "ms\n"; } Debugger(); std::cout << "Testing Division..." << std::flush; { timer t; /* for(int i = 0; i < n; i++) { outputs[i] = numbers[i] / numbers[n - i - 1]; }*/ std::cout << 1000 * t.elapsed() / n << "ms\n"; } Debugger(); std::cout << "Testing Square Root..." << std::flush; { timer t; /* for(int i = 0; i < n; i++) { outputs[i] = sqrt(numbers[i]); }*/ //Debugger(); std::cout << 1000 * t.elapsed() / n << "ms\n"; } Debugger(); //std::cout << std::endl; } int main(int argc, char** argv) { std::cout << "Hello, world.\n"; std::cout << "Generating numbers..." << std::flush; const int n = 1000; // std::vector numbers(n); std::vector floats(n); // std::vector doubles(n); /* for(int i = 0; i < n; i++) { // numbers[i] = fixed(std::rand(), fixed::raw()); floats[i] = float(std::rand()) / RAND_MAX; // doubles[i] = double(std::rand()) / RAND_MAX; }*/ //std::vector outputs(n); std::cout << "done.\n\n"; Debugger(); runTests("float", floats); Debugger(); /*runTests("double", doubles); runTests("fixed", numbers);*/ /* std::cout << "Press Enter to Exit ;-)\n"; std::cin.get(); */ return 0; }