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 相关文章推荐
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
js单例模式的两种方案
Oct 22 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
Jan 03 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
JS监听滚动和id自动定位滚动
Dec 18 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 Javascript
如何使用vue3打造一个物料库
May 08 Vue.js
我的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版(4)
2006/10/09 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php5.3 注意事项说明
2013/07/01 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
Python探索之自定义实现线程池
2017/10/27 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
详解supervisor使用教程
2017/11/21 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
羽毛球社团活动总结
2014/06/27 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
八一建军节慰问信
2015/02/14 职场文书
2015年化验室工作总结
2015/04/23 职场文书
2019年教师入党申请书
2019/06/27 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server