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 回车事件实现代码
Aug 23 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
Apr 19 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
JavaScript中split与join函数的进阶使用技巧
May 03 Javascript
jQuery事件对象总结
Oct 17 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
vue中$refs的用法及作用详解
Apr 24 Javascript
实现vuex原理的示例
Oct 21 Javascript
vue绑定class的三种方法
Dec 24 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
浅谈node的事件机制
2017/10/09 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
python程序文件扩展名知识点详解
2020/02/27 Python
python爬取youtube视频的示例代码
2021/03/03 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
优秀党员获奖感言
2014/02/18 职场文书
中层干部考核评语
2015/01/04 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js