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 相关文章推荐
innerText 使用示例
Jan 23 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
微信jssdk用法汇总
Jul 16 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
Jul 27 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
vue项目打包之开发环境和部署环境的实现
Apr 23 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
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
文字幻灯片
2006/06/26 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python logging模块的使用总结
2019/07/09 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
网络安全方面的面试题
2015/11/04 面试题
金融专业应届生求职信
2013/11/02 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
打架检讨书500字
2014/01/29 职场文书
小学安全教育材料
2014/02/17 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
js中Object.create实例用法详解
2021/10/05 Javascript