【发布时间】:2014-11-15 08:39:30
【问题描述】:
我正在为 SSE 指令编写一个 Delphi 接口。这是一个类(为了可见性等)具有 N 个类方法的 TSimdCpu(每个 SSE 指令一个;明显的性能开销现在不是问题)。
现在我想将我的代码的性能(虽然很慢)与做同样事情的纯帕斯卡代码进行比较。我的第一个猜测是编写一个具有相同方法名称的类似类 TGenericCpu。但是如果没有通用的基类和虚拟方法,我就不能只拥有一段测试代码来调用它应该运行测试的任何类的方法。 理想情况下,我想要类似的东西
TestOn(TSimdCpu);
TestOn(TGenericCpu);
但是我不知道如何不使用使用delphi的虚拟方法来实现这个。 我不想回退到虚拟方法,原因有两个:一个是性能,另一个是它只用于测试,而对于所有实际用途,它会增加毫无意义的复杂性。
泛型在这里有用吗?类似的东西
TTest<T> = class
...
T.AddVector(v);
...
TTest<TSimdCpu>.Test;
TTest<TGenericCpu>.Test;
【问题讨论】:
-
Re "performance":请验证您的代码(一旦完成)确实比简单的虚拟方法调用更快。关于“无意义的复杂性”:您想如何称呼您在这里所做的事情以及您想为“仅用于测试"?
-
我称之为“达到德尔福的极限”。我不做“拖拉机编码”的任何时间都很好。
标签: delphi