Node.js与PHP、Python的字符处理性能对比
更新时间:2014年07月06日 11:47:55 投稿:hebedich
因为后续考虑实现 Fl 引擎的Node.js版本,所以对比了下Node.js和PHP的字符处理性能。发现Node.js真是甩了PHP几条街啊,再测试了下Python,比PHP还慢。
测试用例分为用函数和类来进行一个大字符串的字符逐一读取。
测试代码
Node.js
函数
var fs = require("fs");
var content = fs.readFileSync("page.html", {
encoding: "utf-8"
});
function chars(content){
var length = content.length;
var pos = 0;
while(pos ++ < length){
var chr = content[pos - 1];
}
}
var start = Date.now();
chars(content);
var end = Date.now();
console.log(end - start);
类
var fs = require("fs");
var content = fs.readFileSync("page.html", {
encoding: "utf-8"
});
var Chars = function(str){
this.str = str;
this.length = str.length
this.pos = 0;
}
Chars.prototype.run = function(){
while(this.pos ++ < this.length){
var chr = this.str[this.pos - 1];
}
}
var start = Date.now();
var instance = new Chars(content);
instance.run();
var end = Date.now();
console.log(end - start);
PHP
函数
<?php
function chars($content){
$length = strlen($content);
$pos = 0;
while ($pos ++ < $length) {
$char = $content{$pos - 1};
}
}
$content = file_get_contents("page.html");
$start = microtime(true);
chars($content);
$end = microtime(true);
echo ($end - $start) . "\n";
?>
类
<?php
class Chars{
public function __construct($str){
$this->str = $str;
$this->length = strlen($str);
$this->pos = 0;
}
public function run(){
while($this->pos++ < $this->length){
$char = $this->str{$this->pos - 1};
}
}
}
$content = file_get_contents("page.html");
$start = microtime(true);
$instance = new Chars($content);
$instance->run();
$end = microtime(true);
echo ($end - $start) . "\n";
?>
Python
函数
import codecs
import time
def chars(content):
length = len(content)
pos = 0
while(pos < length):
char = content[pos]
pos = pos + 1
f = codecs.open('page.html', encoding='utf-8')
content = f.read()
start = time.time()
chars(content)
end = time.time();
print end - start
类
import codecs
import time
class Chars():
def __init__(self, str):
self.str = str
self.length = len(str)
self.pos = 0
def run(self):
while(self.pos < self.length):
char = self.str[self.pos]
self.pos = self.pos + 1
f = codecs.open('page.html', encoding='utf-8')
content = f.read()
start = time.time()
instance = Chars(content)
instance.run()
end = time.time();
print (end - start)
其中 page.html 文件内容为一个长度为 的文本。
测试结果
语言 函数 类 Node.js 0.022s 0.026s PHP 0.35s 1.02s Python 0.58s 1.50s
相关文章
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
这篇文章主要介绍了Node.js基于connect和express框架的多页面实现数学运算,简单讲述了connect和express框架的原理及数学运算相关操作技巧,需要的朋友可以参考下2017-04-04
利用adb shell和node.js实现抖音抢红包功能(推荐)
这篇文章主要介绍了利用adb shell和node.js实现抖音抢红包功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下2018-02-02
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
本篇文章主要介绍了Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例,具有一定的参考价值,有兴趣的可以了解一一下‘2017-09-09
nodejs如何在package.json中设置多条启动命令
这篇文章主要介绍了nodejs如何在package.json中设置多条启动命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03


最新评论