main.cpp

 1 /*main.cpp
 2  *
 3  *The starting point of the network simulator
 4  *-Include all network header files
 5  *-initilize the network
 6  *-initialize the traffic manager and set it to run
 7  *
 8  *
 9  */
10 #include <sys/time.h>
11
12 #include <string>
13 #include <cstdlib>
14 #include <iostream>
15 #include <fstream>
16
17
18
19 #include <sstream>
20 #include "booksim.hpp"
21 #include "routefunc.hpp"
22 #include "traffic.hpp"
23 #include "booksim_config.hpp"
24 #include "trafficmanager.hpp"
25 #include "random_utils.hpp"
26 #include "network.hpp"
27 #include "injection.hpp"
28 #include "power_module.hpp"
 1 ///////////////////////////////////////////////////////////////////////////////
 2 //Global declarations
 3 //////////////////////
 4
 5  /* the current traffic manager instance */
 6 TrafficManager * trafficManager = NULL;
 7
 8 int GetSimTime() {
 9   return trafficManager->getTime();
10 }
11
12 class Stats; //数据实体
13 Stats * GetStats(const std::string & name) {
14   Stats* test =  trafficManager->getStats(name);
15   if(test == 0){
16     cout<<"warning statistics "<<name<<" not found"<<endl;
17   }
18   return test;
19 }
20
21 /* printing activity factor*/
22 bool gPrintActivity;
23
24 int gK;//radix, the number of routers per dimension
25 int gN;//dimension, such as 1D, 2D
26 int gC;//concentration, the number of nodes sharing a single router
27
28 int gNodes;
29
30 //generate nocviewer trace
31 bool gTrace;
32
33 ostream * gWatchOut;
 1 bool Simulate( BookSimConfig const & config )
 2 {
 3   vector<Network *> net;
 4
 5   int subnets = config.GetInt("subnets");
 6   /*To include a new network, must register the network here
 7    *add an else if statement with the name of the network
 8    */
 9   //resize改变当前使用数据的大小,如果它比当前使用的大,填充默认值
10   net.resize(subnets);
11   for (int i = 0; i < subnets; ++i) {
12       /*ostringstream
13       *通常用于执行C风格的串流的输出操作,
14       *格式化字符串,避免申请大量的缓冲区,替代sprintf
15       *该类能够根据内容自动分配内存,对内存的管理也是相当的到位
16       *取得ostringstream里的内容可以通过str()和str(string&)成员函数
17       */
18     ostringstream name;
19     name << "network_" << i;
20     net[i] = Network::New( config, name.str() );
21   }
22
23   /*tcc and characterize are legacy
24    *not sure how to use them
25    */
26   //assert如果它的条件返回错误,则终止程序执行
27   assert(trafficManager == NULL);
28   trafficManager = TrafficManager::New( config, net ) ;
29
30   /*Start the simulation run
31    */
32
33   double total_time; /* Amount of time we‘ve run */
34   struct timeval start_time, end_time; /* Time before/after user code */
35   total_time = 0.0;
36   //获得当前精确时间
37   gettimeofday(&start_time, NULL);
38
39   bool result = trafficManager->Run() ;
40
41
42   gettimeofday(&end_time, NULL);
43   total_time = ((double)(end_time.tv_sec) + (double)(end_time.tv_usec)/1000000.0)
44             - ((double)(start_time.tv_sec) + (double)(start_time.tv_usec)/1000000.0);
45
46   cout<<"Total run time "<<total_time<<endl;
47
48   for (int i=0; i<subnets; ++i) {
49
50     ///Power analysis
51     if(config.GetInt("sim_power") > 0){
52       Power_Module pnet(net[i], config);
53       pnet.run();
54     }
55
56     delete net[i];
57   }
58
59   delete trafficManager;
60   trafficManager = NULL;
61
62   return result;
63 }
 1 int main( int argc, char **argv )
 2 {
 3
 4   BookSimConfig config;
 5
 6
 7   if ( !ParseArgs( &config, argc, argv ) ) {
 8     cerr << "Usage: " << argv[0] << " configfile... [param=value...]" << endl;
 9     return 0;
10  }
11
12
13   /*initialize routing, traffic, injection functions
14    */
15   InitializeRoutingMap( config );
16
17   gPrintActivity = (config.GetInt("print_activity") > 0);
18   gTrace = (config.GetInt("viewer_trace") > 0);
19
20   string watch_out_file = config.GetStr( "watch_out" );
21   if(watch_out_file == "") {
22     gWatchOut = NULL;
23   } else if(watch_out_file == "-") {
24     gWatchOut = &cout;
25   } else {
26     gWatchOut = new ofstream(watch_out_file.c_str());
27   }
28
29
30   /*configure and run the simulator
31    */
32   bool result = Simulate( config );
33   return result ? -1 : 0;
34 }

原文地址:https://www.cnblogs.com/cpsmile/p/9069177.html

时间: 2024-11-05 15:55:40

main.cpp的相关文章

QT Demo 之 calqlatr(1) main.cpp

其实从最开始要学习和分析Qt的Demo时选定的就是calqlatr工程,但是打开源码一看,貌似难度高了点,这才有了上面的几篇基本控件的分析.从这一章开始,我要拿下calqlatr这个Demo项目了. main.cpp main.cpp中的代码非常简单: #include "../../shared/shared.h" DECLARATIVE_EXAMPLE_MAIN(demos/calqlatr/calqlatr) DECLARATIVE_EXAMPLE_MAIN(NAME)是一个函数

C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件

C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件主要有两种思路: 1.在VS2012 IDE中,将被引用的.c文件后缀名全部修改为.h,然后通过IDE的解决方案资源管理器中鼠标右键单击"头文件"-"添加"-"现有项",选中修改后缀名后的.h文件-"添加",将带引用的文件添加到IDE中. 添加到"头文件"的作用主要是不要使头文件的项属性为"C/C++ 标头",而不

【操作系统】main.cpp

/************************************************************************/ /* 功能: 模拟实现可变分区存储管理的最佳适应算法的链表类定义实现 时间:2014年9月1日9:25:17 作者:信管1201 1205020116 肖锋 */ /************************************************************************/ #include "Link.h&q

cocos2d-x main.cpp源码详析 v2.26

// create the application instance AppDelegate app; CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName("Fei"); eglView->setFrameSize(480, 320); return CCApplication::sharedApplication()->run(); 一.静态类成员函数 CCEGLView:

1.02 main.cpp研究

// create the application instance AppDelegate app; CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName("Fei"); eglView->setFrameSize(480, 320); return CCApplication::sharedApplication()->run(); 一.静态类成员函数 CCEGLView:

如何在安卓环境下自动编译所有cpp文件

正常情况下,需要在Android.mk文件下面一个一个手动添加cpp文件,如果文件较多,这样就太麻烦了. 解决办法如下: 把Android.mk文件里面的这段代码: LOCAL_SRC_FILES := hellocpp/main.cpp ../../Classes/AppDelegate.cpp 改为: FILE_LIST := hellocpp/main.cpp FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp) LOCAL_

Makefile一个cpp文件依赖于多个header文件的陷阱

我一直以为,如果一个A.cpp文件中有多少条 #include "xxx.h"指令,在写Makefile的时候A.obj的依赖项除了A.cpp之外,就是A.cpp之内所有的 xxx.h 比如,如果A.cpp中有 #include "A.h" #include "B.h" #include "C.h",那么在Makefile中就有:A.obj: A.cpp A.h B.h C.h 但是 下面的例子是说明了,上面的想法是错误的 先

Cocos2d-x 关于Android.mk 自动读入CPP

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 制作过cocos2d-x游戏的开发这都知道, 当所有东东都做完后, 最后一步,生成APK, 以前是用NDK等等一系列,很复杂东东来做, 3.0以后,可以直接在命令行 cocos compile 来制作. 简单了很多很多. 但是,依旧有东东需要手动, 比如Andr

做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk

前言:"懒"在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! 一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦! 我们下看看TestCpp工程中的Android.mk文件: 这只是节选的一部分,大概只有50个左右吧,除数量多