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 相关文章推荐
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
javascript的函数作用域
Nov 12 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 Javascript
详解ES6中的let命令
Apr 05 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 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水印
2007/03/16 PHP
实用函数7
2007/11/08 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
js使用递归解析xml
2014/12/12 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
文明学生标兵事迹
2014/01/21 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
文明班级建设方案
2014/05/15 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
模具专业求职信
2014/06/26 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
党员个人总结自评
2015/02/14 职场文书
市场督导岗位职责
2015/04/10 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电