Motion Tracking 20x Slower Under Standard Windows Build vs MinGW or Mac OS or Linux

Motion tracking seems to be about 20x+ slower on Windows 8 (don’t have a different version to test). I tried using a Mac Mini using both OS X and Windows 8 x64 with boot camp.

I also tested on a regular Windows laptop and motion tracking in windows is very very slow on it as well. Under Ubuntu 12.10 Linux on the same laptop motion tracking is fine.

I tried both 32 bit and 64 bit 2.65a and the new 2.66. Motion tracking in windows for all of them is too slow to be useable. [Update] Tried the mingw experimental release and it seems to run at normal speed.

Any ideas on why motion tracking under windows is so much slower (to the point of being unusable) [both machines use Radeon cards if that matters] ?

I might be wrong but aren’t the “stock” windows builds without OpenMP, thus having no multithreading?
The Linux/OSX builds, built with should have OpenMP.

Official Windows builds from blender.org are built with OpenMP.

No idea what is wrong here, I would think that the Linux gcc compiler produces more optimized code, but 20x? Very doubtful.

Are they currently build with MinGW or MSVCC?

Just tried the blender-2.65-r54519-mingw64.zip experimental release and it is much better.

Also, the Windows laptop is only dual core, so while it might be slower without OpenMP, it shouldn’t be 20x slower…

Looks like the problem is libmv (the motion tracking library) is compiled with optimizations disabled on windows:

In bf-blender/trunk/blender/extern/libmv/CMakeLists.txt:if(MSVC)
[INDENT=2]set(MSVC_OFLAGS O1 O2 Ox)[/INDENT]
[INDENT=2]foreach(FLAG ${MSVC_OFLAGS})[/INDENT]
[INDENT=3]string(REPLACE “${FLAG}” “Od” CMAKE_CXX_FLAGS_RELEASE “${CMAKE_CXX_FLAGS_RELEASE}”)[/INDENT]
[INDENT=3]string(REPLACE “${FLAG}” “Od” CMAKE_C_FLAGS_RELWITHDEBINFO “${CMAKE_C_FLAGS_RELWITHDEBINFO}”)[/INDENT]
[INDENT=2]endforeach()[/INDENT]
endif()