JavaScript来clojure(Javascript to clojure)
我知道ClojureScript - 可以将clojure代码编译为javascript,但是有可能做相反的事情,需要JavaScript代码的一些子集并将其翻译回clojure?
I am aware of ClojureScript - possibility to compile clojure code to javascript, but is it possible to do the reverse, take some subset of javascript code and translate it back to clojure?
原文:https://stackoverflow.com/questions/6788212
最满意答案
它可以,但据我所知,事实并非如此。 为了解决这个问题,Scala最近增加了对编译时类型专用化的泛型代码的支持,该代码生成了该类的专用版本 - 没有任何转换 - 并将它们透明地放置到代码库的其余部分,以便代码仍然按预期工作。 在这些情况下,编译好的Scala代码实际上可能比Java快得多,因为带泛型的Java将始终使用强制转换。
It could, but as far as I know it doesn't. To work around this, Scala added support somewhat recently to compile-time type specialization of generic code which generates specialized versions of the class - without any casts - and places them to the rest of the codebase transparently so that the code still works as expected. In these cases, compiled Scala code can actually be noticeably faster than Java since Java with Generics will always use casts.
相关问答
更多-
TCP/IP模型是一个________。[2023-10-02]
a -
JIT编译器有什么作用?(What does a JIT compiler do?)[2023-01-22]
Java代码通常分布为字节码,这是与机器无关的伪代码 。 (同样的想法以前在70年代开发的UCSD-p系统中使用过。)其优点是相同的应用程序可以在不同的处理器和操作系统中运行。 另外,字节码通常比编译的应用程序小。 缺点是与运行编译代码相比,解释代码很慢 。 为了解决这个问题,开发了JIT编译器 。 JIT编译器在执行代码之前将代码编译为机器代码。 与解释器相比,这样可以加快执行速度,但每次运行程序时都会花费额外的时间进行编译。 另外,由于JIT编译器必须快速编译,因此不能使用静态编译器中使用的复杂优化技术 ... -
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
它可以,但据我所知,事实并非如此。 为了解决这个问题,Scala最近增加了对编译时类型专用化的泛型代码的支持,该代码生成了该类的专用版本 - 没有任何转换 - 并将它们透明地放置到代码库的其余部分,以便代码仍然按预期工作。 在这些情况下,编译好的Scala代码实际上可能比Java快得多,因为带泛型的Java将始终使用强制转换。 It could, but as far as I know it doesn't. To work around this, Scala added support somewha ...
-
JIT优化最好(JIT Optimizations at their finest)[2022-05-08]
我可以举一个优化的例子。 假设你有某个地方的功能。 (可以把它看成类似C的伪代码。) void function(MyClass x) { x.doSomething(); for (obj in x.getWidgets()) obj.doSomethingElse(); } 这是适当的模糊。 但是,假设您在整个图像中只有一个从MyClass继承的具体类: MyConcreteClass 。 在这种情况下,JIT可以内联doSomething和getWidgets 。 如 ... -
使用泛型具有显着的性能优势 - 您可以摆脱拳击和拆箱 。 与开发自己的课程相比,这是一个硬币投掷(硬币的一边比另一方重)。 只有当你认为你可以超出框架的作者的时候,才能自己滚动自己。 There's a significant performance benefit to using generics -- you do away with boxing and unboxing. Compared with developing your own classes, it's a coin toss (wi ...
-
没有JIT优化(No JIT Optimization)[2023-08-18]
在你之前的问题中,JIT优化了方法start的完整代码,没有分析方法返回时变量中出现了什么数字。 这是因为你选择让你的方法void ,给JIT一个简单的线索,任何计算的值都将被丢弃。 将你当前的例子与前一个问题的例子相比较,没有void方法调用,所以自然不会发生优化。 为什么没有其他优化可以帮助完全不同的案例是一个无法回答的问题。 在spencefic JVM实现中没有这样的优化,以及您测试代码的特定JVM调用。 In your previous question the JIT optimized awa ... -
我找到了一个锻炼来解决这个问题。 在编译期间,不得以任何方式指定目标GPU(删除-gencode或-gencode标志)。 随后,驱动程序在运行时生成目标二进制文件。 I found a workout to handle the issue. During compile, the target GPU must not be specified in anyway (Remove -arch or -gencode flags). Subsequently, the driver generates t ...
-
观察JIT的结果(Observing the results of the JIT)[2022-10-28]
尝试考虑使用PrintAssembly命令行参数集。 以下HotSpot选项(命令行中带有-XX:前缀)需要OpenJDK 7和可外部加载的反汇编程序插件 建议尝试hsdis插件实现。 但是你需要手动构建它。 要查看生成的代码,您还应该首先使用-XX:+ UnlockDiagnosticVMOptions 。 换句话说,JVM将无法识别另一个PrintAssembly选项。 在你的情况下应该帮助下一个选项: -XX:CompileCommand可以帮助您过滤应用程序的输出。 -XX:LogFile = fo ... -
我不认为你可以令人信服地证明使用JIT的Java比C / C ++静态编译的代码更快。 你可以在java中找到一些击败其c / c ++实现的代码。 为此,您需要搜索关键字,如(基准,Java,JIT,C,C ++) 我故意没有提到上述任何代码或链接,因为我的观点如下。 大多数时候,人们都会用以下方式显示java代码以静态方式编译c / c ++ 找到java比c / c ++(内存分配)快的部分,并且只写代码来突出显示它。 找到c / C ++代码的弱点,并尝试编写超过c / c ++代码来实现结果的ja ...