问题标签 [runtime-compilation]

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 投票
2 回答
181 浏览

performance - 如何加快 Common Lisp `IF` 语句的编译速度?

我有一个系统可以生成决策树并将它们转换为嵌套的 Common Lispif语句,其中包含检查变量值是>=<=给定整数的谓词,例如

然后我用它eval来编译 Lisp 代码,生成运行速度比解释原始决策树快得多的函数。然而,这个编译步骤花费了惊人的时间:一个包含 5000 个嵌套 if 的函数需要花费一分钟来编译(在 Powerbook 上的 Clozure Common Lisp 中),尽管生成 if 语句需要大约 100 毫秒。为什么这么简单的结构要花这么长时间?我可以做些什么来大大加快速度,也许是一些声明?我非常感谢您提供的任何指示。

0 投票
1 回答
84 浏览

common-lisp - 如何在运行时编译 s-expression,然后在 Common Lisp 中执行

我正在开发一个生成程序(遗传编程)的程序。我在运行时构建了一个 s 表达式,今天我像这样使用 eval:

对多个 x 进行了评估,我想在运行时将 s 表达式编译成一个函数,然后为多个 x 调用它以提高性能。

我不知道该怎么做,我会很感激一些帮助。这是我所拥有的:

编辑: 感谢@RainerJoswig 我做了以下修改并且它有效:

0 投票
1 回答
780 浏览

spring-boot - 在运行时编译具有对嵌套 jar 的依赖项的 Java 类

在 Spring Boot 应用程序中,我在运行时执行以下操作:

  1. 生成 Java 类
  2. 编译它
  3. 使用反射访问编译类的一些静态字段。

我的代码基于这篇文章,但在运行时编译生成的类时遇到问题。在 IDE 中运行时编译工作正常,但从 Spring Boot 运行时 jar 编译失败,提示符号丢失或某些包不存在。我正在编译的类依赖于位于 jar 下的其他类,\BOOT-INF\lib\并且编译器似乎无法使用现有的类加载器加载这些类。

我已经关注了这篇文章,它假设可以解决这个特定问题,但我UnsupportedOperationException来自方法

的界面JavaFileManager

我在这里遇到了另一种可能的解决方案,但我不清楚完整的实现。

在运行时编译类时,这似乎是一个众所周知的问题,是否有任何明确的解决方案?

我目前正在使用 Java 10.0.2。

0 投票
1 回答
83 浏览

c# - C# Roslyn 在下一次编译中使用以前编译的类

我举个例子,假设我有以下代码。

我将在内存中使用 Roslyn 编译上述代码。接下来我想在内存中编译另一个代码以使用上面编译的类,让我们说下面。

我怎样才能使第二个代码使用第一个代码作为参考?或使用它?

0 投票
1 回答
181 浏览

java - Java程序在文件夹之间拆分

所以我想开发一个小游戏引擎。这具有供用户使用的主要引擎类,例如 Vector 和 Actor。由于我只需要一次引擎,我想让游戏使用相同的引擎,并且为了避免将所有游戏放在同一个 jar 中,我打算将它们放在单独的文件夹中,与引擎一个,然后为每个游戏的文件夹. 然后引擎应该能够加载例如。来自另一个文件夹的播放器类并利用它。

我认为一种解决方案可能是在运行时编译游戏文件夹。但是问题是这些文件相互依赖,并且依赖于已经在 J​​VM 中加载的编译类。对于这种方法:

例如,我们有三个类:一个来自引擎的 Actor,一个扩展了用户编写的引擎 Actor 类的 Player,以及第三个类,即由用户编写的项目,在 Player 中生成,但又需要 Player要编译,这意味着它们不能一个接一个地编译。

据我了解,当我们运行程序时,Actor 已经在 J​​VM 中编译好了。现在我们知道了一个包含所有要编译的类的文件夹,其中 Player 依赖于 JVM 中已编译的类,而文件夹中未编译的类则依赖于 Player。

现在我想编译 Player 类,我们还必须编译 Item,然后实例化 Player,以便我们可以四处移动并生成项目。

这是我的意思的一个基本示例:

在驱动器某处的文件夹中:

我试过使用 javac 命令,但我无法让它以某种方式与整个文件夹结构一起工作。

我希望我以合乎逻辑的方式解释它,如果这种方法没有意义。这只是一个想法,如果您有更好的方法,我会很高兴听到它。

非常感谢!

0 投票
1 回答
107 浏览

c# - C#有没有办法编译一个exe

当人们从 GitHub 下载我的项目时,我会在启动时启动设置指南,其中包含一个按钮,上面写着“启动连接字符串生成器”。

问题是 GitHub 不存储 .exe,因此我必须在每个视频或教程中解释“打开连接字符串生成器解决方案 > 构建”,然后运行连接字符串生成器或单击按钮“启动连接字符串生成器按钮”。

如果有一种方法可以按需编译 Connection String Builder 项目,这将是我理想的解决方案。

我知道我可以将 Connection String Builder 项目中的表单移动到主 (DataTier.Net) 项目的内部,但如果我不需要这样做,我不想这样做,因为我在桌面上保留了一个快捷方式连接字符串生成器。

ConnectionStringBuilder 的文件夹位于工具文件夹中,该文件夹是主项目的子文件夹。

我一直在寻找一种 Rosylyn 方法来按需编译项目,但是通过谷歌搜索找不到任何东西(我承认看了几页后确实放弃了)。正如下面的代码示例所示,我知道如何检查 .exe 是否存在,并且我希望能够RosylnCompiler.Compile(pathToProject);检查 .exe 是否不存在。

有没有办法做到这一点?如果不是,我可以将我的消息框更新为说明或将表单复制到我的主项目中,但按需编译将是我理想的解决方案。

0 投票
0 回答
631 浏览

c# - 在 Unity3D 中为 IL2Cpp 构建运行时代码编译是否有任何解决方案?

我正在尝试在 Unity3D 中为 IL2CPP 构建 64 位 Android 在运行时编译 C# 代码。

我有一串要动态编译和执行的代码。我尝试过的事情是:

  1. https://github.com/aeroson/mcs-ICodeCompiler
  2. https://github.com/SoapCode/UCompile/tree/master/Assets/UCompile
  3. https://assetstore.unity.com/packages/tools/integration/roslyn-c-runtime-compiler-142753#reviews

但我要明白的是,以上所有内容都不适用于 IL2Cpp 构建。

下面的代码是使用:上面提到的第二个 Github repo 执行的。

使用第二个插件:

0 投票
1 回答
101 浏览

javascript - 什么是 Javascript 中的“运行时编译”?

我正在阅读这篇关于正则表达式的文章,它说“使用构造函数提供正则表达式的运行时编译”。然后它说“当您知道正则表达式模式将发生变化时使用构造函数”。我想知道的是,Javascript 中的运行时编译到底是什么?

0 投票
1 回答
43 浏览

r - 为什么 R 函数在第一次运行时会使用更多内存?

我一直在比较矢量化 R 代码和非矢量化 R 代码,并注意到函数在第一次运行时似乎使用更多内存。这是一个可重现的示例:

第一次运行时,squares(x)使用的内存(mem_alloc列)比x^2

但是如果我再次运行代码,我会得到非常不同的结果:

如果我再次运行基准测试,我会得到与第二次相同的结果。

如果,当我第一次启动 R 时,我在基准测试之前运行这些函数,我会得到以下结果:

请注意,内存使用量squares(x)与第二次运行时一样低,但不是x^2. 相反,如果我x^2在第一个基准测试之前运行,则用于的内存x^2下降到848B.

这是因为用于 R 的即时编译的内存在函数第一次运行时包含在内存分析中吗?如果是这样,为什么会x^2受到影响——操作符不是^已经编译成字节码了吗?我是否误解了 R 中的内存分析功能?还是这里发生了其他事情?

0 投票
1 回答
953 浏览

asp.net-core - 在 Core3.1 中安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 时,项目必须提供配置错误的值

当我在 Web 项目和 Startup 中安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation时,添加:

,项目没有运行,错误是:

项目必须为配置提供一个值

我的 .NET-Core 版本是 3.1

如何解决这个问题?