예제 #1
0
void JoinEnumLoop::addInnerLoop(Loop* innerLoop)
{
    if (tInnerLoop == NULL) {
        tInnerLoop = innerLoop;
        for (int i = 0; i < tInnerLoops.size(); ++i) {
            Loop* currentLoop = tInnerLoops[i];
            if (currentLoop != NULL){
                currentLoop->addInnerLoop(tInnerLoop);
            }
        }
    } else {
        tInnerLoop->addInnerLoop(innerLoop);
    }
}
예제 #2
0
int main(int argc, char *argv[])
{
    Chronometer total;
    total.start();
    try {
        Test test;
        test.parameters.putNumber(Dummy::WEIGHS_RANGE, 20);
        test.parameters.putNumber(Enumerations::enumTypeToString(ET_FUNCTION), FT_IDENTITY);

        RangeLoop* sizeLoop = new RangeLoop(Dummy::SIZE, 100, 101, 100);
        Loop* loop = sizeLoop;

        RangeLoop* outputSizeLoop = new RangeLoop(Dummy::OUTPUT_SIZE, 1, 4, 2);
        loop->addInnerLoop(outputSizeLoop);

        EnumLoop* bufferTypeLoop = new EnumLoop(Enumerations::enumTypeToString(ET_BUFFER), ET_BUFFER);
        loop->addInnerLoop(bufferTypeLoop);

//        loop->addInnerLoop(new EnumLoop(ET_IMPLEMENTATION, 2, IT_C, IT_SSE2));
        sizeLoop->addInnerLoop(new EnumLoop(ET_IMPLEMENTATION));


        loop->print();

//        test.testMemoryLosses(testLoops, &parametersMap, "test loops", &loop);

        test.testMemoryLosses(testBuffer, "Buffer", loop);

        // exclude BYTE
        bufferTypeLoop->exclude(ET_BUFFER, 1, BT_BYTE);

        test.testMemoryLosses(testConnection, "Connection", loop);

        RangeLoop* numInputsLoop = new RangeLoop(Dummy::NUM_INPUTS, 1, 3, 1);
        loop->addInnerLoop(numInputsLoop);

        test.testMemoryLosses(testLayer, "Layer", loop);

        RangeLoop* numLayersLoop = new RangeLoop(Dummy::NUM_LAYERS, 1, 3, 1);
        loop->addInnerLoop(numLayersLoop);

        test.testMemoryLosses(testNeuralNet, "NeuralNet", loop);
        test.testMemoryLosses(testIndividual, "Individual", loop);

        sizeLoop->resetRange(1, 3, 1);
        outputSizeLoop->resetRange(1, 1, 1);
        numInputsLoop->resetRange(1, 1, 1);
        numLayersLoop->resetRange(1, 1, 1);

        test.testMemoryLosses(testPopulation, "Population", loop);

        delete(loop);

        MemoryManagement::printListOfPointers();

        printf("Exit success.\n");
    } catch (string& error) {
        cout << "Error: " << error << endl;
    } catch (...) {
        printf("An error was thrown.\n");
    }

    MemoryManagement::printTotalAllocated();
    MemoryManagement::printTotalPointers();
    total.stop();
    printf("Total time spent: %f \n", total.getSeconds());
    return EXIT_SUCCESS;
}