[Notes] Timer Comparision when turn influence computing on/off
Overall algorithm – bunny
关闭influence计算 打开influence计算
Timer 插入位置:
FFAnalyzer::SeqPrint()
{
………
for (int l = 0; l < layer_size; l++)
{
/*
* Nl: number of dual verts in current layer
* h : head for printing queue of the layer
* t : tail for printing queue of the layer
*/
layer_search.Reset();
layer_search.Start();
int Nl = layers_[l].size();
int h = print_queue_.size();
int t;
if (l == 0)
{
t = Nl;
}
else
{
t = h + Nl;
}
if (h == t)
{
continue;
}
/* max_z_ and min_z_ in current layer */
min_z_ = 1e20;
max_z_ = -min_z_;
for (int i = 0; i < Nl; i++)
{
WF_edge *e = layers_[l][i];
point u = e->pvert_->Position();
point v = e->ppair_->pvert_->Position();
min_z_ = min(min_z_, (double)min(u.z(), v.z()));
max_z_ = max(max_z_, (double)max(u.z(), v.z()));
}
if (!GenerateSeq(l, h, t))
{
fprintf(stderr,
"All possible start edge at layer %d has been tried but no feasible sequence is obtained.\n",
l + 1
);
bSuccess = false;
break;
}
layer_search.Stop();
string str = std::to_string(l) + ":";
const char *msg = str.c_str();
char* cstr = new char[str.length() + 1];
strcpy(cstr, msg);
layer_search.Print(cstr);
printf("layer size: %d\n", Nl);
printf("layer %d finished\n", l);
printf("--------------\n");
}
……..
}
bool FFAnalyzer::GenerateSeq(int l, int h, int t)
{
Timer ind_search;
ind_search.Reset();
ind_search.Start();
/* last edge */
assert(h != 0); // there must be pillars
WF_edge *ei = print_queue_[h - 1];
if (debug_)
{
fprintf(stderr, "-----------------------------------\n");
fprintf(stderr, "Searching edge #%d in layer %d, head %d, tail %d\n",
ei->ID() / 2, l + 1, h, t);
}
/* exit */
if (h == t)
{
return true;
}
/* next choice */
multimap<double, WF_edge*> choice;
multimap<double, WF_edge*>::iterator it;
/* next edge in current layer */
int Nl = layers_[l].size();
for (int j = 0; j < Nl; j++)
{
WF_edge *ej = layers_[l][j];
/* cost weight */
double cost = GenerateCost(ei, ej);
if (cost != -1)
{
choice.insert(pair<double, WF_edge*>(cost, ej));
}
}
ind_search.Stop();
ind_search.Print("Single strut: ");
/* ranked by weight */
for (it = choice.begin(); it != choice.end(); it++)
{
WF_edge *ej = it->second;
print_queue_.push_back(ej);
/* update printed subgraph */
UpdateStructure(ej);
/* update collision */
vector<vector<lld>> tmp_angle(3);
UpdateStateMap(ej, tmp_angle);
if (debug_)
{
fprintf(stderr, "Choose edge #%d in with cost %lf\n\n", ej->ID() / 2, it->first);
}
if (GenerateSeq(l, h + 1, t))
{
return true;
}
RecoverStateMap(ej, tmp_angle);
RecoverStructure(ej);
print_queue_.pop_back();
}
return false;
}
[Notes] Timer Comparision when turn influence computing on/off的更多相关文章
- GPU Command Buffer
For Developers > Design Documents > GPU Command Buffer This are mostly just notes on the ...
- 【原】使用SQLite打开本地*.db文件
1.下载安装文件:官网下载地址:http://www.sqlite.org/download.html32位安装包:http://www.sqlite.org/2016/sqlite-tools-wi ...
- 【Android】Sqlite3命令详解
Sqlite3常用命令 Sqlite3命令有"."符合作为前缀. 基本操作 1.创建或者打开数据库 sqlite3 xxx.db 如果xxx.db存在则打开如果没有则新建此时执行创 ...
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- React 轮播图实现
接到项目, 用react和material-ui实现轮播图. 搜索了一些方法参考, 不论语言/框架的使用,大体上分为两种思路 超宽列表实现法 在原生JS或者JQuery中,轮播图的实现一般是这样子的 ...
- css3 翻转
参考资料: WEB骇客 : http://www.webhek.com/css-flip/ Demo : Demo(谷歌浏览器观看,没做兼容) Demo截图: 代码: <!DOCTYPE h ...
- [数据库]Sqlite使用入门
官网的文档结构十分恶劣,大概翻了一下,提供入门指引. 0. sqlite的安装 根据自身情况,在官网下载32位/64位的dll文件以及sqlite-tools-win32-x86-3240000.zi ...
- 如何使用 sqlite3 访问 Android 手机的数据库
如何设置Android手机的sqlite3命令环境 http://www.cnblogs.com/linjiqin/archive/2011/11/28/2266619.html SQLite3 为a ...
- sqlite3.exe 使用
1 下载sqlite3.exe 2 命令行cmd,进入到sqlite3.exe目录 3 >sqlite3.exe database.db 来打开sqlite数据库. 4 基本语法: > ...
随机推荐
- Java日志——2016.6.3
1)二维数组的静态初始化: int[][] arr = new int[][] { {1,2,3}, {4,5}, {6,7}} 2)杨辉三角: /** * 需求: ...
- JS動態綁定下拉單內容
function req00_Line1_onChange(obj) { //if ($(obj).val() != "" && $(obj).val() ...
- java网络流传输,中文乱码问题。
最近需要从某个网页上抓取数据.一波三折. 1. 先要找到网站页面调用后台数据服务的url地址,但是本人对js不了解,花了不少时间在分析其网页源代码的js部分,试图寻找出调用数据的链接. 后来得知浏览器 ...
- Gson---简单入门
1-1.Diaosi.java(bean) package Bean; import com.google.gson.annotations.SerializedName; public class ...
- 关于adb shell getprop相关
adb shell : getprop 查看机器的全部信息参数 getprop ro.serialno 查看机器的序列号 getprop ro.carrier 查看机器的CID号 getprop ro ...
- python基础知识2——基本的数据类型——整型,长整型,浮点型,字符串
磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 对于Python ...
- vba 笔记
1.PlanWS5.Range("D5:E13").Copy 复制PlanWS5.Range("G5:H13").PasteSpecial Paste:=x ...
- Using Redis to store php session
Using Redis to store php session 默认情况下,php将会将session信息存储在文件系统上,在单机情况下没有问题,但是当系统负载增大,或者在对系统可用性要求很高的场景 ...
- WinForm窗体嵌入
一.在winform窗体上添加两个控件 1.容器>Panel 2.添加 SideBar.dll (下载链接:http://pan.baidu.com/s/1o6qhf9w) (1)将SideBa ...
- IOS系列swift语言之课时八
这节课需要讲的就是可选链,内存管理,引用计数,unowned解决 //: Playground - noun: a place where people can play import UIKit / ...