[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Ruby vs. PHP

Isaac Gouy

10/7/2007 7:18:00 PM


--- "M. Edward (Ed) Borasky" <znmeb@cesmail.net> wrote:

> If there are things I should throw out, let me know and I'll re-run
> the plots.

hello

The more interesting approach would be how can we fix the other failing
programs so you don't need to throw stuff out - is it that hard to fix
fannkuch, nsieve-bits, recursive and reverse-complement for Ruby Core?





____________________________________________________________________________________
Yahoo! oneSearch: Finally, mobile search
that gives answers, not web links.
http://mobile.yahoo.com/mobileweb/onesearch?re...

1 Answer

M. Edward (Ed) Borasky

10/7/2007 7:59:00 PM

0

Isaac Gouy wrote:
> --- "M. Edward (Ed) Borasky" <znmeb@cesmail.net> wrote:
>
>> If there are things I should throw out, let me know and I'll re-run
>> the plots.
>
> hello
>
> The more interesting approach would be how can we fix the other failing
> programs so you don't need to throw stuff out - is it that hard to fix
> fannkuch, nsieve-bits, recursive and reverse-complement for Ruby Core?

I haven't looked at them. My focus until mid-November or thereabouts is
stuff that already runs on Ruby 1.8.6-p110. :)

I also threw out some things that didn't run on PHP, etc. -- it's not
just Ruby Core.

Just for the sake of amusement, here's the complete R code that reads
your "ndata.csv" file and makes all the numbers and pictures. It runs
with R-2.6.0, but it might work with older versions. "reshape" and
"Hmisc" are contributed library packages that don't come with the base
R, but can be obtained once you've installed R by doing (as "root" on a
Unix system):

# R
> install.packages(c("reshape","Hmisc"))

It will ask you for a CRAN mirror. If you've installed the "rsruby" gem,
you can do all this from a Ruby program, or maybe even from "irb".

And yes, all of this magic will work on your Gentoo systems, since it
works on *my* Gentoo systems. :)


rm(list=ls()) # clean memory is happy memory
library(reshape) # load the reshaping library
library(Hmisc) # utilities
ndata <- subset(read.csv("ndata.csv"), # get raw data
select=c("test", "iter", "lang", "secs"), secs>0)
ndm <- melt(ndata, id.var=c("test", "iter", "lang")) # melt the dataset
pivot <- cast(ndm, test + iter ~ lang, sum) # create the base pivot table
# column 1 now has the benchmark test name and column 2 has the iteration count
# the rest of the columns have the benchmark times for each language

dynamic <- na.omit(subset(pivot, select=
c("test", "iter", "gcc", "yarv", "python", "perl", "php", "ruby", "jruby")))
n <- ncol(dynamic) # column count
ratio <- dynamic # copy the input to preserve shape
ratio[3:n] <- ratio[3:n]/dynamic$gcc # ratio with gcc = 1
ln.ratio <- ratio # natural log of ratio
ln.ratio[3:n] <- log(ratio[3:n])

# now compute geometric means over all benchmarks for the languages
geomeans <- exp(colMeans(ln.ratio[,3:n], na.rm=TRUE))
m <- nrow(ratio)

# make plot
pdf(width=10, height=7.5, file="shootout.pdf")
ratio.boxplot <- boxplot(ratio[3:n], outline=FALSE, ylim=c(0, 500))
graphics.off()

pdf(width=10, height=7.5, file="ln-shootout.pdf")
ln.ratio.boxplot <- boxplot(ln.ratio[3:n]/log(10), ylab="Log(10) Ratio")
graphics.off()

ratio.boxplot$stats <- rbind(ratio.boxplot$stats, geomeans)
rownames(ratio.boxplot$stats) <- c("Low", "Q1", "Median", "Q3", "High", "GeoMean")
colnames(ratio.boxplot$stats) <- colnames(ratio)[3:n]

signif(ratio.boxplot$stats, 2)