Do not use avisynth_c.dll from avisynth_c-01x.zip - Delphi built plugins crash. Use the one from avisynth_c-stdcall.zip.
I tried the invert.dll that comes with avisynth_c-015.zip, and built a invert.dll in Delphi 7, and then compared to the internal filter Invert() using kassandros AVSTimer.
#LoadCPlugin("c:\downloads\plugins\invert.dll")
AviSource("c:\trailer.avi")
ConvertToYUY2()
AvsTimer(frames=100, name="load",quiet=true)
Invert()
AvsTimer(frames=100, name="invert",difference=1)
[2000] [97] invert = 1248 fps
[2000] [197] invert = 4993 fps
[2000] [297] invert = 1427 fps
[2000] [397] invert = 908 fps
[2000] [497] invert = 476 fps
[2000] [597] invert = 9986 fps
[2000] [697] invert = 4993 fps
LoadCPlugin("c:\downloads\plugins\invert.dll")
# C built dll
AviSource("c:\trailer.avi")
ConvertToYUY2()
AvsTimer(frames=100, name="load",quiet=true)
Invert()
AvsTimer(frames=100, name="invert",difference=1)
[912] [97] invertc = 161 fps
[912] [197] invertc = 192 fps
[912] [297] invertc = 227 fps
[912] [397] invertc = 182 fps
[912] [497] invertc = 227 fps
[912] [597] invertc = 232 fps
[912] [697] invertc = 196 fps
LoadCPlugin("c:\downloads\plugins\invert.dll")
# C built dll
AviSource("c:\trailer.avi")
ConvertToYUY2()
AvsTimer(frames=100, name="load",quiet=true)
InvertInPlace()
AvsTimer(frames=100, name="invert",difference=1)
[912] [99] invertcinplace = 204 fps
[912] [199] invertcinplace = 182 fps
[912] [299] invertcinplace = 182 fps
[912] [399] invertcinplace = 238 fps
[912] [499] invertcinplace = 212 fps
[912] [599] invertcinplace = 200 fps
[912] [699] invertcinplace = 227 fps
LoadCPlugin("c:\downloads\plugins\invert.dll")
# Delphi built dll
AviSource("c:\trailer.avi")
ConvertToYUY2()
AvsTimer(frames=100, name="load",quiet=true)
Invert()
AvsTimer(frames=100, name="invert",difference=1)
[912] [98] invertdelphi = 154 fps
[912] [198] invertdelphi = 196 fps
[912] [298] invertdelphi = 250 fps
[912] [398] invertdelphi = 244 fps
[912] [498] invertdelphi = 227 fps
[912] [598] invertdelphi = 212 fps
[912] [698] invertdelphi = 208 fps
LoadCPlugin("c:\downloads\plugins\invert.dll")
# Delphi built dll
AviSource("c:\trailer.avi")
ConvertToYUY2()
AvsTimer(frames=100, name="load",quiet=true)
InvertInPlace()
AvsTimer(frames=100, name="invert",difference=1)
[912] [97] invertdelphiinplace = 169 fps
[912] [197] invertdelphiinplace = 188 fps
[912] [297] invertdelphiinplace = 204 fps
[912] [397] invertdelphiinplace = 212 fps
[912] [497] invertdelphiinplace = 185 fps
[912] [597] invertdelphiinplace = 256 fps
[912] [697] invertdelphiinplace = 244 fps
This is on a PIII-866Mhz, 256M, Win2K, Avisynth 2.55.
As you can see there's a huge difference between the internal filter and the external ones, but the Delphi build is not slower than the C build. I know this is not a real life test (a trivial filter on only a small clip with no other filters) but maybe it can give a rough idea.
I would like to test the invert filters built with M$VC as in
http://www.avisynth.org/AviSynthTwoFiveSDK
both the TwoFiveInvert and the TwoFiveFastInvert codes, to see how a properly built filter (that doesn't need avisynth_c.dll and LoadPluginC) would compare to the above.
But I couldn't find any binaries and if you have a look at:
http://www.avisynth.org/CompilingAviSynth
you'll know why I won't try to build them myself