An alternative approach to reading the first character of a string:
$char = chr ord $string;
This is mainly of curiosity value since it would be better in terms of legibility and maintenance to use one of the more standard methods shown below. In particular substr.
Interestingly, albeit moderately, this appears to be faster than some of the other methods.
#!/usr/bin/perl -w use strict; use Benchmark 'cmpthese'; my $str = "some string here"; cmpthese( 500000, { 'pop_chord' => sub { pop_chord($str) }, '_substr' => sub { _substr($str) }, '_unpack' => sub { _unpack($str) }, '_match' => sub { _match($str) }, } ); sub pop_chord { chr ord pop } sub _substr { substr pop,0,1 } sub _unpack { unpack"a",pop } sub _match { (pop=~/(.)/s)[0] } __END__ Benchmark: timing 500000 iterations of _match, _substr, _unpack, pop_chord _match: 3 secs (3.22 usr + 0.01 sys = 3.23 CPU) @ 154798.76/s _substr: 0 secs (0.85 usr + 0.00 sys = 0.85 CPU) @ 588235.29/s _unpack: 2 secs (2.04 usr + 0.00 sys = 2.04 CPU) @ 245098.04/s pop_chord: 1 secs (0.73 usr + 0.00 sys = 0.73 CPU) @ 684931.51/s Rate _match _unpack _substr pop_chord _match 154799/s -- -37% -74% -77% _unpack 245098/s 58% -- -58% -64% _substr 588235/s 280% 140% -- -14% pop_chord 684932/s 342% 179% 16% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Read the first character of a string
by blakem (Monsignor) on Feb 24, 2003 at 00:06 UTC |