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 相关文章推荐
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
js获取ajax返回值代码
Apr 30 Javascript
JavaScript实现生成GUID(全局统一标识符)
Sep 05 Javascript
比较常见的javascript中定义函数的区别
Nov 09 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
javascript中的面向对象
Mar 30 Javascript
关于angular js_$watch监控属性和对象详解
Apr 24 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
Nov 06 Javascript
微信小程序实现星级评价效果
Dec 28 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验证码类(分享)
2013/08/06 PHP
php实现的xml操作类
2016/01/15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
快速了解Python相对导入
2018/01/12 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
python如何对实例属性进行类型检查
2018/03/20 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
python实现高斯投影正反算方式
2020/01/17 Python
多个python文件调用logging模块报错误
2020/02/12 Python
如何使用python代码操作git代码
2020/02/29 Python
python如何构建mock接口服务
2021/01/28 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
你对IPv6了解程度
2016/02/09 面试题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
机关党员四风问题个人整改措施
2014/10/26 职场文书
大国崛起日本观后感
2015/06/02 职场文书
法律意见书范文
2015/06/04 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
《自己去吧》教学反思
2016/02/16 职场文书