+++ /dev/null
-#!/usr/bin/perl -I. -w
-
-BEGIN {
- if ($ENV{HARNESS_ACTIVE}) {
- print "1..0 # Skipped: not a standard regression test\n";
- exit;
- }
- unless (eval { require Benchmark; }) {
- print "1..0 # Skipped: this test requires Benchmark.pm\n";
- exit;
- }
-}
-
-#From: dnsparks@juno.com
-#Subject: Text::Wrap suggestions
-#To: muir@idiom.com
-#Date: Sat, 10 Feb 2001 21:50:29 -0500
-#
-#David,
-#
-#I had a "word wrapping" problem to solve at work the other week.
-#Text::Wrap would have done exactly what I needed, but at work we use
-#Smalltalk. :-) (I ended up thinking about it at home, where I don't have
-#Smalltalk, so I first coded it in Perl and then "translated" my solution
-#at work.)
-#
-#I must admit that I was dealing with a specialized case; I didn't want to
-#prepend any strings on the first or subsequent lines of the paragraph
-#begin created. In other words, had we been using Perl at work, I would
-#have done something like this:
-#
-# use Text::Wrap qw(wrap $columns);
-# # ... set $columns, $string, etc. ...
-# return wrap("", "", $string);
-#
-#By the way, the copy of Wrap.pm came with the IndigoPerl distribution I
-#recently downloaded. This is the version string: $VERSION = 98.112902; I
-#don't know if that's the most recent.
-#
-#When I had some time, I was curious to see how my solution compared to
-#using your module. So, I threw together the following script:
-#
-#The interesting thing, which really surprised me, was that the results
-#seemed to indicate that my version ran faster. I was surprised because
-#I'm used to thinking that the standard Perl modules would always present
-#a better solution than "reinventing the wheel".
-#
-# mine: 24 wallclock secs (18.49 usr + 0.00 sys = 18.49 CPU) @ 54.09/s
-#(n=1000)
-# module: 58 wallclock secs (56.44 usr + 0.02 sys = 56.46 CPU) @ 17.71/s
-#(n=1000)
-#
-#Then, it occurred to me that the diffrence may be attributable to my
-#using substr() vs. the module relying on s///. (I recall reading
-#something on perlmonks.org a while back that indicated that substr() is
-#often faster than s///.)
-#
-#I realize that my solution has its problems (doesn't include ability to
-#specify first/subsequent line prefixes, and the possibility that it may
-#recurse itself out of memory, given a big enough input string). But I
-#though you might be interested in my findings.
-#
-#Dan
-#(perlmonks.org nick: t'mo)
-
-
-use strict;
-use Text::Wrap qw(wrap $columns);
-use Benchmark;
-
-my $testString = 'a;kjdf;ldsjf afkjad;fkjafkjafkj; dsfljasdfkjasfj;dThis
-is a test. It is only a test. Do not be alarmed, as the test should only
-take several seconds to run. Yadda yadda yadda...a;kjdf;ldsjf
-afkjad;fkjafkjafkj; dsfljasdfkjasfj;dThis is a test. It is only a test.
-Do not be alarmed, as the test should only take several seconds to run.
-Yadda yadda yadda...a;kjdf;ldsjf afkjad;fkjafkjafkj;
-dsfljasdfkjasfj;dThis is a test. It is only a test. Do not be alarmed, as
-the test should only take several seconds to run. Yadda yadda
-yadda...a;kjdf;ldsjf afkjad;fkjafkjafkj; dsfljasdfkjasfj;dThis is a test.
-It is only a test. Do not be alarmed, as the test should only take
-several seconds to run. Yadda yadda yadda...' x 5;
-
-$columns = 55;
-
-sub prefix {
- my $length = shift;
- my $string = shift;
-
- return "" if( ! $string );
-
- return prefix($length, substr($string, 1))
- if( $string =~ /^\s/ );
-
- if( length $string <= $length ) {
- chop($string) while( $string =~ /\s$/ );
- return $string . "\n";
- }
-
- my $pre = substr($string, 0, $length);
- my $post = substr($string, $length);
-
- if( $pre =~ /\s$/ ) {
- chop($pre) while( $pre =~ /\s$/ );
- return $pre . "\n" . prefix($length, $post);
- }
- else {
- if( $post =~ /^\s/ ) {
- return $pre . "\n" . prefix($length, $post);
- }
- else {
- if( $pre !~ /\s/ ) {
- return $pre . "\n" . prefix($length, $post);
- }
- else {
- $pre =~ /(.*)\s+([^\s]*)/;
- $post = $2 . $post;
- return $1 . "\n" . prefix($length, $post);
- }
- }
- }
-}
-
-my $x = prefix($columns, $testString);
-my $y = wrap("", "", $testString);
-
-unless ($x ne $y) {
- print "1..0 # Skipped: dnspark's module doesn't give the same answer\n";
- exit;
-}
-
-my $cnt = -T STDOUT ? 200 : 40;
-my $results = timethese($cnt, {
- mine => sub { my $res = prefix($columns, $testString) },
- module => sub { my $res = wrap("", "", $testString) },
-});
-
-if ($results->{module}[1] < $results->{mine}[1]) {
- print "1..1\nok 1\n";
-} else {
- print "1..0 # Skipped: Dan's implmentation is faster\n";
-}
-
-