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 使用手册(一)
Sep 23 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 Javascript
AngularJs学习第八篇 过滤器filter创建
Jun 08 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
简单谈谈ES6的六个小特性
Nov 18 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
js实现动态改变radio状态的方法
Feb 28 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 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
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
python实现定时播放mp3
2015/03/29 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
python爬取内容存入Excel实例
2019/02/20 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
德国旅游网站:weg.de
2018/06/03 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
公司请假条范文
2014/04/11 职场文书
说明书范文
2014/05/07 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
2014年关工委工作总结
2014/11/17 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js