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 相关文章推荐
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
JS实现自动切换文字的导航效果代码
Aug 27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
Angular2中如何使用ngx-translate进行国际化
May 21 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
简述JS控制台的使用
Jul 15 Javascript
在vue项目中引用Iview的方法
Sep 14 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 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
PHP文本数据库的搜索方法
2006/10/09 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
在Python下尝试多线程编程
2015/04/28 Python
基于python实现微信模板消息
2015/12/21 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
python 自动重连wifi windows的方法
2018/12/18 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python实现图片插入文字
2019/11/26 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
新大陆软件面试题
2016/11/24 面试题
战友聚会邀请函
2014/01/18 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
上诉答辩状范文
2015/05/22 职场文书
费城故事观后感
2015/06/10 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang