Skip to content

Instantly share code, notes, and snippets.

@black-black-cat
Forked from JamieMason/duffs_device.js
Last active August 23, 2016 15:06
Show Gist options
  • Save black-black-cat/f49c661f404335eb1e0b78fbe72b7646 to your computer and use it in GitHub Desktop.
Save black-black-cat/f49c661f404335eb1e0b78fbe72b7646 to your computer and use it in GitHub Desktop.
JavaScript Duff's Device 达夫设备
/**
* 1. Original JS Implementation by Jeff Greenberg 2/2001 - http://home.earthlink.net/~kendrasg/info/js_opt/
* 2. (fast duff's device) from an anonymous donor to Jeff Greenberg's site
* 3. (faster duff's defice) by Andrew King 8/2002 for WebSiteOptimization.com
* 4. bug fix (for iterations<8) by Andrew B. King April 12, 2003
*/
function duffsDevice (iterations) {
var testVal = 0,
n = iterations % 8;
if (n > 0) {
do {
testVal++;
}
while (--n); // n must be greater than 0 here
}
n = parseInt(iterations / 8, 10);
if (n > 0) { // if iterations < 8 an infinite loop, added for safety in second printing
do {
testVal++;
testVal++;
testVal++;
testVal++;
testVal++;
testVal++;
testVal++;
testVal++;
}
while (--n); // n must be greater than 0 here also
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment