diff --git a/AwesomeAttractor.cbp b/AwesomeAttractor.cbp index 8cec17e..d5cbf3a 100644 --- a/AwesomeAttractor.cbp +++ b/AwesomeAttractor.cbp @@ -50,6 +50,7 @@ + diff --git a/main.cpp b/main.cpp index 2a1d75a..4efe5ff 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "Attractor.hpp" #include "Canvas.hpp" @@ -7,11 +8,17 @@ #include "defines.hpp" +/* + I compared the performance of C-style arrays with valarray. My conclusion is that accessing and setting elements makes no difference (sometimes C-syle array's were just 2% faster, but sometimes valarray was 2% faster (5000000 samples)). But the allocation and initialisation of the valrray was like 30% faster, so it might be a good idea to change my C-style array to valarray. It is also nicer in use, one can use functions like sum, etc. How valarray manages memory may also be more efficient, but all i know is that a valarray is bigger than a double* (in means of sizeof()), but that is not really an issue. So valarray!!! +*/ + int main(int argc, char *argv[]) { - + clock_t start, end; double totalTime, totalIterations; + bool verbose = false; + // initialising stuff Attractor myAttractor(ATTRACTOR_FILE); @@ -31,16 +38,17 @@ int main(int argc, char *argv[]) { myAttractor.iterate(); myAttractor.plot(); } - system("clear"); - myAttractor.output(); - std::cout << j << "% done" << std::endl; + if (verbose) { + myAttractor.output(); + std::cout << j << "% done" << std::endl; + } } end = clock(); totalIterations = 100.0*iterations; totalTime = ((double)(end-start)/(double)(CLOCKS_PER_SEC)); - printf("\ntotal clock time: %f\n", totalTime ); - printf("average iterations per second: %f\n\n", totalIterations/((double)(end-start)/(double)(CLOCKS_PER_SEC)) ); + std::cout << std::endl << "total clock time: " << totalTime << std::endl; + std::cout << "average iterations per second: " << totalIterations/((double)(end-start)/(double)(CLOCKS_PER_SEC)) << std::endl << std::endl; // saving output start = clock(); @@ -49,97 +57,8 @@ int main(int argc, char *argv[]) { totalTime = ((double)(end-start)/(double)(CLOCKS_PER_SEC)); - printf("total clock time for writing png: %f\n", totalTime ); - printf("\n Awesome Attractor, version %s\n", __DATE__); - - /*if ( argc <= 2 ) { - cout << endl << "nothing to do..." << endl; - cout << "usage:" << endl; - cout << " rendering to canvas: -a my_attractor.attr 500000000 my_attractor.canv 800 600 3" << endl; - cout << " canvas to png: -c my_attractor.canv 800 600 3 my_atttractor.png" << endl << endl; - exit(0); - } - - int mode; - string argv1 = argv[1]; - if ( argv1 == "-a" ) { - cout << "rendermode" << endl; - mode = 1; - } else if ( argv1 == "-c" ) { - cout << "canvasmode" << endl; - mode = 2; - } else { - cout << "i do.. i do... i do not understand... \"" << argv1 << "\""<< endl; - exit(0); - } - - switch ( mode ) { - case 1: { - if ( argc != 8 ) { - cout << "all parameters must be set..." << endl; - exit(0); - } - - string attractorFile = argv[2]; - unsigned int iterations = atoi(argv[3]); - string canvasFile = argv[4]; - unsigned int width = atoi(argv[5]); - unsigned int height = atoi(argv[6]); - unsigned int numColors = atoi(argv[7]); - - Attractor attract(attractorFile.c_str()); - cout << attractorFile << " is read" << endl; - - Projector projection; - Canvas canvas(width, height, numColors); - projection.canvas = &canvas; - - attract.projectors.push_back(&projection); - attract.init_range(); - - projection.output(); - - for ( unsigned int j = 1; j <= 100; j++ ) { - for ( unsigned int i = 0; 100*i <= iterations; i++ ) { - attract.iterate(); - attract.plot(); - } - cout << j << "% done" << endl; - } - - canvas.output_raw(canvasFile.c_str()); - cout << canvasFile << " is outputted" << endl; - - break; - } - case 2: { - if ( argc != 7 ) { - cout << "all parameters must be set..." << endl; - exit(0); - } - - string canvasFile = argv[2]; - unsigned int width = atoi(argv[3]); - unsigned int height = atoi(argv[4]); - unsigned int numColors = atoi(argv[5]); - string pngFile = argv[6]; - - Canvas canvas(width, height, numColors); - canvas.input_raw(canvasFile.c_str()); - cout << canvasFile << " is read" << endl; - for ( double v = -1.5; v < 1.6; v += 1.5 ) { - canvas.v = v; - canvas.output_file(); - } - cout << pngFile << " was exported" << endl; - break; - } - - default: { - cout << "WTF" << endl; - break; - } - }*/ + std::cout << "total clock time for writing png: " << totalTime << std::endl; + std::cout << std::endl << "Awesome Attractor, version " << __DATE__ << std::endl; return 0;