From 2621cc09acbf052fae7b857c3b1a83e0b495377d Mon Sep 17 00:00:00 2001 From: ctrlaltca Date: Mon, 31 Dec 2018 01:05:40 +0100 Subject: [PATCH] Optimize json parsing (#3480) --- cockatrice/src/qt-json/json.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cockatrice/src/qt-json/json.cpp b/cockatrice/src/qt-json/json.cpp index faf6601b..a5dd69c2 100644 --- a/cockatrice/src/qt-json/json.cpp +++ b/cockatrice/src/qt-json/json.cpp @@ -1,28 +1,28 @@ /* Copyright 2011 Eeli Reilin. All rights reserved. * - * Redistribution and use in source and binary forms, with or without + * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - * 1. Redistributions of source code must retain the above copyright notice, + * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL EELI REILIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL EELI REILIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * The views and conclusions contained in the software and documentation - * are those of the authors and should not be interpreted as representing + * The views and conclusions contained in the software and documentation + * are those of the authors and should not be interpreted as representing * official policies, either expressed or implied, of Eeli Reilin. */ @@ -503,11 +503,12 @@ QVariant Json::parseNumber(const QString &json, int &index) */ int Json::lastIndexOfNumber(const QString &json, int index) { + static const QString numericCharacters("0123456789+-.eE"); int lastIndex; for(lastIndex = index; lastIndex < json.size(); lastIndex++) { - if(QString("0123456789+-.eE").indexOf(json[lastIndex]) == -1) + if(numericCharacters.indexOf(json[lastIndex]) == -1) { break; } @@ -521,9 +522,10 @@ int Json::lastIndexOfNumber(const QString &json, int index) */ void Json::eatWhitespace(const QString &json, int &index) { + static const QString whitespaceChars(" \t\n\r"); for(; index < json.size(); index++) { - if(QString(" \t\n\r").indexOf(json[index]) == -1) + if(whitespaceChars.indexOf(json[index]) == -1) { break; }