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 相关文章推荐
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
Feb 03 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
js实现多行文本框统计剩余字数功能
Mar 28 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 Javascript
JSONP 的原理、理解 与 实例分析
May 16 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
浅谈Django REST Framework限速
2017/12/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python tkinter界面居中显示的方法
2018/10/11 Python
举例讲解Python常用模块
2019/03/08 Python
python中使用while循环的实例
2019/08/05 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Python timeit模块原理及使用方法
2020/10/10 Python
最新英语专业学生求职信范文
2013/09/21 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
打架检讨书800字
2014/01/10 职场文书
市三好学生主要事迹
2014/01/28 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python