Node.js与PHP、Python的字符处理性能对比


Posted in Javascript onJuly 06, 2014

测试用例分为用函数和类来进行一个大字符串的字符逐一读取。

测试代码

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
Javascript 相关文章推荐
基于jQuery的实现简单的分页控件
Oct 10 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
文档对象模型DOM通俗讲解
Nov 01 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
zTree获取当前节点的下一级子节点数实例
Sep 05 Javascript
小程序实现列表删除功能
Oct 30 Javascript
vue中格式化时间过滤器代码实例
Apr 17 Javascript
微信小程序如何获取地址
Dec 24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 #Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
Jul 06 #Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 #Javascript
我的Node.js学习之路(一)
Jul 06 #Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 #Javascript
jQuery打印指定区域Html页面并自动分页
Jul 04 #Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 #Javascript
You might like
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python函数学习笔记
2008/10/07 Python
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python单例模式实例分析
2015/01/14 Python
Python解析最简单的验证码
2016/01/07 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python实现控制COM口的示例
2019/07/03 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
浅谈django channels 路由误导
2020/05/28 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
初中生学习的自我评价
2013/11/14 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
减负增效提质方案
2014/05/23 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
授权委托书
2015/01/28 职场文书
品质保证书格式
2015/02/28 职场文书
php中pcntl_fork详解
2021/04/01 PHP
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers