Remix.run Logo
koyote 2 hours ago

I ran into a similarish issue in C++ (MSVC++) where a small change that improved an error message led to a 10% slowdown.

The function was something like:

  int ReturnAnswerIfCharIsValid(char* c)
  {
    if(c == nullptr)
      throw std::exception("ERROR!");

    return 42;
  }
The exception line was changed to something like:

  throw std::exception("Char is not valid, please fix it!"); // String is now longer
The performance of this hot-path function went down the drain.

I fixed it by replacing the exception call with yet another function call:

  if(c == nullptr)
     ThrowException();
Other fixes might have included something like __forceinline in the function signature.