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

相关文章

  • NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

    NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

    本篇文章主要介绍了NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 什么是Node.js?Node.js详细介绍

    什么是Node.js?Node.js详细介绍

    这篇文章主要介绍了什么是Node.js,Node.js能做什么,Node.js的优缺点,Node.js的例子等,需要的朋友可以参考下
    2014-06-06
  • 为什么Node.js会这么火呢?Node.js流行的原因

    为什么Node.js会这么火呢?Node.js流行的原因

    是什么原因让Node.js突然间如此流行呢?听起来像是有了一种新的Web开发技术,是这样吗?我们来汇总一下。
    2014-12-12
  • 如何在node环境实现“get数据解析”代码实例

    如何在node环境实现“get数据解析”代码实例

    这篇文章主要介绍了如何在node环境实现“get数据解析”代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • nodejs6下使用koa2框架实例

    nodejs6下使用koa2框架实例

    本篇文章主要介绍了nodejs6下使用koa2框架实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • node.js与vue cli脚手架的下载安装配置方法记录

    node.js与vue cli脚手架的下载安装配置方法记录

    这篇文章主要给大家介绍了关于node.js与vue cli脚手架的下载安装配置方法,文中通过实例代码以及图文介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • node.js中的console.time方法使用说明

    node.js中的console.time方法使用说明

    这篇文章主要介绍了node.js中的console.time方法使用说明,本文介绍了console.time的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js之readline模块的使用详解

    Node.js之readline模块的使用详解

    这篇文章主要介绍了Node.js之readline模块的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • node如何实现简单的脚手架浅析

    node如何实现简单的脚手架浅析

    在工作中,需要开发一个脚手架,用于给相关用户提供相关的开发便利性,下面这篇文章主要给大家介绍了关于node如何实现简单的脚手架的相关资料,需要的朋友可以参考下
    2022-05-05
  • 快速掌握Node.js环境的安装与运行方法

    快速掌握Node.js环境的安装与运行方法

    这篇文章主要介绍了Node.js环境的安装与运行方法,Node是基于Google Chrome V8引擎的JavaScript解释器,需要的朋友可以参考下
    2016-02-02

最新评论