- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
7年前关闭。
Improve this question
是否有任何测试可以将 Javascript 的性能与 Java 的性能进行比较?
更新:既然每个人都在问为什么这个问题,这里有一些背景:)
众所周知 - 我希望 - 现在的 Javascript 不仅驻留在 Web 客户端中,而且还驻留在带有 node.js 的 Web 服务器中。
它也可以在带有 appcelerator 和 phonegap 的移动电话和桌面上运行。
它还可以在 Web 浏览器中大量使用,以使用户体验一流,就像使用桌面应用程序一样。
但是 Java 也可以做这些事情,在 Web 客户端和手机上运行小程序。它也是一种后端语言,有许多框架可供选择。
由于它们中的每一个都可以在上述区域几乎/完全相互替换,因此对于我描述的每种情况,我想知道它们之间的性能差异:
最佳答案
Java 和 JavaScript 都是编程语言。编程语言只是一堆抽象的数学规则。编程语言并不快。或者慢。他们只是。
应用程序的性能与语言无关。最重要的因素是应用程序架构。然后是算法效率。然后是微优化。然后是编译器/解释器的质量。然后是CPU。也许中间还有其他几个步骤。然而,语言并没有直接发挥作用。 (当然,如果您在谈论基准测试,那么特定基准测试也会发挥作用,以及基准测试的实现情况,运行情况,执行基准测试的人是否真的了解基准测试,甚至更重要的是统计数据。此外,“快速”的实际含义的精确定义非常重要,因为它也会对基准产生重大影响。)
然而,该语言可能会间接发挥作用:在 10 行高度表达、清晰、简洁、可读、分解良好、隔离的高级 Lisp 代码中,比在 100 行代码中更容易找到并修复性能瓶颈。纠结的低级 C。(请注意,这两种语言只是示例。我并不是要单独使用任何一种语言。)例如,Twitter 曾说过,如果使用一种表达能力不如 Ruby 的语言,他们就不会能够在如此短的时间内对其架构进行如此彻底的更改,以解决其可扩展性问题。 Node.js 之所以能够提供如此出色的事件 I/O 性能,是因为 JavaScript 的标准库太烂了。 (这样,Node.js 必须自己提供所有 I/O,因此他们可以从头开始针对事件 I/O 对其进行优化。例如,Ruby 和 Python 的事件 I/O 库与Node.js 并且更加成熟……但是,Ruby 和 Python 已经拥有大型标准库,包括 I/O 库,所有这些库都是同步的并且不能很好地与事件库配合使用。JavaScript 没有这个问题不能很好地与事件 I/O 配合使用的 I/O 库,因为 JavaScript 根本没有 I/O 库。)
但是,如果你真的想比较两者,这里有一个有趣的数据点:HotSpot,它是一种更流行、性能更高的 JVM 实现,是由一个团队创建的,其中包括其他人,一个叫拉尔斯·巴克的人。但实际上,HotSpot 并不是凭空出现的,它基于 Anamorphic Smalltalk VM 的源代码,该 VM 是由一个团队创建的,其中包括一个名叫 Lars Bak 的人。
V8 是一种更流行、性能也更高的 JavaScript 实现,它是由一个团队创建的,其中包括一个名叫 Lars Bak 的人。但实际上,V8 并不是凭空出现的,它基于 Anamorphic Smalltalk VM 的源代码,它是由一个团队创建的,其中包括一个名叫 Lars Bak 的人。
鉴于两者或多或少相同,我们可以期待类似的性能。唯一的区别是 HotSpot 有一百多名工程师在它上面工作了 15 年,而 V8 有十几名工程师工作了不到 5 年。这是性能上的唯一区别。这不是静态类型与动态类型(Java 是静态类型,但大多数 JVM 和 HotSpot 都没有进行任何静态优化,所有优化都是纯动态的)、编译与解释(HotSpot 实际上是用额外的 JIT 编译器解释的,而 V8纯粹编译),高级与低级。这纯粹是关于钱。
但是我敢打赌,对于 Java 实现更快的每一对 Java 和 JavaScript 实现,我可以找到另一对 JavaScript 实现更快的对。此外,我可能可以保留这对并使用不同的基准。将计算机语言基准游戏称为“游戏”是有原因的:他们甚至鼓励您在他们自己的页面上玩基准测试,以使任何任意语言上升到顶部。
关于java - 与 Java 相比,Javascript 的速度有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723374/
这个问题在这里已经有了答案: 11年前关闭。 Possible Duplicate: Haskell: difference between . (dot) and $ (dollar sign) 好
我对 Java 平台没有任何了解,我想知道可以使用哪些工具(和方法)来帮助开发用 Java 编写的可维护代码。 我知道可以使用: 适用于任何环境的敏捷方法 用于单元测试代码的 jUnit/jMock(
我们的产品需要支持 IE9,但我们一直假设 IE9 支持 IE10+ CSS 规则。 是否有一种巧妙的方法来获取在 IE10+ 中有效但在 IE9 中不受支持的所有 CSS 规则,目的是在静态代码分析
我需要为 MyString 类重载运算符 + 和 +=。 MyString.h class MyString { char* m_pStr; }; 主要
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在升级现有的旧代码以使用 VS 2019*,在代码中我有以下函数在返回行失败: int foo(const char *fn) const { ofstream out(fn,ios::b
我想使用 R2D3 pacakge 在 R 中,但我不确定这个包与 D3.js 库的关系。 R2D3 是否以任何方式限制 D3 的功能?我们可以将 R 中的所有 D3 功能和特性与 R2D3 一起使用
我正在使用 WPF 语音识别库,试图在桌面应用程序中使用它来替代菜单命令。 (我想专注于没有键盘的平板电脑体验)。它可以工作 - 有点,除了识别的准确性太差以至于无法使用。所以我试着听写到 Word。
我在学校参加数据库类(class)。老师给了我们一个简单的练习:考虑以下简单的模式: Table Book: Column title (primary key) Column gen
我正在尝试学习 MVVM 模式,特别是当 View 表示数据库表时该怎么做,但 View 有几个元素表示单个数据库字段。举个简单的例子: 假设我有一个 DateTime 类型的数据库字段(每个数据库字
我有两张 table 。表单有约 77000 行。日志约有 270 万行。 以下查询将在不到一秒的时间内返回“30198”: SELECT COUNT(DISTINCT logs.DOCID) FRO
当您在 Eviews 中进行回归时,您会得到一组这样的统计数据: 在 R 中有没有一种方法可以在一个列表中获得所有/大部分关于 R 回归的统计数据? 最佳答案 请参阅summary,它将为大多数回归对
如果我枚举 type XType int const ( X1 XType = iota X2 ... Xn ) var XTypeNames = []string{"x1", "x2
我正在试用 ranger R包加速做了很多randomForest计算。我正在检查我从中得到的预测,并注意到一些有趣的事情,因为所做的预测完全不正确。 以下是比较 randomForest 的可重现示
我发现 Clang 编译速度比 GCC 慢了四倍。知道是什么原因造成的吗? ebg@tsuki(250)$ time /usr/bin/cc -DHC4 -DSAFETY -DNOREDUCE -DN
我注意到在尝试以 JSON 格式发布表单数据时,以下内容不起作用: $.ajax({ type: "POST", url: url, data: JSON.string
我的代码库中有很多 #if DEBUG/#endif 语句,它们大多具有断言类型逻辑,我不敢在生产环境中运行这些逻辑。 [Conditional("DEBUG")] public void Check
所以我正在开发一个平方根计算器,但我不知道 while 循环是否比 do while 循环更适合。 double x, y = 1.0, newY, squareRoot; bool
我有两个列表,一个是所有语言,另一个是网站拥有的语言子集,我的想法是返回所有语言,但如果子集的元素对应于所有语言的列表,则更改 bool 值的属性. 语言的DTO: public class DTOL
以下控制台应用程序运行正常 - 我很惊讶它没有出错。 class DelegateExperiments { //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我是一名优秀的程序员,十分优秀!