jjzjj

java - Duff 的设备是否加速了 Java 代码?

使用现有的Sun1.6编译器和JRE/JIT,使用Duff的Device示例的那种广泛展开来展开循环是个好主意吗?或者它最终会成为没有性能优势的代码混淆?我使用的Java分析工具提供的有关逐行CPU使用情况的信息少于valgrind,因此我希望通过其他人的经验来增强测量。请注意,当然,您不能完全对Duff的设备进行编码,但您可以进行基本的展开,这就是我想知道的。shortstateType=data.getShort(ptr);switch(stateType){caseSEARCH_TYPE_DISPATCH+16:if(c>data.getChar(ptr+(3data.getCh

Android Porter-Duff 合成性能

我无法找到任何有关使用不同Porter-Duff模式合成位图的相对性能的互联网文章或Google文档。在编程时对我来说变得非常明显的是,传统的SRC/DST前缀模式比AndroidMode.DARKEN、Mode.LIGHTEN、Mode.MULTIPLY模式执行得更快(快3-4倍)。在720p屏幕上渲染光照mask时,使用后一种模式会使我的游戏引擎性能从40+降低到13FPS左右。因此我的问题是:有没有比提供的Porter-Duff模式更快的使用变暗/变亮属性合成图像的方法?是否值得切换到OpenGL?是否有关于不同合成模式的相对速度的数据? 最佳答案

android - Porter-Duff:不同形状的不同行为?

我有以下布局:和以下myShape可绘制对象:我应用了以下过滤器:myButton.getBackground().setColorFilter(orange,PorterDuff.Mode.ADD);结果是这样的:然后我将myShape更改为圆角矩形:结果是这样的:左边没有应用滤镜,右边有滤镜。我想得到的:我应该怎么做才能使用Porter-Duff滤镜正确绘制橙色边框?还有其他选择吗? 最佳答案 Porter/Duff过滤依赖于图像的alphachannel。要仅绘制形状边框(没有其他形状空间),您应该将形状背景从白色更改为透明:

Android ColorFilter - Porter-Duff 模式

我正在尝试解决androidColorFilters的问题。文档很差,所以主要方法是尝试不同的变体。问题:有一个位图。一些像素的alpha=255,其他像素的alpha=0。我正在尝试绘制一个具有特定颜色的圆圈。我希望位图中的alphachannel不变,但在绘制时我想将颜色乘以位图alpha。因此,在绘制圆圈时,我希望不绘制alpha=0的像素,而将alpha=255的像素绘制成我想要的颜色。Alphachannel不应改变。我正在尝试使用porter-duffColorFilter(androidsdk中的PorterDuffColorFilter类)。官网模式太多,描述看不懂:h

c++ - 如何编译 Duff 的设备代码?

我明白为什么Duff'sdevice比可以展开但未优化的普通循环代码更快。但是我还不明白代码是如何编译的。我想这是关于switch语法的一个技巧。但现在不是了。switch句中存在dowhile句怎么办?很奇怪。有谁能解释一下吗?编辑:另一个问题。duff为什么用8?它可以是16、65536或其他。因为代码大小?还有其他原因吗?例如,缓存或流水线优势。 最佳答案 “它是如何工作的”很简单。C和C++都是编译语言,通常编译为平台机器代码。机器代码没有block结构的概念-所有block结构都必须转换为使用(实际上)某种混合无条件和条件

c++ - 修改 Duff 设备的语法 - 这是合法的 C/C++ 吗?

直到昨晚我才遇到好奇Duff'sdevice首次。我一直在阅读它,我认为理解它并不难。我很好奇的是奇怪的语法(来自维基百科):registershort*to,*from;registerintcount;{registerintn=(count+7)/8;switch(count%8){case0:do{*to=*from++;case7:*to=*from++;case6:*to=*from++;case5:*to=*from++;case4:*to=*from++;case3:*to=*from++;case2:*to=*from++;case1:*to=*from++;}whi

c++ - 这段 C 代码有什么作用 [Duff 的设备]?

这个问题在这里已经有了答案:HowdoesDuff'sdevicework?(11个答案)关闭2年前。voidSend(int*to,constint*from,constintcount){intn=(count+7)/8;switch(count%8){case0:do{*to++=*from++;case7:*to++=*from++;case6:*to++=*from++;case5:*to++=*from++;case4:*to++=*from++;case3:*to++=*from++;case2:*to++=*from++;case1:*to++=*from++;}whi

c - Duff 在 Swift 中的装置

我们知道Duff'sdevice利用fallthroughswitch和循环的交错结构,例如:send(to,from,count)registershort*to,*from;registercount;{registern=(count+7)/8;switch(count%8){case0:do{*to=*from++;case7:*to=*from++;case6:*to=*from++;case5:*to=*from++;case4:*to=*from++;case3:*to=*from++;case2:*to=*from++;case1:*to=*from++;}while(