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 相关文章推荐
JavaScript 参考教程
Dec 29 Javascript
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
文本框水印提示效果的简单实现代码
Feb 22 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
jQuery中prepend()方法使用详解
Aug 11 Javascript
js中不同的height, top的区别对比
Sep 24 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
使用JS模拟锚点跳转的实例
Feb 01 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 Javascript
JS数组的常用方法整理
Mar 31 Javascript
详解TS数字分隔符和更严格的类属性检查
May 06 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 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
python矩阵转换为一维数组的实例
2018/06/05 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python查看列的唯一值方法
2018/07/17 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
python tornado使用流生成图片的例子
2019/11/18 Python
使用python+whoosh实现全文检索
2019/12/09 Python
python批量修改xml属性的实现方式
2020/03/05 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
python中adb有什么功能
2020/06/07 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
励志演讲稿500字
2014/08/21 职场文书
工作经历证明书范文
2014/11/02 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏