各位大神,求一份nsga2 matlab算法的Java代码或者C++代码,谢谢啦

优化C++代码(2):C++代码的编译过程 - 博客 - 伯乐在线
& 优化C++代码(2):C++代码的编译过程
伯乐在线注:“优化C++代码”系列博文,C++程序媛 ()将会持续更新翻译,感兴趣的朋友,请收藏并关注。如果其他朋友也有不错的原创或译文,可以尝试。
此处已是系列博文的第二篇,你最好看吧。
这篇文章会讲解 Visual C++ 编译器的数据流——首先会以一段C++源程序开始,以对应的二进制程序结束。这篇文章很简单——一切才刚刚开始。
首先我们来看看从命令行开始,编译一个单一文件的程序 APP.cpp 时会发生什么(如果你想从Vistual Studio 来启动编译,下图还必须包含一些高层软件,然而,结束时,它们会给出一些很特别的命令,我后面会讲到)。
假设我们刚才键入了: CL/02 App.cpp
CL代表‘编译和链接’,02告诉编译器优化速度—-生成一些执行速度尽可能快的机器码。该命令启动一个进程去运行CL.EXE程序—- 一个调用了其他软件的驱动器:连接到一起时,他们会处理APP.cpp里的文本,最终生产一个二进制文件,成为App.exe。 执行时,该二进制文件会执行我们源代码里的操作。
我们浏览下上个图表,看看发生了什么。
CL.EXE 解析我们的命令行,并检查它是否有意义。然后调用位于C1XX.DLL的C++‘前端’(“CXX”是指C++,因为以前‘+’不能用于文件名。)前端是用于理解C++语言的一条链。它扫描,解析并将APP.cpp文件转换为一颗等价树,通过五个临时文件传递给下一个组件。这五个文件被称为CIL,意为C中间语言。不要把它跟托管语言,例如C#生产的中间代码混淆。有时,也成为MSIL,但是不幸的是,在ECMA-335标准里,它被命名为CIL。
接下来,CL.EXE会调用 所谓的‘后端’,位于C2.DLL。我们把后端成为‘UTC’,意思为‘通用元组编译器’,但是这个名字并没有出现在Visual Studio所包含的的任何二进制文件里。后端先将信息从前端转换为元组—–一个二进制流的指令。显示出来会看到它们看上去就像是一种高级汇编语言。感觉上很高级:
1. 操作是通用的,例如,一个分支(LE)指令,以及它最终如何被翻译成64位的机器码CMP指令。
2. 操作数是象征性的,例如,一个由编译器生成的临时变量t66和一个运行时保存其值得64位寄存器eax。
因为我们要求编译器优化速度,通过/02开关,优化部分后端,分析元组并将其转化为另一种形式,使其运行得更快,但是语义上来讲,却是等价的,和原来的元组产生的同样的结果。完成这步后,元组就会被传给后端的CodeGen部分,最终会决定二进制码的产生。
CodeGen模块会在磁盘上生成APP.obj文件,最后,链接器会利用该文件,并分析所有的引用库,生成最终的二进制文件App.exe。
在上面的图表中,黑色箭头显示数据流(文本或者二进制文件),红色箭头表示控制流。
(在该系列的后面文章里,当我们涉及到整个程序的优化,关于特定的/GL开关编译器和/LTCG开关的链接器时,还会再回到这个图表。 我们看到的是相同的框图,但是却以不同方式连接起来的。)
1. 前端需要理解C++源代码,其他环节,像后端和链接器,大部分都是独立于原始源语言的。他们工作在上面提到的元组上,形成一种更高层次的二进制汇编语言。原始的源程序可以是任何的命令式语言,像FORTRAN或者Pascal。后端真的不会在意。
2. 后端的优化部分会将元组转换成运行更快的更有效的形式,这种转换,我们称之为优化。(其实我们应该称之为’改进’,因为还有其他的改进,可以产生运行更快的代码——我们只是尽力接近理想状态。 然而,几十年前,有人创造了一个术语’优化’,我们都深陷其中。) 还有很多这样的优化方法,像’常量合并’、’消除公共子表达式’、 ‘提升’、 ‘外提不变表达式’、‘冗余代码消除’、’ 内联函数’、 ‘自动向量化’等等.。大多数情况下。这些优化都是独立于程序所运行的最终处理器—–他们都是独立于机器的优化。
3. 后端的CodeGen部分决定如何制定运行时堆栈(用于实现’激活框架’);怎么样充分利用可用的机器寄存器;添加函数调用约定的细节;使用目标机器的详细介绍来转换代码,让它运行得更快。
(举一个小例子,如果你看汇编代码,例如,你在调试代码的时候,同时使用Visual Studio(Alt+8)的反汇编窗口—- 你可能会注意到一些用于将EAX置为0的指令像 xor eax, eax ,优于一些更直接的指令 mov eax,0 为什么呢?因为XOR 指令更小(只有2个字节),执行速度更快。我们也称它为“微优化”,也许你会怀疑是否值得这么麻烦?还记得那句谚语吗?积少才能成多。)
与优化相比,CodeGen就必须很清楚代码将要运行的处理器架构。有些情况下,在理解目标处理器的基础上,它甚至会改变机器指令的布局顺序—–称之为‘调度’。我最好还是再解释一下: CodeGen知道它是针对x86,x64还是ARM-32, 知道代码将要运行的处理器的具体的微架构还是很罕见的,以 Nehalem和Sandy Bridge为例(看看/favor:ATOM 这个案例,可以更多的详情)
这篇文章重点讲编译器的优化部分,很少提及构成前端, CodeGen或者链接器的其他组件。
这篇文章介绍了大量的术语,我没有打算让你全部理解它们:毕竟这只是一篇概述,传播一些思想,希望你会感兴趣,确保读完你下次还会再来,我会开始讲解所有的术语。
下次,我们一起来看看最简单的一种优化方法和它的工作原理——–合并常量。
关于作者:
可能感兴趣的话题
move eax,0...哥们你以为你在写英语吗 应该是mov eax,0 (intel语法)或者 movl $0x0,%eax (at&t语法)
最新评论(期待您也参与评论)
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
欢迎关注更多频道
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选博客文章
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
(加好友请注明来意)
网站使用问题
请在询问或者反馈
& 2015 伯乐在线
赞助云主机跪求大神给一段三角质心定位的代码 java C C++ 来者不拒_百度知道
跪求大神给一段三角质心定位的代码 java C C++ 来者不拒
提问者采纳
给你写了一个求质心的函数,代码如下:(因为函数中使用到求平方根的函数sqrt,所以请包含math.h头文件)#include &math.h&POINT ZX(int X1,int Y1,int X2,int Y2,int X3,int Y3) //参数分别为三角形的三个坐标点{float L1,L2,L3,N;
//L1,L2,L3分别代表三条边的长,(N用来作交换用) POINT PN;
//用来表示质心的坐标 L1=sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));
//分别求出三条边的长
L2=sqrt((X1-X3)*(X1-X3)+(Y1-Y3)*(Y1-Y3)); L3=sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2)); if (L1&L2)
//如果L2比L1大,就把两个数交换
L2=N;} if (L1&L3)
//如果L3比L1大,就把两个数交换
L3=N;}//经过两轮的比较和交换,可以确保L1是三条边中最大的一条 if (L1&=(L2+L3))
//如果最大边大于等于两条小条的和,则三点构不成一个三角形
//设置一个错误值
return PN;}
//让函数返回错误值,这样调用函数之后就可以作出相应的判断 /*如果通过判断符合三角形的条件,求质心,质心就是重心,公式很简单.就是X=(X1+X2+X3)/3;Y=(Y1+Y2+Y3)/3,如果要证明有点长,这里就不说.你可以自己试着证明一下,或百度一下*/ PN.x=(X1+X2+X3)/3; PN.y=(Y1+Y2+Y3)/3; return PN;}
提问者评价
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎样把这段关于最长公共子串的贪婪字符串匹配算法RKR-GST的描述转化为C++代码?JAVA也可以
[问题点数:100分,结帖人yyz1989]
怎样把这段关于最长公共子串的贪婪字符串匹配算法RKR-GST的描述转化为C++代码?JAVA也可以
[问题点数:100分,结帖人yyz1989]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2012年11月 挨踢职涯大版内专家分月排行榜第二2011年9月 Linux/Unix社区大版内专家分月排行榜第二
2012年1月 Linux/Unix社区大版内专家分月排行榜第三2011年8月 C/C++大版内专家分月排行榜第三2011年8月 Linux/Unix社区大版内专家分月排行榜第三2010年4月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。热门搜索:
Sponsored links
10:17&&&&来自:&&&&&&浏览次数:5&&&&&&下载次数:0通用NSGA-II的matlab描述,可用于生产调度、物流优化、神经网络等多种领域。... 09:11&&&&来自:&&&&&&浏览次数:34&&&&&&下载次数:2开发的多目标优化算法采用进化优化方法和证明自己的优势在各种涉及实际问题主要是两个和三个目标,现在有一个不断增长的需求发展进化多目标优化(EMO)用于处理许多目标的算法(具有4或更多个目标)优化问题。在本文... 22:10&&&&来自:&&&&&&浏览次数:90&&&&&&下载次数:2NSGA-II多目标无功优化算法,采用遗传算法,非支配排序,前推回代潮流计算... 19:02&&&&来自:&&&&&&浏览次数:6&&&&&&下载次数:0NSGA的特征: &l & & & 非支配排序(Non-Dominated Sorting):? & & &进化过程中,将当前父代群体进行交叉和变异得到子群体,将两个群体合并。? & & &在目标空间中按照Pareto最优关系将群体中个体... 11:47&&&&来自:&&&&&&浏览次数:94&&&&&&下载次数:0NSGA2算法将在以下方面进行改进:1、快速的非支配排序& & 在NSGA进行非支配排序时,规模为N的种群中的每个个体都要针对M个目标函数和种群中的N-1个个体进行比较,复杂度为O(MN),因此种群中的N个个体都比较结束的复杂... 10:25&&&&来自:&&&&&&浏览次数:0&&&&&&下载次数:0应用背景多目标优化问题关键技术多目标优化问题一直是科学和工程研究领域的一个难题和热点问题,在遗传算法应用到这一领域以前,已经产生了许多经典的方法,而遗传算法一直是最好用的。... 17:13&&&&来自:&&&&&&浏览次数:3&&&&&&下载次数:0NSGA_2全,基于实数的例子,便于多目标的优化和带目标优化都可以。工程中经常会遇到多准则或多设计目标下的设计和决策问题,这些目标往往是相悖的,要找到满足这些目标的最佳设计方案,就要解决多目标和多约束的优化问题,... 21:06&&&&来自:&&&&&&浏览次数:1&&&&&&下载次数:0它的工作原理和良好的中存在的问题的多个目标用户friendly.T何PRESENCE,原则上,产生了一组最优解的(主要是被称为帕累托最优解),而不是一个单一的最佳解决方案。在没有任何进一步的信息,这些帕累托最优的解决方案之一... 10:15&&&&来自:&&&&&&浏览次数:47&&&&&&下载次数:3MATLAB NGPM — — Matlab 的 NSGA-ⅱ 型程序本文给出了关于 NGPM 的简要说明。NGPM 是&A NSGA-ⅱ 型程序在 Matlab&,这是的 NSGA-ⅱ 在 matlab 环境中实现的缩写。K.Deb [1] 多目标遗传算法 NSGA-ⅱ 型。NSGA-ⅱ 的细节不述本文档 ;请参阅 [1... 19:27&&&&来自:&&&&&&浏览次数:59&&&&&&下载次数:2支配排序遗传算法II(NSGA-II)为二进制方法...
热门关键词搜索
Sponsored links
23 篇源代码 21 篇源代码 18 篇源代码 13 篇源代码 9 篇源代码
285 篇源代码 173 篇源代码 48 篇源代码 42 篇源代码 36 篇源代码
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
CF仔没有找到您要的代码,请去留下您的问题吧,可能会有大神帮助你哦!
该用户暂时未开通博客
请按 Ctrl+D 键添加到收藏夹。数据结构算法与应用-C++和Java语言描述
书 代码 完全 - 下载频道
- CSDN.NET
&&&&数据结构算法与应用-C++和Java语言描述
书 代码 完全
数据结构算法与应用-C++和Java语言描述
书 代码 完全
本帖与http://download.csdn.net/source/3043982的区别是:《数据结构算法与应用——C++语言描述》第一版英文版不是超星格式,而是PDF格式,单文件,带目录。所以本帖更好。
《数据结构算法与应用——C++语言描述》和《数据结构算法与应用——Java语言描述》,好评如潮,数据结构与算法领域公认的最系统、最权威的经典之作!认真学习,你绝对会有极大的收获!
世界上有一个人,
他为每一个数据结构用C++和Java语言实现了一个实际应用
他为每一种算法用C++和Java语言实现了一个实际应用
他用浅显的语言讲解每一种数据结构与算法的含义
他用简洁的C++和Java代码对相关的数据结构及算法进行了实现
他的名字叫SAHNI!
两本书详细介绍:
《数据结构算法与应用——C++语言描述》(Data Structures, Algorithms and Applications in C++)第一版,Sartaj Sahni著,国防科技大学汪诗林、孙晓东等译,王广芳审校,机械工业出版社,2005。印度人Sartaj Sahni(萨尔塔-萨尼)获得坎普尔印度理工学院的工科学士学位,在Cronell大学获得硕士和博士学位。曾任教于明尼苏达大学。目前是佛罗里达大学计算机与信息科学工程系主任。Sahni教授在数据结构与算法领域的研究和教学方面享有世界声誉,是国际公认的数据结构和算法大师,因此当选为IEEE和ACM两会会士以及欧洲科学院院士,并获得IEEE计算机学会的Taylor L.Booth教育奖和W.Wallace-MCDowell奖,2003年更荣获计算机教育最高荣誉ACM Karl V.Karlstrom杰出教育家奖。本书兼具数据结构和算法的内容,与应用结合比较紧密,编程实例很多,数学公式少。数据结构部分内容详尽,只需要看此一本,就可以精通数据结构。算法部分很精要,比《算法导论》更容易入门。而且作者给出了完整代码,程序简洁精练,质量极高,绝对是大师级水准,完全可以直接使用。中文版翻译质量还可以。本书是山东大学考博指定教材。
《数据结构算法与应用——Java语言描述》(Data Structures, Algorithms and Applications in Java)原书第二版,Sartaj Sahni著,苏州大学孔芳、清华同方高伟等译,中国水利水电出版社,2005。代码简洁精练,质量极高,绝对是大师级水准,完全可以直接应用到商业化软件中。中文版翻译质量相当好!纸张质量也不错。
本压缩包含有如下内容:
1、《数据结构算法与应用C++语言描述》第一版中文版PDF书籍,高清晰,带目录。非扫描版,文字可以拷贝出来。
2、本人亲自从官方网站一个个手动下载的《数据结构算法与应用C++语言描述》第一版源代码,分类清晰,包含内容:
1)全书代码
2)习题代码
3)习题解答
4)增强编译器的代码
5)考试题与解答
6)英文版的勘误表
3、本人亲自从官方网站一个个手动下载的《数据结构算法与应用C++语言描述》第二版源代码,分类清晰,包含内容:
1)全书代码
2)习题解答
3)其他人的补充文档,非Sahni所写
4)考试题与解答
5)英文版的勘误表
(第二版目前尚无中文版,英文版电子档至今也没有找到)
5、《数据结构算法与应用C++语言描述》第一版英文原版书,完整彻底收录,包括封面、前言、目录、正文、附录,共817页。本书在国外畅销多年,经典中的经典。PDF格式,单文件,带完整目录。仅在这里能下载,你在其它地方绝对找不到!Google也搜不到。
6、本人亲自从官方网站一个个手动下载的《数据结构算法与应用——Java语言描述》,第二版源代码,分类清晰。包含内容:
1)全书代码
2、习题代码
3、习题解答
4、其他人的补充文档,非Sahni所写
5、考试题与解答
6、英文版的勘误表
7、最后两章的文档
8、演示动画
分类清晰。
为什么要看英文原版???
翻译的书,译者的理解力总是有偏差,而且印刷也可能有错误。看完翻译的中文版,还得认真看几遍英文原版的,才能理会大师的思想精髓!
三部最好的数据结构经典教材比较,在职软件工程师学习数据结构建议:
Mark Allen Weiss的《数据结构与算法分析——C语言描述》、Sahni的《数据结构算法与应用——C++语言描述》、严蔚敏的《数据结构(C语言版)》堪称目前国内能够买到的三部最好的数据结构经典教材。
Weiss的《数据结构与算法分析——C语言描述》和严蔚敏的《数据结构(C语言版)》,久负盛名,前者还被称为20世纪最顶尖的30部计算机著作之一,但是数学公式太多,学习难度大,而且作者给出的代码很少,要花费太多时间学习。适合全日制在校大学生学习。
在职软件工程师建议学习Sahni(萨尼)的《数据结构算法与应用 C++语言描述》,算法部分可以参考Horowitz(霍罗威茨)的《计算机算法(C++版)》或者《算法导论》。
《数据结构算法与应用 C++语言描述》没那么多公式,与实际应用结合紧密,作者给出了所有的代码,特别是还给出了所有运行输出结果,读者可以先看代码,自行思考运行结果是什么,再与作者的结果对照,无需编译运行,极大节约了学习时间。书中的代码简洁精练,质量极高,绝对是大师级水准,完全可以直接拷贝使用。强烈推荐这个印度人写的书。
Lafore(拉弗)的《Java数据结构和算法》也不错,国内的读者很多,对算法的描述浅显易懂,例子很多,缺点是代码质量一般,不够简练,明显与Sahni的代码有较大的差距。
《数据结构算法与应用 C++语言描述》第一版和第二版的区别:
第一版书中代码的质量已经非常高了,甚至可以直接照搬到商业化软件中使用。但是,第二版书中的代码青出于蓝、精益求精,又增加了不少功能,质量更高,完全可以直接拷贝使用。
第一版的网址是:
/engcs/compsci/sahni/
是出版商McGraw-Hill出版社的网站。
第二版的网址是:
http://www.cise.ufl.edu/~sahni/dsaac/
www.cise.ufl.edu是佛罗里达大学的网站。
《数据结构算法与应用 Java语言描述》第二版的网址是:
http://www.cise.ufl.edu/~sahni/dsaaj/
www.cise.ufl.edu是佛罗里达大学的网站。
本贴是如下资源的集合贴:
http://download.csdn.net/source/3031821
http://download.csdn.net/source/3042904
http://download.csdn.net/source/3025236
http://download.csdn.net/source/3013776
http://download.csdn.net/source/2997017
《算法导论》全集,包含全球唯一带完整目录的中文版电子书、英文图书、C++/Java代码、讲义、习题答案等,下载地址:
http://download.csdn.net/source/3124028
http://download.csdn.net/source/3124222
http://download.csdn.net/source/3124740
http://download.csdn.net/source/3124760
http://download.csdn.net/source/3043982
算法和数据结构是计算机的绝对核心技术。学好核心技术,既为了自己,也为了天空不落下别国的炸弹!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行

我要回帖

更多关于 nsga2 matlab 的文章

 

随机推荐