simplejson is a native code version of the json module in python (the json module in core python implements the simplejson api), which means that simplejson can be used in place of the json module, but it performs much better. This patch attempts to load simplejson, and falls back to normal json if it fails.
In the summary path on a single run of quick.tests, simplejson is about 3-4 seconds faster than json, ~7 seconds vs ~11 seconds. Signed-off-by: Dylan Baker <[email protected]> --- framework/core.py | 5 ++++- framework/shader_test.py | 5 ++++- framework/tests/summary.py | 5 ++++- glapi/parse_glspec.py | 5 ++++- piglit-print-commands.py | 1 - piglit-run.py | 1 - tests/util/gen_dispatch.py | 5 ++++- 7 files changed, 20 insertions(+), 7 deletions(-) diff --git a/framework/core.py b/framework/core.py index db28cfb..4426f41 100644 --- a/framework/core.py +++ b/framework/core.py @@ -23,7 +23,6 @@ # Piglit core import errno -import json import os import platform import re @@ -39,6 +38,10 @@ from textwrap import dedent from threads import synchronized_self import threading import multiprocessing +try: + import simplejson as json +except ImportError: + import json from threadpool import ThreadPool diff --git a/framework/shader_test.py b/framework/shader_test.py index 82820fd..ea1d462 100755 --- a/framework/shader_test.py +++ b/framework/shader_test.py @@ -23,7 +23,10 @@ # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. -import json +try: + import simplejson as json +except ImportError: + import json import os import os.path import os.path as path diff --git a/framework/tests/summary.py b/framework/tests/summary.py index 194580c..de67c1d 100644 --- a/framework/tests/summary.py +++ b/framework/tests/summary.py @@ -24,11 +24,14 @@ import os import os.path as path -import json import unittest import itertools import tempfile +try: + import simplejson as json +except ImportError: + import json import framework.summary as summary from helpers import test_iterations, create_testresult, create_test diff --git a/glapi/parse_glspec.py b/glapi/parse_glspec.py index 2a8f73a..bab4996 100644 --- a/glapi/parse_glspec.py +++ b/glapi/parse_glspec.py @@ -118,9 +118,12 @@ import collections import csv -import json import re import sys +try: + import simplejson as json +except ImportError: + import json GLSPEC_HEADER_REGEXP = re.compile(r'^(\w+)\((.*)\)$') diff --git a/piglit-print-commands.py b/piglit-print-commands.py index c363fa1..c42ea6d 100755 --- a/piglit-print-commands.py +++ b/piglit-print-commands.py @@ -28,7 +28,6 @@ import os import os.path as path import time import traceback -import json sys.path.append(path.dirname(path.realpath(sys.argv[0]))) import framework.core as core diff --git a/piglit-run.py b/piglit-run.py index 4c87187..7321a23 100755 --- a/piglit-run.py +++ b/piglit-run.py @@ -28,7 +28,6 @@ import os import os.path as path import time import traceback -import json sys.path.append(path.dirname(path.realpath(sys.argv[0]))) import framework.core as core diff --git a/tests/util/gen_dispatch.py b/tests/util/gen_dispatch.py index 10b5dc5..c97af94 100644 --- a/tests/util/gen_dispatch.py +++ b/tests/util/gen_dispatch.py @@ -143,9 +143,12 @@ # function corresponding to each entry in function_names. import collections -import json import os.path import sys +try: + import simplejson as json +except: + import json # Generate a top-of-file comment cautioning that the file is -- 1.8.1.5 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
