Because the Node. js version of the Fl engine is considered in the future, the character processing performance of Node. js and PHP is compared. I found that Node. js really dumped several streets in PHP and tested Python again, which is slower than PHP. Test Cases are divided into functions and classes for reading a large string of characters one by one.
Test code
Node. js
Function
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);
Class
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
Function
<?phpfunction 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";?>
Class
<?phpclass 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
Function
import codecsimport timedef chars(content): length = len(content) pos = 0 while(pos < length): char = content[pos] pos = pos + 1f = codecs.open('page.html', encoding='utf-8')content = f.read()start = time.time()chars(content)end = time.time();print end - start
Class
import codecsimport timeclass 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 + 1f = codecs.open('page.html', encoding='utf-8')content = f.read()start = time.time()instance = Chars(content)instance.run()end = time.time();print (end - start)
The content of the page.html file is a text with a length.
Test Results
Language function class Node. js 0.022 s 0.026 sPHP 0.35 s 1.02 sPython 0.58 s 1.50 s