【发布时间】:2011-07-28 11:19:30
【问题描述】:
我正在寻找一个实用的循环展开技术示例。
我认为 Duff 的设备是一个不错的建议。
但是Duff's device's destination is never increased。它可能对将数据复制到串行设备的嵌入式程序员有用,而不是一般程序员。
你能给我一个很好的有用的例子吗?
如果你曾经在你的真实代码中使用过它,那就更好了。
【问题讨论】:
-
Duff 的使用没有增加目标地址这一事实并不限制您在需要增加它的情况下使用此代码。另一方面,您意识到下一个维护您的代码的人可能是一个知道您的地址应该的杀人凶手。
-
@dmckee: 如果我在这种情况下增加目标地址,它与 memcpy 相同。而且我认为 memcpy 在这种情况下更具可读性,甚至更快。
-
它也不会阻止您减少目的地或做任何其他愚蠢的事情。因为 Duff 的设备不是关于移动数据,它是循环展开的一般表达式,您可以在任何想要手动展开循环的地方使用它。请参阅 Potatoswatter 的答案,但在使用它之前请阅读 John 的答案。
标签: c++ c optimization loops duffs-device