问题标签 [incremental-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10404 浏览

java - 标准的 Sun javac 可以进行增量编译吗?

最近我开始使用 Eclipse 的 java 编译器,因为它比标准的 javac 快得多。有人告诉我它更快,因为它执行增量编译。但我仍然对此有点不确定,因为我找不到任何关于这两者的权威文档 - eclispse 和 sun 的 - 编译器“增量功能”。Sun 的编译器总是编译每个源文件,而 Eclipse 的编译器只编译已更改的文件以及受此类更改影响的文件,这是真的吗?

编辑:我没有使用 Eclipse 自动构建功能,而是在设置

对于我的蚂蚁构建。

0 投票
1 回答
1511 浏览

c# - 有人怎么能像 Java 一样制作 ac# 增量编译器?

多年前有人问为什么 c# 不允许像 Java 这样的增量编译。El Skeet 说这与 Java 输出 .class 文件而不是程序集有关。

既然它的 2011 年和诸如 Mono 编译器即服务之类的时髦的东西已经发布,那么需要做些什么来为 c# 制作增量编译器?

编辑:对于每个都在谈论这不是问题的人,这是我链接到的线程中 Jon Skeet 的引述:

你是说你永远不会发现自己在等待构建吗?甚至15秒?如果构建需要 15 秒,而您想在一小时内构建 20 次(我当然会使用 TDD),这意味着我浪费了 5 分钟。休息 5 分钟是一回事——这是一种很好的放松方式等——但被耽搁 15 秒 20 次可能会非常令人沮丧。它不足以做任何有用的事情(除了可能喝一杯),但它足够长到刺激。

我怀疑有两个因素会导致我觉得其他人显然没有的烦恼程度:1)TDD 确实依赖于更快的周转时间 2)在 Eclipse 中使用 Java 时,这种延迟非常罕见

0 投票
1 回答
592 浏览

eclipse-plugin - 使用 Eclipse 构建 DSL 时,增量编译的最佳方法是什么?

正如 Eclipse 文档所建议的那样,我有一个org.eclipse.core.resources.IncrementalProjectBuilder可以编译每个源文件的文件,并且我也有一个org.eclipse.ui.editors.text.TextEditor可以单独编辑每个源文件的文件。每个源文件都被编译到自己的编译单元中,但它可以引用其他(已经编译的)源文件的类型。

两个重要的任务是:

  1. 编译(以确保我们使用的类型确实存在)
  2. 自动完成(查找类型,以便我们查看其上存在哪些属性/方法)

为此,我想将所有已编译类型的表示形式存储在内存中(以下称为我的“类型存储”)。

我的问题有两个:

  1. 上面的任务一由构建器执行,任务二由编辑器执行。为了让他们都可以访问这种类型的商店,我应该在他们都可以访问的地方创建一个静态商店,还是 Eclipse 提供了一种更简洁的方法来处理这个问题?请注意,在需要时实例化构建器和编辑器的是 eclipse,而不是我。

  2. 打开 Eclipse 时,我不想重建整个项目,这样我就可以重新填充我的类型存储。到目前为止,我最好的解决方案是将这些数据保存在某个地方,然后从中重新填充我的商店(也许在项目打开时)。这是其他增量编译器通常这样做的方式吗?我相信 Java 的方法是使用一种特殊的解析器,可以有效地从类文件中提取这些数据。

任何见解将不胜感激。这是我的第一个 DSL。

0 投票
3 回答
1859 浏览

parsing - 学习增量编译设计

有很多关于创建编译器的书籍和文章,它们一次完成所有的编译工作。IDE 使用的增量编译器/解析器的设计又如何呢?我熟悉第一类编译器,但我从未使用过第二类。

我试图阅读一些关于 Eclipse Java 开发工具的文章,但它们描述了如何使用完整的基础架构(即 API)而不是描述内部设计(即它如何在内部工作)。

我的目标是为我自己的编程语言实现增量编译器。你会推荐我哪些书或文章?

0 投票
1 回答
460 浏览

llvm - llvm:增量构建 JIT 内容的策略

我希望我的语言后端以增量方式构建函数和类型,但当函数和类型未能成功构建(由于用户输入问题)时,不要污染主模块和上下文。

关于这个,我问了一个较早的问题。我可以看到的一种策略是在 temp 模块中构建所有内容,并且LLVMContext仅在成功后迁移到主上下文,但我不确定当前 API 是否可行。例如,我不知道要在不同的上下文之间迁移该内容,因为它们应该代表 LLVM 功能的孤立岛屿,但也许总有另一种方法可以将所有内容保存到 .bc 并加载到其他地方?

你会建议什么其他策略来实现这一目标?

0 投票
2 回答
604 浏览

c++ - LLVM 中编译单元的正确抽象是什么?

在 LLVM 中,我们有LLVMContext,它是存储单元,我们有llvm::Module,它是构建新符号(函数和类型)的地方。

我的问题是;用于编译单元的正确 llvm 抽象是什么?是Module?还是这实际上意味着更大的范围,即:共享库目标

在我看来,编译单元必须满足全有或全无的结果;它要么编译所有内容而没有错误,要么存在错误并且需要在 CU 中的任何符号可用之前对其进行修复和重新构建。在我看来,这是编译单元应该代表什么的定义

如果模块是 CU 的正确抽象,我如何将其他(正确编译的)Module对象中的符号呈现给即将构建的新模块,以便它能够找到那些?我需要添加声明还是有其他加速方法?

指向相关行clang会很有帮助

0 投票
1 回答
1038 浏览

scala - 在增量编译方面,Scala 中的通配符导入是否不好?

在 Scala 中,从增量编译器(Eclipse 中的 sbt、sbt、IntelliJ)的效率和速度的角度来看,使用通配符导入是不是很糟糕?它是否会对这些增量编译器决定在发生更改时重新编译的方式产生不利影响?

例如,如果对于一个新的 class X,我只需要从 package导入 classesAB(而不是) ,我会因为写这个而受到惩罚:Cpack

而不是这个?

假设A并且B不依赖于C, 将X使用通配符导入重新编译,而不是在C更改时使用更具体的导入重新编译,或者依赖跟踪系统是否足够智能以实现尽管通配符导入C不使用它?X

0 投票
1 回答
262 浏览

scala - 为了使编译速度更快...更少的特征?

编辑
使事情复杂化似乎存在一个问题(正在播放 2.1 快照中处理),其中路由文件更改也可能触发冲压羊群效应,也就是说,重新编译控制器和依赖项。一旦解决了这个问题,并且集成了 Scala 2.10 + SBT 0.12.1 性能增强功能,那么我将更加清楚我在使用基于 trait 的 DAO 存储库时有多么自欺欺人......

ORIGINAL
我是说英语的人,能说很多很多,别担心,只是把你拉进....到可怕的慢 a$$ 编译区

然后在控制器中,混入一个 DAO 组件:

对上述控制器进行更改似乎会触发依赖 DAO 提供程序的所有源的重新编译,在我的例子中是一堆控制器。最终的影响是,我经常看到近 3/4 的应用程序被重新编译,这很烦人。

现在,SBT 0.12.1 在编译速度方面有所提高,但就它重新编译的内容而言,我的 DAO 存储库实现显然无济于事。

所以,我的问题是,在这种情况下,我是否应该放弃特征并将 DaoRepo 对象直接暴露给控制器?播放器控制器将如下所示:

我是否正确假设对修改后的 Player 控制器进行更改不会触发重新编译我的应用程序的 3/4?我知道,直接使用 DaoRepo 对象进行测试是不可能的,但是等待也不是很有效率。

感谢您的反馈,如果你有它:帮助 SBT 重新编译必要的......

0 投票
1 回答
276 浏览

php - 包含 100 万个链接的可执行 php 脚本

我是一名开始涉足 .js 和 .php 的前端开发人员(html、css、Wordpress)。

我想创建一个类似于 www.milliondollarhomepage.com 的页面

我希望这百万像素中的每一个都指向一系列链接:

html

---最多 ---->

css

这太长了。它在记事本++中崩溃。

如何编写一个 .php 包含脚本,如下所示:

那个文件看起来像

我的 php 还不够好。我希望我已经很好地解释了自己。谢谢。阿奇。

0 投票
1 回答
448 浏览

scala - SBT插件:如何列出增量重新编译输出的文件

我正在为 SBT 编写一个插件,该插件需要最后一次运行 Scala 编译器生成的类文件列表。

然后将这个类文件列表传递到执行一些字节码转换的程序中。由于这个转换过程可能很慢,我只想要上次运行 Scala 编译器编写的类文件(即那些修改过的类文件),而不是输出目录中的所有类文件。

如何获取compile任务最后生成的文件列表?