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 相关文章推荐
json简单介绍
Jun 10 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
JS获取地址栏参数的两种方法(简单实用)
Jun 14 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
JavaScript实现的九种排序算法
Mar 04 Javascript
Javascript执行流程细节原理解析
May 14 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 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
UCenter 批量添加用户的php代码
2012/07/17 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
python实现kMeans算法
2017/12/21 Python
Python面向对象之继承代码详解
2018/01/29 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python之修改图片像素值的方法
2019/07/03 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
索桥的故事教学反思
2014/02/06 职场文书
生产部岗位职责范文
2014/02/07 职场文书
材料加工工程求职信
2014/02/19 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
php实例化对象的实例方法
2021/11/17 PHP
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫