Node.jsとPHP、Pythonの文字処理性能比較テストコードと結果をまとめ

1.テストケース

関数やクラスに分け大きな文字列を1つずつ読み取る

2.テストコード

2.1 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);
2.2 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";
?>
2.3 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)

3.テスト結果:
言語    関数  クラス
Node.js  0.022s  0.026s
PHP    0.35s  1.02s
Python  0.58s  1.50s

 

Development

Posted by arkgame