After running several benchmark tests, I find that the PHP nl2br() is slower than using str_replace() to convert line breaks to HTML tags. This is faster:
str_replace("\n", "<br>", $string)
… which accomplishes the same thing (on non-Windows based servers) as this:
nl2br($string)
Results
nl2br($string) versus str_replace("\n", "<br>", $string)
The average execution times for running 1000 times (in nanoseconds):
Average execution time for test_nl2br(): 33,319,351 ns Average execution time for test_str_replace(): 18,904,943 ns
The average execution times for running 10000 times (in nanoseconds):
Average execution time for test_nl2br(): 300,697,963 ns Average execution time for test_str_replace(): 185,211,066 ns
Details
I tested it on a 4kb plain text file. The test iterates 1000 times over each function. I repeated this test at least 8 times. Each time, I alternated which function ran first. I took the average of the 8 tests. Then I repeated the same 8 tests but with 10000 iterations each.
This was using PHP version 7.4.11. To run this benchmark test, I used my benchmarking template and the following functions:
function test_nl2br(){
$file = dirname(__FILE__) . '/test_files/intro.txt';
$fh = fopen($file, "r");
$string = fread($fh, filesize($file));
fclose($fh);
return nl2br($string);
}
function test_str_replace(){
$file = dirname(__FILE__) . '/test_files/intro.txt';
$fh = fopen($file, "r");
$string = fread($fh, filesize($file));
fclose($fh);
return str_replace("\n", "<br>", $string);
}
Questions and Comments are Welcome