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 相关文章推荐
广告显示判断
Aug 31 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 Javascript
Vue使用mixin分发组件的可复用功能
Sep 01 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
用js实现放大镜效果
2020/10/28 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Python yield 使用浅析
2015/05/28 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
python 读取二进制 显示图片案例
2020/04/24 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
C++程序员求职信范文
2014/04/14 职场文书
小班下学期评语
2014/05/04 职场文书
职工小家建设活动方案
2014/08/25 职场文书
大学学生会辞职信
2015/05/13 职场文书
安全教育的主题班会
2015/08/13 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS