文档章节

Golang, Swift, Nodejs 和 Rust 性能对比

点空
 点空
发布于 2016/02/01 13:08
字数 592
阅读 523
收藏 3


原文在:http://771dian.com/cb/topic/4yi18ADKg 


先说结论:

  • 一般程序:rust最快,比golang快一丁点;比nodejs快2倍;比swift快3倍。。。


  • 深度递归:形式完全逆转,swift最快,比rust快一倍;比golang快2.3倍;比nodejs快3倍

  • 综合来看,rust算最快,但它的生态系统很弱,不用考虑。我们给firefox做过扩展,深刻体会其团队思路之坑爹,绝对不会跟随他们的产品。


普通:

递归:

来源: https://grigio.org/go-vs-node-vs-rust-vs-swift/ 


语法便利性


对于跨平台语言,除了性能,语法的便利也很重要,会严重影响开发效率。除了rust外,下面几乎是共识:

  • nodejs(es6或es7语法)最方便;swift接近,但略微差一些;和前两者比,golang语法则不算方便。

  • nodejs 无需强类型,原生支持json,支持类和原生并发。实在太轻松。想要强类型,有typescript可选。不想要,可以不用。

  • golang和swift,都不够方便

  • 比如,处理json,都需要依赖库把json解析为强类型结构。golang是自带库,swift是第三方库(国人作品)。使用库之后,golang和swift就差不多了。

  • golang不支持类和泛型,结构体模拟类不够简洁。swift支持类。

  • swift语法接近 typescript 版本的Javascript,转移很便利

  • golang语法自成一派,不过上手也比较简单就是了。


综合结论


一般而言,如果不为了追求极致性能,用nodejs就很好,因为除了性能,开发效率也很非常非常重要。nodejs开发明显轻松。


nodejs不能多核的问题,可运行多实例,一个实例用一核这样就实现:开发效率+运行效率最大化。


不想这么做,就选择golang,毕竟深度递归并不常用。但如果大量操作json,还是用nodejs最轻松。


swift虽然开源跨平台了,但从性能、语法便利上看,除特殊情况外,不足以代替golang+nodejs。


rust虽然性能指标不错,但从我们做firefox扩展的体验来看,团队思路离大众需求,其实非常遥远,特别坑爹。我们是绝对不会跟随这个团队的任何产品的,也不推荐大家跳进去。


© 著作权归作者所有

共有 人打赏支持
点空
粉丝 3
博文 7
码字总数 4463
作品 0
golang vs dlang vs nodejs vs php 性能对比较量

这是我本机开的一个单核1G内存的Hyper-V虚拟机,首先我们使用的语言和框架版本给大家看一下: root@kerisy:/home/zoujiaqing# go versiongo version go1.5.1 linux/amd64root@kerisy:/home/...

冰力
2015/11/13
0
1
开源 IP 地址定位库 ip2region 1.7 发布,新增 rust 支持

ip2region 是准确率 99.9% 的 IP 地址定位库,0.0x毫秒级查询,数据库文件大小只有 3.3M,提供了 Java、PHP、C、Python、Node.js、Golang、C#、Rust的查询绑定和 Binary、B树、内存三种查询算...

狮子的魂
07/31
0
12
使用 Rust + WebAssembly 编写 crc32

使用 Rust + WebAssembly 编写 crc32 const POLY = 0xedb88320;const TABLE = makeTable(POLY);const TABLE8 = (function () {const tab = Array(8);for (let i = 0; i < 8; i++) { }tab[0] ......

神机算子
今天
0
0
Deno 并不是下一代 Node.js

这几天前端圈最火的事件莫过于 ry(Ryan Dahl) 的新项目 deno 了,很多 IT 新闻和媒体都用了标题:“下一代 Node.js”。这周末读了一遍 deno 的源码,特意写了这篇文章。长文预警(5000字,1...

justjavac
06/04
0
0
从PHP 到Golang 的笔记 ( 转 )

———文章来源 YamiOdymel/PHP-to-Golang 为什么从PHP 转到Golang? PHP和模块之间的关系令人感到烦躁,假设你要读取档案,你需要有一个的模块,为此,你还需要将其编译然后将编译后的模块摆...

沐青之枫
05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

elastic search+kibana 5.6.12安装指南

前提准备: 1,安装jdk, We recommend installing Java version 1.8.0_131 or later. 2, 设置文件最大打开数(使用命令ulimit -n查看) ulimit -n 65536 3, 创建用户elastic/用户组elastic gro...

PageYi
32分钟前
2
0
安装mongodb碰到error: unpacking of archive failed on file /etc/init.d/mongod;5bcec214: cpio: open如何解决

今用yum安装mongodb4.0.3发现一个错误,当用yum install 安装mongo-org 时除了mongodb-org-server 没有安装以外其他的都安装正确,重新安装mongodb-org-server 时报如下错误信息 在一篇老外 ...

chanking
34分钟前
1
0
O2OA:企业办公数字化转型的更佳选择

在全球都在积极探索由新一轮信息技术所引发的第四次工业革命时,一场激发企业内生动力的数字化运动在互联网企业和传统企业之间却呈现出两种截然不同的状态。   传统企业办公数字化不彻底仍...

超能之法师
36分钟前
1
0
基于SylixOS 对 Goahead 进行配置使用 OpenSSL

1. 编译并部署OpenSSL SylixOS支持OpenSSL,git地址为:http://git.sylixos.com/repo/openssl.git 获取OpenSSL工程源码后,导入RealEvo-IDE中编译,编译完成后生成动态库文件和openssl可执行...

Baiqq
39分钟前
1
0
nginx+tomcat均衡负载

一、安装好nginx环境,启动至少两个的tomcat服务; 此处tomcat访问地址为:http://192.168.106.128:1000/、http://192.168.106.128:1001/、http://192.168.106.128:1002/ 二、修改nginx配置文...

狼王黄师傅
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部