问题标签 [interpreted-language]

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 回答
123 浏览

performance - 运行时编译:这怎么可能不影响性能?

我听说某些类型的运行时编译不会影响性能。官方 Python 文档断言运行.pyc文件不比.py. (我现在找不到链接。)这怎么可能?从 生成字节码不需要时间.py吗?

像 PHP 这样的语言呢?每次执行时都不需要编译它们吗?你为什么要这个?如果多次运行同一个脚本,这似乎是在浪费时间。

0 投票
2 回答
293 浏览

interpreted-language - 解释脚本:隐式与显式执行

这个超级用户问题中,我被告知最好通过显式执行解释器并将脚本作为参数提供来执行以解释语言(php、python 等)编写的脚本,例如:

> php script.php

而不是在脚本中添加一行来告诉操作系统执行它,例如:

为什么这是真的?我的直觉告诉我,如果脚本被移动到解释器的可执行文件位于不同路径的系统中,它会更安全,但这是唯一的原因吗?

0 投票
4 回答
328 浏览

language-agnostic - 怎么能解释代码效率甚微?(理论)

好的,首先,我不想在这里发生任何形式的火焰战争或类似的事情。我更大的问题更具理论性,并且将包含一些示例。

所以,正如我所写的,我无法理解解释语言怎么可能效率很低。由于它是现代的,我将以 Java 为例。

让我们回到没有 JIT 编译器的日子。Java有它的虚拟机,它基本上是它的硬件。您编写代码,而不是将其编译成字节码以至少从虚拟机中移除一些工作,这很好。但是考虑到 RISC 指令集在硬件中的复杂程度,我什至想不出在软件模拟硬件上的方法。

我没有编写虚拟机的经验,所以我不知道它是如何在最有效的水平上完成的,但我想不出比测试匹配和执行适当操作的每条指令更有效的方法。你知道的,比如:if(instruction=="something") { (do it) } else if(instruction=="something_diffrent"){ (do it) }等等......

但这必须非常缓慢。而且,即使有文章说 Java 在 JIT 编译器之前很慢,他们仍然说它并没有那么慢。但是为了模拟它必须花费真实硬件的许多时钟周期来执行一条字节码指令。

而且,甚至整个平台都是基于 java 的。例如,安卓。Android 的第一个版本没有 JIT 编译器。他们被解释了。但是不应该比Android慢的多吗?然而事实并非如此。我知道,当你从 Android 库中调用一些 API 函数时,它们是用机器代码编写的,所以它们很高效,所以这很有帮助。

但是想象一下,您将从头开始编写自己的游戏引擎,使用 API 来显示图像。您将需要执行许多数组复制操作,许多计算在模拟时会非常慢。

现在是我承诺的一些例子。由于我主要使用 MCU,因此我为 Atmel AVR MCU 找到了 JVM。Thay 表示 8MHZ MCU 每秒可以执行 20K java optcodes。但是由于 AVR 可以在一两个周期内完成大多数指令,因此平均可以说 6000000 条指令。这让我们知道,没有 JIT 编译器的 JVM 比机器代码慢 300 倍。那么为什么在没有 JIT 编译器的情况下让 java 如此流行呢?这不是太糟糕的性能损失吗?我只是无法理解。谢谢。

0 投票
2 回答
2484 浏览

compiler-construction - 在 INTERPRETER 和 COMPILER 的情况下执行的步骤

解释语言和编译语言之间到底有什么区别。例如,我想打印从 1 到 100 的数字。在解释器和编译器的情况下,操作顺序是如何发生的。

此外,如果可能,请根据 Java 语言和 C 语言提供我的步骤

谢谢

0 投票
5 回答
9785 浏览

optimization - 递归开销——有多严重?

可能重复:
递归比循环快吗?

大约 15 年前,我第一次接受了认真的 C 语言培训。我的雇主想要高度优化的代码来完成计算困难的任务。我记得不止一次被建议将递归重写为循环,即使以牺牲可读性为代价,以避免“递归开销”。正如我当时所理解的那样,递归开销是将数据推送到堆栈然后将其弹出所需的额外工作。

现在我用 C、Python、Perl 和 Java 编写代码,有时我想知道递归。重写它们还有什么好处吗?如果它们是尾递归怎么办?现代编译器是否已经解决了所有这些问题?这些问题与解释语言无关吗?

0 投票
4 回答
2117 浏览

microcontroller - 内存受限微控制器的快速解释语言

我正在为微控制器寻找一种快速解释语言。

要求是:

  • 应该很快(不是关键但会很好)
  • 数据内存应该很轻(小开销<8KB,不包括程序变量空间)
  • 最好是程序大小小,语言紧凑
  • 最好是人类可读的(例如,BASIC)

谢谢!

0 投票
1 回答
28 浏览

interpreted-language - 使用解释语言时的数据文件

假设我有一些我想要几种数据。我认为最简单的例子可能是游戏中的瓷砖:我会有草、石头、树等,每个都有不同的值集。

我会立即继续制作一个文件并在运行时将其读入,因此我不必重新编译它以使用 C++ 之类的东西进行调整。但是,如果我使用的是 Python 或其他一些解释性语言,那么必须将文件制作成如下格式是否有意义:

种草
颜色 0xdfdfdf
走真
看真

而不是:

类草(瓷砖):
定义 初始化(自我):
我不记得如何初始化。父母
self.colour = 0xdfdfdf

当你不编译时,第一个明显的好处就消失了。

0 投票
4 回答
317 浏览

linux - 解释语言中的类似 ncurses 的绑定

解释语言中是否有任何用于 ncurses 或类似菜单框架的绑定,使创建控制台菜单和与选项交互的过程变得异常简单?

我想快速制作一个在 Linux 机器上运行的仅限终端的配置实用程序的原型,以便利用以前安装的一些本地资源。

0 投票
2 回答
281 浏览

compiler-construction - 从源代码解释的语言与 Web 中的字节码

假设一个程序是用 2 种不同的语言编写的:

  1. 使用从源代码解释的语言(例如 PHP)
  2. 使用从字节码解释的语言(例如 Java)。

这两个程序的作用完全相同(为简单起见,假设它们都只输出一行文本)。

语言 (2) 会比 (1) 快吗?

我是否可以得出这样的结论:理论上,如果两个站点提供相同的功能,但一个使用 PHP 构建而另一个使用 Java (JSP) 构建,则基于 Java 的站点会更快?

乔尔

0 投票
7 回答
13603 浏览

c# - Shell 脚本与高级解释语言(C#/Java/等)的性能比较

首先 - 这并不是要成为一个“更好的、无知的非离子战争线程”……而是,我通常需要帮助来做出架构决策/论证以提交给我的老板。

跳过细节 - 我只是想知道并找到任何对 Shell 与 [在此处插入通用编程语言(解释)进行了一些性能比较的人的结果,例如 C# 或 Java ......

令人惊讶的是,我花了一些时间在谷歌上搜索这里没有找到任何这些数据。有没有人在不同的用例中做过这些比较?像在 XYX 循环中一样访问数据库,执行不同类型的 SQL(Oracle 首选项,但 MSSQL 会执行)查询,例如任何 CRUD 操作 - 也没有访问数据库,只是常规 50k 循环类型比较执行不同类型的计算,以及那种性质的东西?

特别是 - 现在,我需要比较从 shell 脚本访问 Oracle DB 与 C#(同样,任何解释的 GPPL 都可以,即使是更高级别的,如 Python)。但我还需要了解标准编程计算/指令/等...

在你问‘为什么不自己写一个快速测试?答案是:我的整个人生/职业生涯都是一名 Windows 开发人员,并且对 Shell 脚本的了解非常有限——更不用说整个 *nix 了……所以在这里向更有经验的人提问是非常有益,更不用说节省时间了,因为我们正处于接近永久的最后期限紧缩状态;)。