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 相关文章推荐
JSON 数据格式介绍
Jan 13 Javascript
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
深入分析jquery解析json数据
Dec 09 Javascript
javascript实用方法总结
Feb 06 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
May 19 Javascript
基于slideout.js实现移动端侧边栏滑动特效
Nov 28 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
Vue实现todo应用的示例
Feb 20 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
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
本科应届生求职信
2014/08/05 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
培训计划通知
2015/07/15 职场文书
python某漫画app逆向
2021/03/31 Python