Yes. 5% gets lost in the noise... and so you're down to 95% performance... but 5% of that is really noise, so now you're at 90.25%... etc... until you now have.0000010713372795471389294912528763542% of the performance of your machine that actually matters. Does that make sense? Not really. Your "5%" bound is completely arbitrary.
MSAS is just rebranded GIANT, a product good enough to get away with selling its antispyware software and support to customers around the world. It was one of the best--maybe the best--and now it's MSAS.
I took a look at the Giant Antispyware Product after it had been rebranded by Microsoft the other week. I used a clean VMware installation of a completely unpatched windows XP pro, and set about to find as much spyware as I could.
After installing several dozen spyware products, I tested Microsoft Antispyware Beta 1 against Adaware and Spybot. It came in first, removing nearly twice as much crud as its nearest competitor, Adaware.
I have to say, if Microsoft Antispyware can find and remove the 53 different spyware products that I installed, it's pretty good. I no longer use Spybot or Adaware, because this upstart (rebranded?!) beta has bested both of them. (more on the blog...)
The way I always test my "testable" software is to run automated scripted tests. A lot of programs (especially on Unux/Linux) can be reduced to inputs and outputs, making it easy to write testcases for any of the cornercases of your software, and automatically compare the results against precomputed, known correct results. If you build up a library of testcases, running them all against the current build is a great way to assure that new code hasn't broken, or that you've fixed a bug.
Of course, the quality of this depends on the coverage of the testcases. You should test a "reasonable" number of standard inputs to the program, and all of the boundary cases. For example, if you write a program to compute the absolute value of an integer, your testsuite should try passing incorrect types, negative numbers, positive numbers, +/- NaN, 0, and perhaps real numbers. A language with exceptions makes it easy to tell when something fails correctly...
So, I recommend breaking the "test matrix" idea down scriptably. Just write a meta-script to run or load your test modules, and then it's simple to run the testcases as a batch!
I just bought a motorola cellphone, on a cingular plan, apparently contributing to Nokia's 4% global market decline. As a consumer, why didn't I buy a Nokia? Too many models, too much variety, and too many gizmos!
The Nokia line of cellphones is a virtual menagerie. While Motorola incrementally builds better and better cellphones along a few number of lines, the endless proliferation of Nokia phones doesn't help consumers choose them. Instead, we get annoyed, confused, or tired or the variety, and choose a simpler, solid phone. Why should I have to choose between Nokia phone A with this and that thing, and Nokia phone B with two other cool things? I'm not interested in hip gadgets, I just want a solid featureset.
To elaborate, pirates were activating their windows XP boxes to install sp1--quite easily. They would simply change the product key to one produced by a keygen, reactivate, and download. Since the keyspace is large, pirates can generate a number of valid keys rather quickly, and just try one until it works.....
1) Generate keys 2) Enter a new key into the registry 3) Try to reactivate 4) If 3 succeeded--install sp1, otherwise try again...
A programmer had been missing from work for over a week when finally someone noticed and called the cops. They went round to his flat and broke down the door. They found him dead in the still running shower with an empty bottle of shampoo next to his body. Apparently he'd been washing his hair.
I seem to recall the bubble sort (mentioned earlier) was actually faster than a qsort under some circumstances.
Bubble sort is an O(n^2) algorithm, and quicksort is an O(n log n) algorithm. Given that quicksort will have a larger constant time factor, we can compare something like f(n) = 6n^2 to f(n) = 32 n log n, and find that for arrays of 14.12 elements, bubble sort will actually be faster.
So, the use of "inefficient" algorithms needs to be taken with a grain of salt depending on the context in which you are using those algorithms. If you need to sort short short lists, bubblesort will work just fine!
Remember the dynamic storage paper, which postulated that common web protocols could be used to encode small, transitory amounts of data? With this sort of bandwidth, it's possible that you could drastically parallelize the data storage--and since your latency is very very low, that data could be "refreshed" and held for longer periods or time. How practical do you think that would be?
Yes. 5% gets lost in the noise... and so you're down to 95% performance... but 5% of that is really noise, so now you're at 90.25% ... etc ... until you now have .0000010713372795471389294912528763542% of the performance of your machine that actually matters. Does that make sense? Not really. Your "5%" bound is completely arbitrary.
I have a zip archive of the original page here: http://elliottback.com/wp/?p=533
MSAS is just rebranded GIANT, a product good enough to get away with selling its antispyware software and support to customers around the world. It was one of the best--maybe the best--and now it's MSAS.
I took a look at the Giant Antispyware Product after it had been rebranded by Microsoft the other week. I used a clean VMware installation of a completely unpatched windows XP pro, and set about to find as much spyware as I could.
After installing several dozen spyware products, I tested Microsoft Antispyware Beta 1 against Adaware and Spybot. It came in first, removing nearly twice as much crud as its nearest competitor, Adaware.
I have to say, if Microsoft Antispyware can find and remove the 53 different spyware products that I installed, it's pretty good. I no longer use Spybot or Adaware, because this upstart (rebranded?!) beta has bested both of them. (more on the blog...)
Firefox crashed for me. See this image of the firefox crash.
The way I always test my "testable" software is to run automated scripted tests. A lot of programs (especially on Unux/Linux) can be reduced to inputs and outputs, making it easy to write testcases for any of the cornercases of your software, and automatically compare the results against precomputed, known correct results. If you build up a library of testcases, running them all against the current build is a great way to assure that new code hasn't broken, or that you've fixed a bug.
Of course, the quality of this depends on the coverage of the testcases. You should test a "reasonable" number of standard inputs to the program, and all of the boundary cases. For example, if you write a program to compute the absolute value of an integer, your testsuite should try passing incorrect types, negative numbers, positive numbers, +/- NaN, 0, and perhaps real numbers. A language with exceptions makes it easy to tell when something fails correctly...
So, I recommend breaking the "test matrix" idea down scriptably. Just write a meta-script to run or load your test modules, and then it's simple to run the testcases as a batch!
For those who can't be bothered to login, or the overly paranoid:
http://www.iht.com/articles/531960.html
A (mirror?) story from the International Herald Tribune.....
Just wondering, how does a lab like Sandia keep track of each and every floppy? I'd think that researchers would tend to use a lot of them...
I just bought a motorola cellphone, on a cingular plan, apparently contributing to Nokia's 4% global market decline. As a consumer, why didn't I buy a Nokia? Too many models, too much variety, and too many gizmos!
The Nokia line of cellphones is a virtual menagerie. While Motorola incrementally builds better and better cellphones along a few number of lines, the endless proliferation of Nokia phones doesn't help consumers choose them. Instead, we get annoyed, confused, or tired or the variety, and choose a simpler, solid phone. Why should I have to choose between Nokia phone A with this and that thing, and Nokia phone B with two other cool things? I'm not interested in hip gadgets, I just want a solid featureset.
To elaborate, pirates were activating their windows XP boxes to install sp1--quite easily. They would simply change the product key to one produced by a keygen, reactivate, and download. Since the keyspace is large, pirates can generate a number of valid keys rather quickly, and just try one until it works.....
1) Generate keys
2) Enter a new key into the registry
3) Try to reactivate
4) If 3 succeeded--install sp1, otherwise try again...
Here's the google thread on this.....
A programmer had been missing from work for over a week when finally someone noticed and called the cops. They went round to his flat and broke down the door. They found him dead in the still running shower with an empty bottle of shampoo next to his body. Apparently he'd been washing his hair.
The instructions on the bottle said:
1. Wet hair
2. Apply shampoo
3. Lather
4. Rinse
5. Repeat
Most compilers will actually reduce sets of if statements to a hardcoded jump table, which is going to be as fast as rewriting it. See http://www.codeguru.com/Cpp/Cpp/cpp_mfc/comments.p hp/c4007/?thread=48816 for more information. However, the clarity of the single test is indisputable....
So, the use of "inefficient" algorithms needs to be taken with a grain of salt depending on the context in which you are using those algorithms. If you need to sort short short lists, bubblesort will work just fine!
Remember the dynamic storage paper, which postulated that common web protocols could be used to encode small, transitory amounts of data? With this sort of bandwidth, it's possible that you could drastically parallelize the data storage--and since your latency is very very low, that data could be "refreshed" and held for longer periods or time. How practical do you think that would be?