| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/perl
- #
- # benchmark-cpu.pl: benchmark CPU optimizations of mpg123
- #
- # initially written by Nicholas J Humfrey <[email protected]>, placed in the public domain
- #
- use strict;
- #use Time::HiRes qw/time/;
- my $MPG123_CMD = shift @ARGV;
- my @TEST_FILES = @ARGV;
- die "Please specify full path to mpg123 >= 1.7.0 and a test MP3 file to decode" if (scalar(@ARGV) < 1);
- die "mpg123 command does not exist" unless (-e $MPG123_CMD);
- die "mpg123 command is not executable" unless (-x $MPG123_CMD);
- for(@TEST_FILES)
- {
- die "test MP3 file does not exist" unless (-e $_);
- }
- # Force unbuffed output on STDOUT
- #$|=1; # why?
- # Check the CPUs available
- my $cpulist = `$MPG123_CMD --test-cpu`;
- chomp( $cpulist );
- die "Failed to get list of available CPU optimizations" unless ($cpulist =~ s/^Supported decoders: //);
- my @cpus = split( / /, $cpulist );
- my @encs = qw(s16 f32);
- printf STDERR ("Found %d CPU optimizations to test...\n\n", scalar(@cpus) );
- print "#mpg123 benchmark (user CPU time in seconds for decoding)\n";
- print "#decoder";
- for(@encs){ print " t_$_/s"; }
- print "\n";
- foreach my $cpu (@cpus)
- {
- print "$cpu";
- foreach my $e (@encs)
- {
- # using user CPU time
- my @start_time = times();
- system($MPG123_CMD, '-q', '--cpu', $cpu, '-e', $e, '-t', @TEST_FILES );
- my @end_time = times();
- # third entry is child user time
- printf(" %4.2f", $end_time[2] - $start_time[2]);
- }
- print("\n");
- }
|