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 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
可恶的ie8提示缺少id未定义
Mar 20 Javascript
一个仿微博登陆邮箱提示框js开发案例
Jul 28 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 Javascript
element-ui中按需引入的实现
Dec 25 Javascript
Postman无法正常返回结果问题解决
Aug 28 Javascript
vue router返回到指定的路由的场景分析
Nov 10 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.MVC的模板标签系统(四)
2006/09/05 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
新浪的图片新闻效果
2007/01/13 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
Node.js事件驱动
2015/06/18 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python多维数组分位数的求取方式
2020/03/03 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
css3新特性的应用示例分析
2022/03/16 HTML / CSS