Я пишу интерфейс Delphi для инструкций SSE. Это класс (ради видимости и т. Д.) TSimdCpu с методами класса N (по одному на каждую инструкцию SSE, очевидная накладная производительность не является проблемой сейчас).Имитация виртуальных методов в Delphi
Теперь я хочу сравнить производительность моего кода (медленного, как есть) с чистым паскальным кодом, выполняющим то же самое. Мое первое предположение было бы написать аналогичный класс TGenericCpu с теми же именами методов. Но без общего базового класса и виртуальных методов у меня не может быть только один кусок кода тестирования, который бы вызывал методы любого класса, на котором он должен запускать тесты. В идеале, я хотел бы что-то вроде
TestOn(TSimdCpu);
TestOn(TGenericCpu);
Но я потерял о том, как реализовать эту без с использованием виртуальных методов Дельфи. Я не хочу, чтобы возвращался к виртуальным методам по двум причинам: один - это производительность, а другой - то, что он будет использоваться только для тестирования и для практического использования он будет добавлять бессмысленную сложность.
Могут ли быть полезны дженерики? Что-то вроде
TTest<T> = class
...
T.AddVector(v);
...
TTest<TSimdCpu>.Test;
TTest<TGenericCpu>.Test;
Re "* performance *": Пожалуйста, подтвердите, что ваш код (после завершения) действительно быстрее, чем простой вызов виртуального метода. Re "* бессмысленная сложность *": Как бы вы хотели назвать то, что вы здесь делаете, и сколько времени вы хотите потратить на проект, который «будет использоваться только для тестирования»? – JensG
Я бы назвал это «достижением пределов дельфи». Любое количество времени, которое я не делаю «кодирование трактора», прекрасное. –