Node.js與PHP、Python的字符處理性能對(duì)比
測(cè)試用例分為用函數(shù)和類(lèi)來(lái)進(jìn)行一個(gè)大字符串的字符逐一讀取。
測(cè)試代碼
Node.js
函數(shù)
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);
類(lèi)
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
函數(shù)
<?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"; ?>
類(lèi)
<?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
函數(shù)
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
類(lèi)
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 文件內(nèi)容為一個(gè)長(zhǎng)度為 的文本。
測(cè)試結(jié)果
語(yǔ)言 函數(shù) 類(lèi) Node.js 0.022s 0.026s PHP 0.35s 1.02s Python 0.58s 1.50s
相關(guān)文章
在Node.js中發(fā)出HTTP請(qǐng)求的 5 種方法
學(xué)習(xí)如何在 Node.js 中發(fā)出 HTTP 請(qǐng)求可能會(huì)讓人感到不知所措,因?yàn)橛袛?shù)十個(gè)可用的庫(kù),每個(gè)解決方案都聲稱(chēng)比上一個(gè)更高效,在這篇文章中,我們將探討在 Node.js 中發(fā)出 HTTP 請(qǐng)求的五種最流行的方法,并為每種方法提供說(shuō)明,需要的朋友可以參考下2023-11-11node實(shí)現(xiàn)封裝一個(gè)圖片拼接插件
這篇文章主要介紹了node實(shí)現(xiàn)封裝一個(gè)圖片拼接插件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08node.js express安裝及示例網(wǎng)站搭建方法(分享)
下面小編就為大家?guī)?lái)一篇node.js express安裝及示例網(wǎng)站搭建方法(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08推薦 21 款優(yōu)秀的高性能 Node.js 開(kāi)發(fā)框架
Node.js是JavaScript中最為流行的框架之一,易于創(chuàng)建可擴(kuò)展的Web應(yīng)用。Node.js包含不同類(lèi)型框架,包括MVC, full-stack,REST API以及Generators。借助這些框架使Node.js更加易于使用,它還支持眾多特性功能,只需幾個(gè)步驟就可快速搭建強(qiáng)大的Web應(yīng)用。本文為大家推薦21款2014-08-08Node.js調(diào)用fs.renameSync報(bào)錯(cuò)(Error: EXDEV, cross-device link not
這篇文章主要介紹了Node.js調(diào)用fs.renameSync報(bào)錯(cuò)(Error: EXDEV, cross-device link not permitted),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-12-12Node.js通過(guò)身份證號(hào)驗(yàn)證年齡、出生日期與性別方法示例
最近工作中需要對(duì)身份證號(hào)的年齡、出生日期與性別進(jìn)行驗(yàn)證,所以這篇文章主要介紹了Node.js通過(guò)身份證號(hào)驗(yàn)證年齡、出生日期與性別的方法,在介紹完node.js的實(shí)現(xiàn)方法后又給大家分類(lèi)的利用JS實(shí)現(xiàn)的方法,需要的朋友可以參考下。2017-03-03node.js使用cluster實(shí)現(xiàn)多進(jìn)程
本文給大家詳細(xì)介紹了nodejs使用cluster模塊實(shí)現(xiàn)多進(jìn)程的方法和步奏,非常的細(xì)致全面,有需要的小伙伴可以參考下2016-03-03服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例
這篇文章主要為大家介紹了服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Node.js和Vue的安裝與配置超詳細(xì)步驟(推薦)
使用VUE前端框架開(kāi)發(fā),需要安裝Node.js和Vue.js,這篇文章主要給大家介紹了關(guān)于Node.js和Vue的安裝與配置超詳細(xì)步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01