Skip to content

Instantly share code, notes, and snippets.

@dhilip89
Forked from JamieMason/duffs_device.js
Created May 2, 2018 01:47
Show Gist options
  • Save dhilip89/dcec40fd1e7920f73e615327c3acfd23 to your computer and use it in GitHub Desktop.
Save dhilip89/dcec40fd1e7920f73e615327c3acfd23 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