Search results
Results from the WOW.Com Content Network
In the C programming language, Duff's device is a way of manually implementing loop unrolling by interleaving two syntactic constructs of C: the do-while loop and a switch statement. Its discovery is credited to Tom Duff in November 1983, when Duff was working for Lucasfilm and used it to speed up a real-time animation program.
On modern processors, loop unrolling is often counterproductive, as the increased code size can cause more cache misses; cf. Duff's device. [1] The goal of loop unwinding is to increase a program's speed by reducing or eliminating instructions that control the loop, such as pointer arithmetic and "end of loop" tests on each iteration; [2 ...
While working at Lucasfilm, he created Duff's device, a loop unrolling mechanism in C. On August 22, 2006, the United States Patent and Trademark Office issued U.S. patent 7,095,409 to Pixar for a "Shot shading method and apparatus" invented by Tom Duff and Robert L. Cook.
Simon Tatham's contribution, [38] based on Duff's device, is a notable example of the genre, and is the basis for Protothreads and similar implementations. [39] In addition to Duff's objections, [ 24 ] Tatham's own comments provide a frank evaluation of the limitations of this approach: "As far as I know, this is the worst piece of C hackery ...
See the article on loop unrolling for more on solutions to this problem, but note that software pipelining prevents the use of Duff's device. [citation needed] In the general case, loop unrolling may not be the best way to implement software pipelining. Consider a loop containing instructions with a high latency. For example, the following code:
A loop-switch sequence [1] (also known as the for-case paradigm [2] or Anti-Duff's Device) is a programming antipattern where a clear set of steps is implemented as a switch-within-a-loop. The loop-switch sequence is a specific derivative of spaghetti code .
Tom Duff, of Duff's device fame, had this to say about the shortcomings of the method: "a similar trick for interrupt-driven state machines that is too horrible to go into. [...] I never thought it was an adequate general-purpose coroutine implementation because it’s not easy to have multiple simultaneous activations of a coroutine and it’s ...
Re: "Duff's Device is an optimized implementation of a serial copy." Tom Duff's device is not just about optimizing serial copy. It's more general than that. It's a way to express loop unrolling (or loop unwinding) in the C programming language. Optimizing serial copy is just one application of loop unrolling, there are many others.