Questions tagged «compilation»

编译是将源文本转换为其他形式或表示形式。该标签最常见的用法是有关将编程语言转换为机器代码的问题。此标记通常与另一个指示源文本类型的标记(例如编程语言标记(C,C ++,Go等))一起使用,并指示用于转换的工具或编译器的标记(gcc,Visual Studio,等等。)。



2
什么是超级编译?
简短而甜蜜:我看过一些有关“超级编译”的消息。但是我尚未在互联网上的任何地方找到一个描述这是什么的单一文档。大概是因为它对任何人来说似乎都很简单,甚至不值得解释。 有人知道这到底是什么吗?


10
如何加快g ++的编译时间(使用大量模板时)
这个问题也许有点奇怪,但是我怎样才能加快g ++的编译时间呢?我的C ++代码大量使用boost和模板。我已经尽可能地将其移出了头文件,并使用了-j选项,但是编译(和链接)仍需要花费相当长的时间。 有没有工具可以分析我的代码并指出编译器的瓶颈?还是可以以某种方式分析运行在我的代码上的编译器?这真的很好,因为有时我会觉得我花了太多时间盯着编译器控制台日志...

14
如何减少Xcode的构建时间/加快编译时间?
通常可以使用什么策略来减少任何Xcode项目的构建时间?我对Xcode特定策略最感兴趣。 我正在使用Xcode进行iPhone开发,我的项目正在逐渐变得越来越大。我发现编译/链接阶段开始花费比我想要的更多的时间。 目前,我是: 使用静态库来做到这一点,这样我每次清理和构建主项目时就不需要编译大多数代码 已经从我的应用程序中删除了大多数资源,并在可能的情况下在iPhone模拟器中使用硬编码的文件系统路径进行了测试,因此在我对其进行更改时,不必经常打包我的资源。 我注意到,“检查依赖项”阶段似乎花费的时间比我想要的要长。任何技巧,以减少这一点,将不胜感激!

9
即时编译与提前编译相比有什么优势?
我最近一直在考虑它,在我看来,赋予JIT编译的大多数优势或多或少应该归因于中间格式,而自动拼合本身并不是生成代码的好方法。 因此,这些是我通常会听到的主要的准JIT编译参数: 即时编译可提供更大的可移植性。那不是中间格式吗?我的意思是,一旦在计算机上安装了虚拟字节码,就没有什么可以阻止您将虚拟字节码编译为本地字节码了。可移植性是“分发”阶段的问题,而不是“运行”阶段的问题。 好吧,那在运行时生成代码呢?好吧,同样适用。没有什么可以阻止您将真正实时需求的实时编译器集成到本机程序中。 但是运行时无论如何只能将其编译为本地代码一次,并将生成的可执行文件存储在硬盘驱动器上的某种缓存中。当然可以。但是它在时间限制下优化了您的程序,并且从那以后并没有使它变得更好。参见下一段。 这也不是说提前编译也没有优势。即时编译具有时间限制:程序启动时,您不能让最终用户永远等待,因此需要在某处进行权衡。大多数情况下,它们的优化程度较低。我的一个朋友提供了剖析证据,表明内联函数和“手动”展开循环(混淆过程中的源代码)对其C#数字运算程序的性能产生了积极影响。在我这边做同样的事情,我的C程序执行相同的任务,没有产生积极的结果,我相信这是由于允许编译器进行的广泛转换。 但是,我们仍然被固定程序所包围。C#和Java无处不在,Python脚本可以编译为某种字节码,而且我敢肯定,还有很多其他编程语言都可以做到这一点。我想必一定有一个很好的理由。那么,什么使即时编译比提前编译好呢? 编辑为了消除一些混乱,也许重要的是要声明我全都是可执行文件的中间表示。这具有很多优点(实际上,大多数实时编译参数实际上是中间表示的参数)。我的问题是关于如何将它们编译为本地代码。 大多数运行时(或与此相关的编译器)宁愿及时或提前编译它们。由于提前编译对于我来说似乎是一个更好的选择,因为编译器有更多时间执行优化,所以我想知道为什么Microsoft,Sun和所有其他公司都朝着相反的方向发展。我对与概要分析相关的优化有些怀疑,因为我对即时编译程序的经验显示出较差的基本优化。 我用了一个例子与C语言代码,只是因为我需要的例子名列前茅的时间编制与刚刚在时间编译。C代码没有发出到中间表示的事实与情况无关,因为我只需要证明提前编译可以产生更好的即时结果。
69 compilation  jit 

12
为什么在调试ASP.NET MVC应用程序时未触发Application_Start()事件?
我的文件中目前包含以下例程Global.asax.cs: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Arrangement", action = "Index", id = "" } ); } protected void Application_Start() { RegisterRoutes(RouteTable.Routes); // Debugs the routes with Phil Haacks routing debugger (link below) RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 路由调试器... 当我点击时F5,应用程序启动,除非我已经Index.aspx在~/Views/Home/文件夹中命名了视图,否则会收到“视图丢失”错误消息,尽管我已经重新定义了默认路由并删除了HomeController。我希望得到路由调试器,如果没有,至少要有一个请求~/Views/Arrangement/Index.aspx。调试时永远不会遇到 断点RegisterRoutes(Routetable.Routes);。 我尝试过构建,重建,重新启动VS,清理,再次重建等,但似乎没有任何效果。为什么应用程序不运行当前版本的代码?


11
Scala双重定义(2种方法具有相同的类型擦除)
我在scala中编写了此代码,但无法编译: class TestDoubleDef{ def foo(p:List[String]) = {} def foo(p:List[Int]) = {} } 编译器通知: [error] double definition: [error] method foo:(List[String])Unit and [error] method foo:(List[Int])Unit at line 120 [error] have same type after erasure: (List)Unit 我知道JVM没有对泛型的本机支持,所以我理解此错误。 我可以写包装器List[String],List[Int]但是我很懒:) 我对此表示怀疑,但是还有另一种表达方式与之List[String]不同List[Int]吗? 谢谢。

7
覆盖模块中定义但在运行时阶段使用的函数?
让我们做一个非常简单的事情, # Foo.pm package Foo { my $baz = bar(); sub bar { 42 }; ## Overwrite this print $baz; ## Before this is executed } 无论如何,我可以从test.pl运行代码中更改$baz设置并导致Foo.pm在屏幕上打印其他内容吗? # maybe something here. use Foo; # maybe something here 在编译器阶段是否可以强制上述内容打印7?
20 perl  compilation 

2
在Julia中要求类型声明
有什么方法可以在Julia中明确要求(例如在模块或包中)必须声明类型 ?例如或是否支持这种检查?更广泛地说,Julia标准发行版本身是否提供任何静态代码分析器或等效工具可以帮助检查此要求? PackageCompilerLint.jl 举一个激励人的示例,假设我们要确保不断增长的生产代码库仅接受始终使用类型声明的代码,这是基于以下假设:带有类型声明的大型代码库往往更易于维护。 如果我们要强制执行该条件,Julia在其标准发行版中是否提供任何机制来要求类型声明或帮助实现该目标?(例如,是否可以通过短绒棉纸,提交钩子或类似的东西进行检查?)

1
为什么用g ++编译该代码会花费这么长时间?
考虑以下代码: template<int i> class A { typedef A<i-1> B; B x, y; }; template<> class A<0> { char m; }; int main() { A<LEVEL> a; } 通过以下Bash命令(使用g ++ 8.3.0)对g ++编译进行基准测试时 for ((level=1; level<30; ++level)); do echo -n ${level}, /usr/bin/time -f %U g++ -DLEVEL=$level test.cpp -o /dev/null done 我得到以下输出: 1,0.03 2,0.03 …

2
如何消除Julia可执行文件中的JIT开销(使用MWE)
我使用PackageCompiler希望创建一个可执行文件,从而消除了即时编译开销。 该文档解释说,我必须定义一个函数julia_main来调用程序的逻辑,并编写一个“探听文件”,该脚本调用我希望预编译的函数。My julia_main接受一个参数,即包含要分析的输入数据的文件的位置。因此,为了简单起见,我的监听文件只需要julia_main使用特定的输入文件进行一次调用即可。因此,我希望看到针对相同的输入文件执行时,生成的可执行文件运行得很快且运行良好(没有编译开销)。 但是a,那不是我所看到的。在新的Julia实例中julia_main,第一次执行大约需要74秒,后续执行大约需要4.5秒。每次调用可执行文件大约需要50秒。 我对build_executable函数的使用如下所示: julia> using PackageCompiler julia> build_executable("d:/philip/source/script/julia/jsource/SCRiPTMain.jl", "testexecutable", builddir = "d:/temp/builddir4", snoopfile = "d:/philip/source/script/julia/jsource/snoop.jl", compile = "all", verbose = true) 问题: 以上参数是否正确实现了我的无JIT开销的可执行文件的目标? 还有其他建议吗? 这是对的响应build_executable。从Start of snoop file execution!到的行End of snoop file execution!由我的代码发出。 Julia program file: "d:\philip\source\script\julia\jsource\SCRiPTMain.jl" C program file: "C:\Users\Philip\.julia\packages\PackageCompiler\CJQcs\examples\program.c" Build directory: "d:\temp\builddir4" Executing snoopfile: "d:\philip\source\script\julia\jsource\snoop.jl" Start …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.