deno代码
不需要导入,因为writeTextFileAPI是核心运行时的一部分。
asyncfunctiontest(runs:Number,data:string){for(leti=0;iruns;i++){awaitDeno.writeTextFile("./testdata/output.txt",data);}}
nodejs代码
需要从核心fs模块导入写文件API。
const{writeFile}=require("fs").promises;asyncfunctiontest(runs,data){for(leti=0;iruns;i++){awaitwriteFile("./testdata/output.txt",data);}}测试数据
测试运行包括写入给定文件10K次。有四种不同大小的测试数据(1K、10K、K和2M)。源数据是通过在启动时读取文件来准备的:
$ls-l1K.txt-rw-r--r--
1mayankcstaffMar:K.txt$ls-l10K.txt-rw-r--r--1mayankcstaffMar:K.txt$ls-lK.txt-rw-r--r--1mayankcstaffMar:35K.txt$ls-l2M.txt-rw-r--r--1mayankcstaffFeb:M.txt版本Deno和Node.js版本如下所示:
$deno-Vdeno1.20.1$node-vv17.7.2
两者都是撰写本文时(年3月19日)的最新消息。
测试结果每个文件大小的测试结果如下:
1K数据
Deno的性能与Node相当.js
10K数据
Deno的性能与Node相当.js
50万数据
Deno的性能比Node略慢.js
万数据
Deno的性能略快于Node.js
Deno与Node性能比较:读取文件测试测试只是将给定的文本文件作为字符串读取。对于不同的文件大小,该测试重复10K次。Deno和Node.js代码如下所示:
deno代码
不需要导入,因为readTextFileAPI是核心运行时的一部分。
asyncfunctiontest(runs:Number){for(leti=0;iruns;i++){constfileData=awaitDeno.readTextFile(`./testdata/${fileName}`);}}
node代码
需要从核心fs模块导入readFileAPI。
const{readFile}=require("fs").promises;asyncfunctiontest(runs){for(leti=0;iruns;i++){constfileData=awaitreadFile(`./testdata/${fileName}`,{encoding:"utf8",});}}测试数据
测试运行包括读取给定文件10K次。有四个不同大小的测试文件(1K、10K、K和2M):
$ls-l1K.txt-rw-r--r--
1mayankcstaffMar:K.txt$ls-l10K.txt-rw-r--r--1mayankcstaffMar:K.txt$ls-lK.txt-rw-r--r--1mayankcstaffMar:35K.txt$ls-l2M.txt-rw-r--r--1mayankcstaffFeb:M.txt版本Deno和Node.js版本如下所示:
$deno-Vdeno1.20.1$node-vv17.7.2测试结果
每个文件大小的测试结果如下:
.txt
节点比德诺略快
10千.txt
节点比德诺略快
.txt
Node几乎是Deno的三倍
万.txt
Node比Deno快25%左右
结论对于小文件大小,Deno的性能可与Node.js相媲美。但是,对于大文件大小,Node.js的性能优于Deno。
DenovsNode性能:APIProxy这一次,我们将看到充当API代理的HTTP服务器的性能比较。服务器向模拟服务器发送另一个HTTP请求,获取包含随机ID的响应,对其进行解析,然后发送随机ID以响应其调用方。
配置环境性能比较在以下环境中执行:
系统:配备M1处理器和16G内存的MacBookPro
本地:SUT和测试仪位于同一系统上
德诺版本:1.16.4
节点版本:17.2.0
测试数据有一个模拟API服务将由Deno和Node.js代理使用。模拟API服务生成一个随机UUID并将其发送回调用方。模拟API服务是用Deno编写的。下面是模拟API服务的代码:import{listenAndServe}from"