From 1e866f7672a0c7850aa5ed4b166af8f3e4b8042b Mon Sep 17 00:00:00 2001 From: Todd Lang Date: Tue, 5 Jun 2018 13:08:30 -0400 Subject: [PATCH] Refactoring SimpleJson.EatWhiteSpace -Replacing arbitrary length IndexOf call with unrolled switch statement -Reduces deserialization runtime on ~310KB test data from 13s to 5s. --- .../Json/SimpleJson/SimpleJson.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNetCore.Blazor/Json/SimpleJson/SimpleJson.cs b/src/Microsoft.AspNetCore.Blazor/Json/SimpleJson/SimpleJson.cs index f359bebc30..ea9566aea7 100644 --- a/src/Microsoft.AspNetCore.Blazor/Json/SimpleJson/SimpleJson.cs +++ b/src/Microsoft.AspNetCore.Blazor/Json/SimpleJson/SimpleJson.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // // Copyright (c) 2011, The Outercurve Foundation. // @@ -926,8 +926,19 @@ namespace SimpleJson static void EatWhitespace(char[] json, ref int index) { - for (; index < json.Length; index++) - if (" \t\n\r\b\f".IndexOf(json[index]) == -1) break; + for (; index < json.Length; index++) { + switch (json[index]) { + case ' ': + case '\t': + case '\n': + case '\r': + case '\b': + case '\f': + break; + default: + return; + } + } } static int LookAhead(char[] json, int index)