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 相关文章推荐
定时器(setTimeout/setInterval)调用带参函数失效解决方法
Mar 26 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
Aug 08 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
基于openlayers4实现点的扩散效果
Aug 17 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
JS实现简单日历特效
Jan 03 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
Javascript中replace()小结
2015/09/30 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
Ruby如何定义一个类
2012/10/08 面试题
法学毕业生自荐信
2013/11/13 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书