1) Убедитесь, что ваша функция встроена.
2) Вы можете разместить своп, используя XOR, например
3) Попробуйте заставить компилятор передавать аргументы, используя регистр вместо стека (хотя в x86 много регистров, стоит попробовать) - вы можете использовать стандартное ключевое слово register
или играть с fastcall
на компиляторе MS.
typedef double** TwoDimArray;
class Solver
{
inline void Swap( register TwoDimArray& a, register TwoDimArray& b )
{
a ^= b ^= a ^= b;
}
};
4) Не задавайте значения по умолчанию для временных значений, таких как vswap
.