可以将javascript嵌入C++;在web上编程速度比javascript快 我严格地是C++初学者,但我想知道,在C++程序中运行的JavaScript(或Lua或任何脚本语言)是否受到C++代码所能提供的相同的硬件加速。p>

可以将javascript嵌入C++;在web上编程速度比javascript快 我严格地是C++初学者,但我想知道,在C++程序中运行的JavaScript(或Lua或任何脚本语言)是否受到C++代码所能提供的相同的硬件加速。p>,javascript,c++,performance,v8,spidermonkey,Javascript,C++,Performance,V8,Spidermonkey,我意识到这需要在你的程序中的某个地方有一个js引擎,但我很好奇,无论出于什么原因,这种javascript是否天生更快/更好。正如你所说,这样的程序必须使用某种javascript引擎,很可能已经在V8等浏览器中使用过。任何速度增益(如果有的话)都主要来自应用程序设计。您的程序可能不必使用与javascript交织在一起的那么多资源和抽象。正如您所说,这样的程序必须使用某种javascript引擎,很可能已经在V8等浏览器中使用过。任何速度增益(如果有的话)都主要来自应用程序设计。您的程序可能不

我意识到这需要在你的程序中的某个地方有一个js引擎,但我很好奇,无论出于什么原因,这种javascript是否天生更快/更好。

正如你所说,这样的程序必须使用某种javascript引擎,很可能已经在V8等浏览器中使用过。任何速度增益(如果有的话)都主要来自应用程序设计。您的程序可能不必使用与javascript交织在一起的那么多资源和抽象。

正如您所说,这样的程序必须使用某种javascript引擎,很可能已经在V8等浏览器中使用过。任何速度增益(如果有的话)都主要来自应用程序设计。您的程序可能不需要使用与javascript交织在一起的那么多资源和抽象。

javascript本身是一种解释/翻译语言。你可以为它编写自己的解释器或翻译器(如果你真的很聪明,做得比现有的更好……),但做一些“有效”的事情是一项艰巨的任务,更不用说改进现有的了,而且很可能很难涵盖所有的怪癖和错误“它在Firefox中是这样工作的,在IE7中也是这样,在IE8+中有一些不同的方式。”这是网站使用的解决方法


如果您使用预先存在的JS解释器,则几乎没有什么好处。

JavaScript本身就是一种解释/翻译语言。您可以为它编写自己的解释器或翻译器(如果您真的很聪明,可以比现有的解释器做得更好……),但要做到“有效”,这是一项艰巨的任务,更不用说在现有的基础上进行改进了,而且很可能很难涵盖所有的怪癖,而且“它在Firefox中是这样工作的,在IE7中是那样工作的,在IE8+中是不同的”类型的变通方法是网站使用的


如果您使用预先存在的JS解释器,则几乎没有好处

速度不是语言引入的属性,而是实现引入的属性。一个Javascript翻译器可能使用被认为是最佳的算法编写,而另一个可能使用草率、缓慢的算法编写。Javascript源代码中使用的算法将是最重要的优化尝试


同样,C++编译器经常会尝试自动优化代码。C++的实现可能会产生一个JavaScript翻译程序,它被认为是一台机器的最佳版本,但对于另一台机器来说却是非常慢的,而另一种则可能会使JavaScript翻译程序对两台机器都是最佳的或最慢的。一个Javascript翻译器可能使用被认为是最佳的算法编写,而另一个可能使用草率、缓慢的算法编写。Javascript源代码中使用的算法将是最重要的优化尝试


同样,C++编译器经常会尝试自动优化代码。C++的实现可能会产生一个JavaScript翻译程序,它被认为是一台机器的最佳版本,但对于另一台机器来说却是非常慢的,而另一种则可能会为两台机器生成一个JavaScript转换器。如果不是所有的现代解释器都已经从C或C++代码中运行了,JavaScript仍然是JavaScript。如果不是所有的现代解释器都已经从C或C++的代码中运行,V8编译JavaScript到IA32、X86/64和ARM机器代码;Javascript与其说是C语言,不如说是一种解释语言。更详细地说,翻译方法(例如“解释与编译”)是由语言的实现(例如,译者,无论是编译器还是解释器)而不是语言本身做出的决定。它更像是一种“及时”的编译方法,而且它有一些无法解决的特性(如“eval”),除了直接解释外,其他任何方法都无法处理这些特性。此外,根据我的经验,如果函数中有错误,通常只有在调用时才会检测到。“即时”指的是优化,而不是编译或解释。“解释器”将源代码直接翻译为行为。“编译器”将源代码翻译成另一种编程语言。V8绝对是一个编译器。

eval
功能的解析方法与解释器解析功能的解析方法相同:将
eval
链接回翻译机制。这与“解释”与“编译”无关。V8将javascript编译为IA-32、x86/64和ARM机器代码;Javascript与其说是C语言,不如说是一种解释语言。更详细地说,翻译方法(例如“解释与编译”)是由语言的实现(例如,译者,无论是编译器还是解释器)而不是语言本身做出的决定。它更像是一种“及时”的编译方法,而且它有一些无法解决的特性(如“eval”),除了直接解释外,其他任何方法都无法处理这些特性。此外,根据我的经验,如果函数中有错误,通常只有在调用时才会检测到。“即时”指的是优化,而不是编译或解释。“解释器”将源代码直接翻译为行为。“编译器”将源代码翻译成另一种编程语言。V8绝对是一个编译器。
eval
功能的解析方法与解释器解析功能的解析方法相同:将
eval
链接回翻译机制。这与“解释”与“编译”无关。