#!/usr/bin/perl # Copyright (C) 2001-2007, Parrot Foundation. =head1 NAME examples/mops/mops.c - Calculate M ops/s =head1 SYNOPSIS % perl examples/mops/mops.pl =head1 DESCRIPTION A Perl implementation of the F<examples/mops/mops.pasm> example program, for speed comparisons. Calculates a value for M ops/s (million operations per second) using integer arithmetic. Prints out: =over 4 =item * the number of look iterations, =item * the estimated number of ops performed, =item * the elapsed time, and =item * the number of M op/s. =back =cut use strict; use warnings; use vars qw( $I1 $I2 $I3 $I4 $I5 $N1 $N2 $N5 ); sub time_hires { return time() } $I2 = 0; # set I2, 0 $I3 = 1; # set I3, 1 $I4 = 100000000; # set I4, 100000000 # print "Iterations: $I4\n"; # print "Iterations: " # print I4 # print "\n" # $I1 = 2; # set I1, 2 $I5 = $I4 * $I1; # mul I5, I4, I1 # print "Estimated ops: $I5\n"; # print "Estimated ops: " # print I5 # print "\n" # $N1 = time_hires(); # time N1 # REDO: # REDO: $I4 = $I4 - $I3; # sub I4, I4, I3 goto REDO if $I4; # if I4, REDO # DONE: # DONE: $N5 = time_hires(); # time N5 # $N2 = $N5 - $N1; # sub N2, N5, N1 # print "Elapsed time: $N2\n"; # print "Elapsed time: " # print N2 # print "\n" # $N1 = $I5; # iton N1, I5 $N1 = $N1 / $N2; # div N1, N1, N2 $N2 = 1000000.0; # set N2, 1000000.0 $N1 = $N1 / $N2; # div N1, N1, N2 # print "M op/s: $N1\n"; # print "M op/s: " # print N1 # print "\n" # exit(0); # end =head1 SEE ALSO F<examples/benchmarks/mops.pasm>, F<examples/mops/mops.c>, F<examples/mops/mops.cs>, F<examples/mops/mops.il>, F<examples/mops/mops.p6>, F<examples/mops/mops.ps>, F<examples/mops/mops.py>, F<examples/mops/mops.rb>, F<examples/mops/mops.scheme>. =cut # Local Variables: # mode: cperl # cperl-indent-level: 4 # fill-column: 100 # End: # vim: expandtab shiftwidth=4: