I think I have identified a bottleneck in juce_WebBrowserComponent.cpp/emitEvent.
When you send over large objects: When replacing escapes:
void emitEvent (const Identifier& eventId, const var& object)
{
...
const auto objectAsString = JSON::toString (object, true); //THIS IS SUPER SLOW FOR LAAAARGE OBJECTS!
...
evaluateJavascript ("window.__JUCE__.backend.emitByBackend(" + eventId.toString().quoted() + ", "
+ escaped.quoted ('\'')
+ ");", evaluationHandler);
}
void emitEvent(const Identifier& eventId, const var& object) {
const auto objectAsString = JSON::toString (object, true);
// This eliminates the need for expensive string replacements
evaluateJavascript ("window.__JUCE__.backend.emitByBackend(" + eventId.toString().quoted() + ", "
+ "atob(" + Base64::toBase64(objectAsString).quoted() + ")"
+ ");", evaluationHandler);
}
Would that make sense to add?
