2012-12-05 75 views
1

不同类型和战略设计的API我试图开发图像处理的一些代码。 我想设计一个不同类型的API,它可以支持不同的类型,如int,double,float,char和其他类型,不需要动态多态的帮助。 因为我发现当你处理图像处理时,动态多态性 会让你变慢下来,使用原始的类型,如int或char是最快的 的解决方案,但它是非常不方便的时候我想设计根据 这些类型不同的API。在Java

此外,我想要做这样的事情如果没有强有力的多态性的负担

public static void convert_color(
     final int[] sp, final int[] dp, 
     final int Xres, final int Yres, 
        Strategy strategy) 
{ 
    \\.... 
} 

有些算法会从策略(动态多态性) 的性能损失,我需要复制和粘贴就因为患战略是不同的。

用我目前的水平设计一个高性能和灵活的图像处理是非常困难的,你有更好的解决方案来获得性能和灵活性吗?

+2

* “polymorohism” *无处不在,而不是*的 “多态性” *?现在很奇怪:我试图编辑另一个单词*“iteration”*的单个实例*“itertaion”*的问题。我可以理解一次错字,但连续五次连续输入错字很奇怪。它甚至离奇的是另一个问题,曾与另一个词同样的问题... – TacticalCoder

+0

对不起,同样的错误,因为我复制和粘贴 – user1878686

+0

性能损失从多态性是非常小的。 对于任何图像处理,您应该更担心分配,代码和数据的空间和时间局部性以及原始类型装箱。 Trove4j(即使用具有原始类型的集合)将帮助您避免对原始类型进行任何装箱。 –

回答

1

我建议你在它生成的原语集合Trove4j如何解决这个问题。你也可以使用他们的集合。

我将开始与“超类型”例如double并优化代码,您发现它有所作为。

+0

Trove4j正在使用一个自定义的预处理器或“宏”系统,并为所有原始对象IIRC的“模板”生成代码?!基本上,从Java的第一天起,每个人都告诉我们的是那种“你永远不会需要它的”*; ) – TacticalCoder

+0

谢谢,这看起来像一个可行的解决方案。我希望它也可以处理策略的情况 – user1878686