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的IE和Firefox兼容性汇编
Jul 01 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
vue之数据交互实例代码
Jun 20 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
Vue仿支付宝支付功能
May 25 Javascript
vue-cli项目配置多环境的详细操作过程
Oct 30 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
Nov 12 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
vue-router为激活的路由设置样式操作
Jul 18 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 存储文本换行实现方法
2010/01/05 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python将unicode转为str的方法
2017/06/21 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
教师国庆节演讲稿范文2014
2014/09/21 职场文书
项目转让协议书
2014/10/27 职场文书
土地租赁协议书
2015/01/29 职场文书
警告通知
2015/04/25 职场文书
校长新学期寄语2016
2015/12/04 职场文书