comparison tests/_perf_config.py @ 550:79db28e879f8

Provide a C-implementation of configmix.config.quote() also: fast_quote
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 02 Jan 2022 02:04:07 +0100
parents 491413368c7c
children 75ecbe07abff
comparison
equal deleted inserted replaced
549:84657447ab39 550:79db28e879f8
14 14
15 opts = sys.argv[1:] 15 opts = sys.argv[1:]
16 all = not opts or "all" in opts 16 all = not opts or "all" in opts
17 17
18 try: 18 try:
19 from configmix.config import fast_unquote, fast_pathstr2path, _fast_split_ns 19 from configmix.config import fast_unquote, fast_quote, \
20 fast_pathstr2path, _fast_split_ns
20 except ImportError: 21 except ImportError:
21 fast_unquote = fast_pathstr2path = _fast_split_ns = None 22 fast_unquote = fast_quote = fast_pathstr2path = _fast_split_ns = None
22 23
23 setup = """ 24 setup = """
24 import os 25 import os
25 26
26 import configmix 27 import configmix
27 from configmix.config import _HIER_SEPARATOR, quote, py_pathstr2path, \ 28 from configmix.config import _HIER_SEPARATOR, \
28 py_unquote, _py_split_ns 29 py_quote, py_unquote, py_pathstr2path, \
30 _py_split_ns
29 try: 31 try:
30 from configmix.config import fast_unquote, fast_pathstr2path, _fast_split_ns 32 from configmix.config import fast_unquote, fast_quote, fast_pathstr2path, _fast_split_ns
31 except ImportError: 33 except ImportError:
32 fast_unquote = fast_pathstr2path = _fast_split_ns = None 34 fast_unquote = fast_quote = fast_pathstr2path = _fast_split_ns = None
33 35
34 TESTDATADIR = os.path.join( 36 TESTDATADIR = os.path.join(
35 os.path.abspath(os.path.dirname(configmix.__file__)), 37 os.path.abspath(os.path.dirname(configmix.__file__)),
36 "..", 38 "..",
37 "tests", 39 "tests",
62 print("pathstr2path/non-empty: %.4f" % timeit.timeit('a = py_pathstr2path(s1)', setup=setup, number=num_quote)) 64 print("pathstr2path/non-empty: %.4f" % timeit.timeit('a = py_pathstr2path(s1)', setup=setup, number=num_quote))
63 print("pathstr2path/empty: %.4f" % timeit.timeit('a = py_pathstr2path(se)', setup=setup, number=num_quote)) 65 print("pathstr2path/empty: %.4f" % timeit.timeit('a = py_pathstr2path(se)', setup=setup, number=num_quote))
64 if fast_pathstr2path: 66 if fast_pathstr2path:
65 print("fast-pathstr2path/non-empty: %.4f" % timeit.timeit('a = fast_pathstr2path(s1)', setup=setup, number=num_quote)) 67 print("fast-pathstr2path/non-empty: %.4f" % timeit.timeit('a = fast_pathstr2path(s1)', setup=setup, number=num_quote))
66 print("fast-pathstr2path/empty: %.4f" % timeit.timeit('a = fast_pathstr2path(se)', setup=setup, number=num_quote)) 68 print("fast-pathstr2path/empty: %.4f" % timeit.timeit('a = fast_pathstr2path(se)', setup=setup, number=num_quote))
67 print("quote/nothing: %.4f" % timeit.timeit('a = [quote(vp) for vp in (u"abc", u"def", u"hij")]', setup=setup, number=num_quote)) 69 print("quote/nothing: %.4f" % timeit.timeit('a = [py_quote(vp) for vp in (u"abc", u"def", u"hij")]', setup=setup, number=num_quote))
68 print("quote/yes: %.4f" % timeit.timeit('a = [quote(vp) for vp in (u"ab:c", u"def", u"h.ij")]', setup=setup, number=num_quote)) 70 print("quote/yes: %.4f" % timeit.timeit('a = [py_quote(vp) for vp in (u"ab:c", u"def", u"h.ij")]', setup=setup, number=num_quote))
71 if fast_quote:
72 print("fast-quote/nothing: %.4f" % timeit.timeit('a = [fast_quote(vp) for vp in (u"abc", u"def", u"hij")]', setup=setup, number=num_quote))
73 print("fast-quote/yes: %.4f" % timeit.timeit('a = [fast_quote(vp) for vp in (u"ab:c", u"def", u"h.ij")]', setup=setup, number=num_quote))
74
69 print("split-ns/no-ns: %.4f" % timeit.timeit('a = _py_split_ns(s1)', setup=setup, number=num_quote)) 75 print("split-ns/no-ns: %.4f" % timeit.timeit('a = _py_split_ns(s1)', setup=setup, number=num_quote))
70 print("split-ns/ns: %.4f" % timeit.timeit('a = _py_split_ns(ns_s1)', setup=setup, number=num_quote)) 76 print("split-ns/ns: %.4f" % timeit.timeit('a = _py_split_ns(ns_s1)', setup=setup, number=num_quote))
71 if _fast_split_ns: 77 if _fast_split_ns:
72 print("fast-split-ns/no-ns: %.4f" % timeit.timeit('a = _fast_split_ns(s1)', setup=setup, number=num_quote)) 78 print("fast-split-ns/no-ns: %.4f" % timeit.timeit('a = _fast_split_ns(s1)', setup=setup, number=num_quote))
73 print("fast-split-ns/ns: %.4f" % timeit.timeit('a = _fast_split_ns(ns_s1)', setup=setup, number=num_quote)) 79 print("fast-split-ns/ns: %.4f" % timeit.timeit('a = _fast_split_ns(ns_s1)', setup=setup, number=num_quote))