/** * @file app/main.cpp * @author The PARADEVS Development Team * See the AUTHORS or Authors.txt file */ /* * PARADEVS - the multimodeling and simulation environment * This file is a part of the PARADEVS environment * * Copyright (C) 2013 ULCO http://www.univ-litoral.fr * * This program 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. * * This program 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 this program. If not, see . */ #include #include #include #include #include #include #include using namespace paradevs::tests::mixed; template < int size > void run_flat_with_heap() { boost::timer::cpu_timer t; std::cout << "run_flat_with_heap [" << size << "] ..." << std::endl; paradevs::common::RootCoordinator < paradevs::common::DoubleTime, paradevs::pdevs::Coordinator < paradevs::common::DoubleTime, paradevs::common::scheduler::HeapScheduler < paradevs::common::DoubleTime, SchedulerHandle >, SchedulerHandle, LinearGraphManager < size, SchedulerHandle > > > rc(0, 100, "root", paradevs::common::NoParameters(), paradevs::common::NoParameters()); paradevs::common::Trace < paradevs::common::DoubleTime >::trace().clear(); rc.run(); std::cout << "... OK -> " << t.elapsed().user << std::endl; } template < int size > void run_flat_with_vector() { boost::timer::cpu_timer t; std::cout << "run_flat_with_vector [" << size << "] ..." << std::endl; paradevs::common::RootCoordinator < paradevs::common::DoubleTime, paradevs::pdevs::Coordinator < paradevs::common::DoubleTime, paradevs::common::scheduler::VectorScheduler < paradevs::common::DoubleTime >, paradevs::common::scheduler::NoSchedulerHandle, LinearGraphManager < size, paradevs::common::scheduler::NoSchedulerHandle > > > rc(0, 100, "root", paradevs::common::NoParameters(), paradevs::common::NoParameters()); paradevs::common::Trace < paradevs::common::DoubleTime >::trace().clear(); rc.run(); std::cout << "... OK -> " << t.elapsed().user << std::endl; } void run_hierarchic_with_heap() { paradevs::common::RootCoordinator < paradevs::common::DoubleTime, paradevs::pdevs::Coordinator < paradevs::common::DoubleTime, paradevs::common::scheduler::HeapScheduler < paradevs::common::DoubleTime, SchedulerHandle >, SchedulerHandle, Root2GraphManager > > rc(0, 100, "root", paradevs::common::NoParameters(), paradevs::common::NoParameters()); paradevs::common::Trace < paradevs::common::DoubleTime >::trace().clear(); rc.run(); } void run_hierarchic_with_vector() { paradevs::common::RootCoordinator < paradevs::common::DoubleTime, paradevs::pdevs::Coordinator < paradevs::common::DoubleTime, paradevs::common::scheduler::VectorScheduler < paradevs::common::DoubleTime >, paradevs::common::scheduler::NoSchedulerHandle, Root3GraphManager > > rc(0, 100, "root", paradevs::common::NoParameters(), paradevs::common::NoParameters()); paradevs::common::Trace < paradevs::common::DoubleTime >::trace().clear(); rc.run(); } int main() { srand(108364); run_flat_with_heap < 10 >(); run_flat_with_heap < 20 >(); run_flat_with_heap < 30 >(); run_flat_with_heap < 40 >(); run_flat_with_heap < 50 >(); run_flat_with_heap < 60 >(); run_flat_with_heap < 70 >(); run_flat_with_heap < 80 >(); run_flat_with_heap < 90 >(); run_flat_with_heap < 100 >(); run_flat_with_heap < 200 >(); run_flat_with_vector < 10 >(); run_flat_with_vector < 20 >(); run_flat_with_vector < 30 >(); run_flat_with_vector < 40 >(); run_flat_with_vector < 50 >(); run_flat_with_vector < 60 >(); run_flat_with_vector < 70 >(); run_flat_with_vector < 80 >(); run_flat_with_vector < 90 >(); run_flat_with_vector < 100 >(); run_flat_with_vector < 200 >(); double t2 = t.elapsed(); std::cout << "run_hierarchic_with_heap ..." << std::endl; run_hierarchic_with_heap(); double t3 = t.elapsed(); std::cout << "... OK -> " << (t3 - t2) << std::endl; std::cout << "run_hierarchic_with_vector ..." << std::endl; run_hierarchic_with_vector(); double t4 = t.elapsed(); std::cout << "... OK -> " << (t4 - t3) << std::endl; return 0; }