Blame bench/layers.pl

Packit aa5309
#! /usr/bin/env perl
Packit aa5309
Packit aa5309
use 5.010;
Packit aa5309
use strict;
Packit aa5309
use warnings;
Packit aa5309
Packit aa5309
use Benchmark 'cmpthese', ':hireswallclock';
Packit aa5309
Packit aa5309
sub read_text {
Packit aa5309
	my ($filename, $layers) = @_;
Packit aa5309
	open my $fh, "<$layers", $filename or die "Can't open $filename:#!";
Packit aa5309
	my $foo = do { local $/; <$fh> };
Packit aa5309
	return;
Packit aa5309
}
Packit aa5309
Packit aa5309
sub read_lines {
Packit aa5309
	my ($filename, $layers) = @_;
Packit aa5309
	open my $fh, "<$layers", $filename or die "Can't open $filename:#!";
Packit aa5309
	my @foo = <$fh>;
Packit aa5309
	return;
Packit aa5309
}
Packit aa5309
Packit aa5309
my $filename = shift // 'test.txt';
Packit aa5309
my $count = shift // 200;
Packit aa5309
my $encoding = shift // 'utf-8';
Packit aa5309
Packit aa5309
say "Read utf8 encoded Unix text file, decode with :encoding\n";
Packit aa5309
cmpthese($count, {
Packit aa5309
	':encoding'        => sub { read_text($filename, ':encoding(utf-8-strict)') },
Packit aa5309
	':encoding:perlio' => sub { read_text($filename, ':encoding(utf-8-strict):perlio') },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "\nRead utf8 encoded Unix text file into lines, decode with :encoding\n";
Packit aa5309
cmpthese($count, {
Packit aa5309
	':encoding'        => sub { read_lines($filename, ':encoding(utf-8-strict)') },
Packit aa5309
	':encoding:perlio' => sub { read_lines($filename, ':encoding(utf-8-strict):perlio') },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "Read utf8 encoded Windows text file, decode with :encoding\n";
Packit aa5309
cmpthese($count, {
Packit aa5309
	'c:e'       => sub { read_text($filename, ":crlf:encoding(utf-8-strict)") },
Packit aa5309
	'c:p:e'     => sub { read_text($filename, ":crlf:perlio:encoding(utf-8-strict)") },
Packit aa5309
	'u:c:e'     => sub { read_text($filename, ":unix:crlf:encoding(utf-8-strict)") },
Packit aa5309
	'u:c:p:e'   => sub { read_text($filename, ":unix:crlf:perlio:encoding(utf-8-strict)") },
Packit aa5309
	'u:c:e:p'   => sub { read_text($filename, ":unix:crlf:encoding(utf-8-strict):perlio") },
Packit aa5309
	'u:c:p:e:p' => sub { read_text($filename, ":unix:crlf:perlio:encoding(utf-8-strict):perlio") },
Packit aa5309
	'c:p:e:p'   => sub { read_text($filename, ":crlf:perlio:encoding(utf-8-strict):perlio") },
Packit aa5309
	'e:c'       => sub { read_text($filename, ":raw:encoding(utf-8-strict):crlf") },
Packit aa5309
	'e:c:p'     => sub { read_text($filename, ":raw:encoding(utf-8-strict):crlf:perlio") },
Packit aa5309
	'e:p:c:p'   => sub { read_text($filename, ":raw:encoding(utf-8-strict):perlio:crlf:perlio") },
Packit aa5309
});
Packit aa5309
Packit aa5309
Packit aa5309
say "\nRead utf8 encoded text file, decode with :utf8_strict\n";
Packit aa5309
cmpthese($count * 10, {
Packit aa5309
	':utf8_strict'             => sub { read_text($filename, ":utf8_strict") },
Packit aa5309
	':unix:utf8_strict'        => sub { read_text($filename, ":unix:utf8_strict") },
Packit aa5309
	':unix:utf8_strict:perlio' => sub { read_text($filename, ":unix:utf8_strict:perlio") },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "\nRead utf8 encoded text file with optional crlf line endings, decode with :utf8_strict\n";
Packit aa5309
cmpthese($count * 10, {
Packit aa5309
	':crlf:utf8_strict'        => sub { read_text($filename, ":crlf:utf8_strict") },
Packit aa5309
	':utf8_strict:crlf'        => sub { read_text($filename, ":utf8_strict:crlf") },
Packit aa5309
	':utf8_strict:crlf:perlio' => sub { read_text($filename, ":utf8_strict:crlf:perlio") },
Packit aa5309
	':utf8_strict:perlio'      => sub { read_text($filename, ":utf8_strict:perlio") },
Packit aa5309
	':utf8_strict'             => sub { read_text($filename, ":utf8_strict") },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "\nRead lines of utf8 encoded text file with optional crlf line endings, decode with :utf8_strict\n";
Packit aa5309
cmpthese($count * 10, {
Packit aa5309
	':crlf:utf8_strict'        => sub { read_lines($filename, ":crlf:utf8_strict") },
Packit aa5309
	':utf8_strict:crlf'        => sub { read_lines($filename, ":utf8_strict:crlf") },
Packit aa5309
	':utf8_strict:crlf:perlio' => sub { read_lines($filename, ":utf8_strict:crlf:perlio") },
Packit aa5309
	':utf8_strict:perlio'      => sub { read_lines($filename, ":utf8_strict:perlio") },
Packit aa5309
	':utf8_strict'             => sub { read_lines($filename, ":utf8_strict") },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "\nRead text file doing crlf translation\n";
Packit aa5309
cmpthese($count * 10, {
Packit aa5309
	':unix:crlf'        => sub { read_text($filename, ":unix:crlf") },
Packit aa5309
	':unix:crlf:perlio' => sub { read_text($filename, ":unix:crlf:perlio") },
Packit aa5309
#	':unix'             => sub { read_text($filename, ":unix") },
Packit aa5309
#	':raw'              => sub { read_text($filename, ":raw") },
Packit aa5309
});
Packit aa5309
Packit aa5309
say "\nRead text file into lines doing crlf translation\n";
Packit aa5309
cmpthese($count * 10, {
Packit aa5309
	':unix:crlf'        => sub { read_lines($filename, ":unix:crlf") },
Packit aa5309
	':unix:crlf:perlio' => sub { read_lines($filename, ":unix:crlf:perlio") },
Packit aa5309
#	':raw'              => sub { read_lines($filename, ":raw") },
Packit aa5309
});