Let me begin by a philosophical rant. There is a motto from scientific
computing that carries to many areas of computer science:
/The gains made by better algorithms almost always outstrip the gains from
better hardware./
I've frequently seen where algorithm improvements pay by factors of tens to
tens of thousands in CPU time. One change I made in a numerical algorithm
improved CPU requirements by a factor of 50,000: from weeks on a
super-computer to minutes on a workstation.
Any business-savvy engineer knows that algorithm improvements come at a
price: the engineer's time. Striking that balance makes software systems move
forward rather than staggering to a halt in bloat and dysfunction. It also
helps to use people who actually know what they are doing: knowing how to
... (more)
Let me begin with a philosophical rant. There is a motto from scientific
computing that carries over to many areas of computer science:
The gains made by better algorithms almost always outstrip the gains from
better hardware.
I've frequently seen where algorithm improvements pay by factors of ten to
tens of thousands in CPU time. One change I made in a numerical algorithm
improved CPU r... (more)
There are many good resources on using events and implementing event
listeners. Unfortunately, there are nearly as many resources that incorrectly
or inefficiently implement event generators. These implementations introduce
subtle nondeterministic errors, execute slowly, and/or fill the virtual
machine with unnecessary garbage. The goal of this article is to address this
problem once and... (more)
The Beanshell preprocessor, or BPP for short, is intended to be a convenient
and powerful preprocessing tool for Java developers. It's convenient because
the preprocessor is based on Beanshell, which is essentially interpreted
Java. This means that Java or Beanshell programmers can quickly use all of
BPP's features. It's powerful for the same reasons: all the power of the Java
SDK with t... (more)