Daniel said:
Hi all,
I happened across this book at the store tonight:
http://www.perfdynamics.com/iBook/ppa_new.html. PDQ is an acronym for
"Pretty Damn Quick" that appears to be used for systems performance
modeling.
It looks interesting. There are Perl and Python bindings, but none for
Ruby.
Anyone need a project?
Regards,
Dan
Well, actually ...
http://rubyforge.org/viewvc/SPQR/?root=cougar
But ...
1. I don't really like the algorithms in PDQ. They're way too limited --
essentially, Gunther makes you code everything in raw Perl except the
"vanilla" open circuit and closed circuit solvers.
2. Gunther's books have a few tidbits none of the others have, but it's
more "here's the formulas, here's a bunch of Perl code, and here's how I
solved problems with it." And they're pretty hard to read relative to
some of the others. His class, on the other hand, is excellent. He's
really the only one outside of a university setting that teaches this
kind of material, at least in the USA.
So ... rather than re-implement PDQ in Ruby -- which I'm sure someone
else will take on -- I decided to switch authors, books *and*
algorithms.
![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Specifically, I've based SPQR (Stuff for Processing
Queuing models in Ruby) on the multi-class open and closed network
solvers with load dependent service centers in _Performance By Design_,
by Daniel A. Menasce, Virgilio A. F. Almeida, and Larry W. Dowdy.
I just posted the Rakefile, the main Ruby code and the RSpec "spec" file
-- I'm attempting to learn behavior-driven design with this code. Right
now, all that's there is the closed network solver and one test case
taken from an earlier book by the same authors. I'm hoping to get the
open network solver running over the weekend. The code isn't very well
documented, but the book has all the gory details anyway. It's badly in
need of refactoring as well; some entities in the algorithm are
"naturally" two-dimensional so the way I factored things doesn't always
make much sense.
So ... I hate to make everyone buy another book, but, well, that's life
when you're a performance engineer.
P.S.: I was originally going to call it "RubyQueues" but I discovered
there's already a "Ruby queue", so I scrambled around for another name.