问题标签 [ahead-of-time-compile]
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.
java - Java 类的 Clojure Ahead-of-Time 编译失败“找不到匹配的即时方法,为类 java.time.LocalDate 采用 2 个参数”
尝试使用 AOT 编译 Clojure 命名空间时clj -e "(compile 'my-ns.core)"
会引发异常LocalDate
:
在 REPL 中运行良好。为什么在 AOT 中失败?类是导入的。
我认为这一定与 AOT 构建中包含的这些类有关?
python - 使用 Numba AoT 从扩展模块调用扩展模块
Python
我在使用中开发复杂的数学库numba
。任何函数都必须支持jit
和aot
。我有从另一个文件调用函数的函数。
功能1.py:
func1.py 编译成 func1.cp38-win_amd64.pyd 使用cc.compile()
函数2.py:
如果我尝试编译 func2.py,则会引发错误:
numba.core.errors.TypingError:在 nopython 模式管道中失败(步骤:nopython 前端)Module 类型的未知属性“calc”(<module 'func1' from '...\func1.cp38-win_amd64.pyd'>)
我可以从扩展模块调用扩展模块吗?如何正确操作?
javascript - V8 可以执行 JS 代码的构建时预编译吗?
我们正在尝试优化 JS 代码在移动设备上的启动时间并寻找机会。我发现Facebook Hermes JS 引擎是为类似目的而创建的,但目前我们严重依赖 V8。
是否可以使用 V8 完成构建时预编译,这意味着解析和代码优化将在编译时完成并在运行时节省一些时间?从源代码生成 LLVM 位码并在运行时执行位码似乎非常接近我的想象。WASM 似乎不是一种选择(至少对于移动设备而言)。
如果可能的话,能否提供一个用 V8 优化的简单 JS 代码的简单示例?
PS。可能它也有助于内存消耗,这可能是次要目标。
c# - 如何在 C# 中检查代码是否在 AOT 中运行?
我正在使用编译表达式来创建实例。由于回退过程,它在 JIT 中非常快,但在 AOT 中却不是(甚至更慢)。所以我想检查代码是否在AOT中运行。如果是,我会ConstructorInfo.Invoke
改用。
ATM,我只有一个想法,通过调用 AOT 中不允许的方法之一来检查这一点,然后捕获错误。还有其他更好的检查方法吗?
c# - AOT 中 Expression.Lambda 引发的异常
它完全适用于 JIT。对于 AOT,它使用 <= 15 个参数。
对于 16 个参数,抛出异常如下:
对于 >= 17 个参数,抛出异常如下:
我知道 AOT 不应该在运行时编译任何表达式,它会影响性能,因为有一个回退过程。所以我不是在问最好的方法,只是想弄清楚为什么当参数太多但在 AOT 中使用 <= 15 个参数时会引发异常。
ios - “在仅 aot 模式下运行时尝试 JIT 编译方法”更新 protobuf-net 后抛出异常
从 2* 版本更新到 protobuf-net 3.0.101 后,下一个异常开始抛出 IOS xamarin 项目:
MY_NAMESPACE 和 MY_SERIALIZED_TYPE 只是真实类型的示例。目前,不能反序列化非常简单的类型:
那么,有没有在 xamarin IOS 项目上使用 protobuf-net 3.* 的成功案例?我能用它做什么?
c# - 使用 Roslyn 进行运行时编译 - 如何生成 AoT 编译
我一直在探索使用 c# 和 Roslyn 进行运行时动态代码编译。在SO上使用这个答案我已经能够完成一个示例,该示例可以执行我想要的操作,除了一件事:它会生成一个 dll,然后必须使用该dotnet
命令调用该 dll。我从到目前为止的谷歌搜索中得出结论,此时可以使用 .NET 5 进行 AoT 并生成一个自包含的 .exe。基于CSharpCompilation
有人可以指导我如何做到这一点的一个很好的例子吗?
python - 从另一个 Python 文件调用 numba jited 函数
我有一个具有以下文档结构的 Python 项目:
中定义的类myclass.py
有一个我打算加速的方法。我通过将它们的一部分加入函数来实现这一点,myclass.py
如下所示:
当我在不离开 myclass.py 的情况下调用 jited 函数两次时,它们在第二次调用期间运行得更快。这是预期的结果,因为在第一次调用期间进行了编译。但是当我第二次从 myclass.py 外部调用类方法时(在我的例子中是从 main.py),jitted 函数再次编译,我根本无法从加速中受益。对于这个用例提前 (AoT) 编译看起来像是一个解决方案,但是显式定义函数签名的必要性目前阻止了我使用它。因此,我想知道是否有一种方法可以在不使用 AoT 编译的情况下将我的函数的加速版本保存在不同的文件中。感谢您的回答。
java - Cassandra 的提前编译
我一直在尝试找到一种方法来实现Cassandra 服务的提前编译(默认情况下会进行一些 JIT 编译)。
我看到 Cassandra 是用 Java 编写的,它是开源的,有明确的说明从源代码构建和运行服务(https://blog.pythian.com/how-to-build-your-very-own -cassandra-4-0-release/ )
我还可以看到有一些流行的选项可以帮助实现 Java 程序的提前编译(例如:https ://www.graalvm.org/22.0/reference-manual/native-image/一个非常流行的选择)
但是我找不到任何可以指导我为 Cassandra 执行 AOT 的资源,如果有什么可以帮助我为 Cassandra 执行 AOT,请指导我。
output - 一般 Numba AOT 输出文件 - 我们可以从 AOT 编译函数生成 C++ 或 Cython 类文件吗?
问题:寻找更熟悉 Numba AOT 和我尚未找到的任何“输出中间文件”选项的人。
首先 -> Pythran 是 Python 到 C++ 到 PYD 的编译器。您可以使用简单的 -e 选项将 cpp 文件输出到编译器。它还需要 #pragma omp 标志,例如#omp parallel for
. 现在谈论的更多的 Numba 主要用于 JIT 模式。但它可以选择 AOT(提前)编译模块,但它们会失去并行优化。
所以我在一个项目中使用这两个库。Numba AOT 编译函数比 Pythran 快得多(Pythran 使用 #omp 并行 for 循环,而 Numba AOT 没有)。尽管如此,Numba 版本更快,所以它在做一些我的 Pythran 程序没有做的事情。
所以我想看看它在做什么——但是当我从中查看 Numba 的 AOT 的源代码时,Numbanumba.pycc import CC
似乎以某种方式实际上正在生成字节码,然后将其编译成 PYD。但是文档没有说明这是在任何地方完成的,或者是否有可能在编译检查之前获得 Numba 生成的初步文件。如果它们是字节码,那么我无论如何都无法阅读。但是,如果它们是 Cython 或 CPP 格式,那么很容易检查正在进行的优化。所以...
寻找更熟悉 Numba AOT 和我尚未找到的任何“输出中间文件”选项的人。
即使答案是“不,你不能那样做”我需要听到它,然后我可以专注于我可以实际更改的部分代码。
赞赏!