About: Duff's device

An Entity of Type: Thing, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

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.

Property Value
dbo:abstract
  • Duff's Device ist ein nach seinem Erfinder Tom Duff benanntes Programmierverfahren zum geschickten Abrollen von Schleifen (englisch loop unrolling) in der Programmiersprache C. Es löst auf Code-sparende Weise das Problem, dass die Anzahl der Schleifendurchläufe evtl. kein Vielfaches der n-fach-Entrollung der Schleife ist oder die Anzahl an Durchläufen variabel ist und sich erst zur Laufzeit ergibt. Duff's Device ist in jeder Programmiersprache anwendbar, die Einsprünge in den Schleifenkörper erlaubt. (de)
  • 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. Loop unrolling attempts to reduce the overhead of conditional branching needed to check whether a loop is done, by executing a batch of loop bodies per iteration. To handle cases where the number of iterations is not divisible by the unrolled-loop increments, a common technique among assembly language programmers is to jump directly into the middle of the unrolled loop body to handle the remainder.Duff implemented this technique in C by using C's case label fall-through feature to jump into the unrolled body. (en)
  • En el ámbito de las ciencias de la computación un dispositivo de Duff es una implementación optimizada de una copia secuencial para programas en lenguaje C que utiliza una técnica normalmente empleada en lenguaje ensamblador para desenrollar bucles. Su descubrimiento se atribuye a que en noviembre de 1983 publicó​ un mensaje en USENET describiendo este hallazgo. La misma se basa en aprovechar la característica de caída en cascada de la instrucción case. Normalmente una copia secuencial se podría escribir de la siguiente forma:​ do { /* se asume count > 0 */ *to++ = *from++;} while (--count); Mientras intentaba optimizar este bucle, Tom Duff se dio cuenta de que la versión desdoblada del mismo podía ser reescrita intercalando las estructuras de las instrucciones switch y loop. /* se asume count > 0 */ int n = (count + 7) / 8; switch (count % 8) { case 0: do { *to++ = *from++; case 7: *to++ = *from++; case 6: *to++ = *from++; case 5: *to++ = *from++; case 4: *to++ = *from++; case 3: *to++ = *from++; case 2: *to++ = *from++; case 1: *to++ = *from++; } while (--n); } La optimización se produce debido a que sólo se realiza una comparación y decremento cada 8 elementos copiados en lugar de por cada uno. Si bien la técnica de desenrollado de bucles era conocida con anterioridad, esta forma de escribirla resultó una novedad y aunque extraña y poco intuitiva se trata de una construcción perfectamente válida en C, y muchos compiladores generan instrucciones de máquina tal cual un programador en lenguaje ensamblador lo hubiera hecho a mano. (es)
  • Duff's Device(ダフスデバイス)とは、C言語での可変長の連続的コピーをループ展開により最適化実装するときに直面する端数の問題を解決するための手法である。 C言語のswitch-case文が持つフォールスルーを利用して、アセンブリ言語で行われる技巧をC言語で実現している。1983年11月、ルーカスフィルムで働いていたトム・ダフが発見した。 (ja)
  • Mechanizm Duffa - w informatyce jest zoptymalizowaną wersją kopiowania jednej tablicy do drugiej. Używa do tego metody szeroko stosowanej w assemblerze polegającej na odwijaniu pętli. Wynalezienie tej metody dla języka C jest przypisywane (listopad 1983). W praktyce jednak stosowanie tej metody przy tworzeniu programów nie jest konieczne, ponieważ większość współczesnych kompilatorów sama optymalizuje kod w ten sposób. (pl)
  • Метод Даффа (англ. Duff's device) в программировании — это оптимизированная реализация последовательного копирования, использующая ту же технику, что применяется для размотки циклов. Первое описание сделано в ноябре 1983 года (англ. Tom Duff), который в то время работал на Lucasfilm. Пожалуй, это самое необычное использование того факта, что в языке Си инструкции внутри блока switch выполняются «насквозь» через все метки case. Следует отметить, что Дафф не претендует на открытие самой концепции раскрутки циклов, ему принадлежит лишь её конкретное выражение на языке Си. В современных решениях польза от применения метода Даффа сомнительна. Оно затрудняет работу оптимизирующих компиляторов и предсказателя переходов. Например, после удаления кода Даффа из XFree86 версии 4.0 (2000 год) бинарные файлы уменьшились примерно на 0,5 МБ и сервер стал загружаться быстрее. (ru)
  • 在计算机科学领域,达夫设备(英文:Duff's device)是串行复制(serial copy)的一种,通过汇编语言编程时一常用方法,实现展开循环,进而提高执行效率。这一方法据信为当时供职于卢卡斯影业的于1983年11月发明,并可能是迄今为止利用C语言特性所作的最巧妙的实现。 (zh)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 456753 (xsd:integer)
dbo:wikiPageLength
  • 14861 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1116833869 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdfs:comment
  • Duff's Device ist ein nach seinem Erfinder Tom Duff benanntes Programmierverfahren zum geschickten Abrollen von Schleifen (englisch loop unrolling) in der Programmiersprache C. Es löst auf Code-sparende Weise das Problem, dass die Anzahl der Schleifendurchläufe evtl. kein Vielfaches der n-fach-Entrollung der Schleife ist oder die Anzahl an Durchläufen variabel ist und sich erst zur Laufzeit ergibt. Duff's Device ist in jeder Programmiersprache anwendbar, die Einsprünge in den Schleifenkörper erlaubt. (de)
  • Duff's Device(ダフスデバイス)とは、C言語での可変長の連続的コピーをループ展開により最適化実装するときに直面する端数の問題を解決するための手法である。 C言語のswitch-case文が持つフォールスルーを利用して、アセンブリ言語で行われる技巧をC言語で実現している。1983年11月、ルーカスフィルムで働いていたトム・ダフが発見した。 (ja)
  • Mechanizm Duffa - w informatyce jest zoptymalizowaną wersją kopiowania jednej tablicy do drugiej. Używa do tego metody szeroko stosowanej w assemblerze polegającej na odwijaniu pętli. Wynalezienie tej metody dla języka C jest przypisywane (listopad 1983). W praktyce jednak stosowanie tej metody przy tworzeniu programów nie jest konieczne, ponieważ większość współczesnych kompilatorów sama optymalizuje kod w ten sposób. (pl)
  • 在计算机科学领域,达夫设备(英文:Duff's device)是串行复制(serial copy)的一种,通过汇编语言编程时一常用方法,实现展开循环,进而提高执行效率。这一方法据信为当时供职于卢卡斯影业的于1983年11月发明,并可能是迄今为止利用C语言特性所作的最巧妙的实现。 (zh)
  • En el ámbito de las ciencias de la computación un dispositivo de Duff es una implementación optimizada de una copia secuencial para programas en lenguaje C que utiliza una técnica normalmente empleada en lenguaje ensamblador para desenrollar bucles. Su descubrimiento se atribuye a que en noviembre de 1983 publicó​ un mensaje en USENET describiendo este hallazgo. La misma se basa en aprovechar la característica de caída en cascada de la instrucción case. Normalmente una copia secuencial se podría escribir de la siguiente forma:​ do { /* se asume count > 0 */ *to++ = *from++;} while (--count); (es)
  • 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. (en)
  • Метод Даффа (англ. Duff's device) в программировании — это оптимизированная реализация последовательного копирования, использующая ту же технику, что применяется для размотки циклов. Первое описание сделано в ноябре 1983 года (англ. Tom Duff), который в то время работал на Lucasfilm. Пожалуй, это самое необычное использование того факта, что в языке Си инструкции внутри блока switch выполняются «насквозь» через все метки case. Следует отметить, что Дафф не претендует на открытие самой концепции раскрутки циклов, ему принадлежит лишь её конкретное выражение на языке Си. (ru)
rdfs:label
  • Duff’s Device (de)
  • Dispositivo de Duff (es)
  • Duff's device (en)
  • Duff's device (ja)
  • Mechanizm Duffa (pl)
  • Метод Даффа (ru)
  • 达夫设备 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is dbp:notableWorks of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License