Benchmarks - JustinTArthur/jta.qsutil GitHub Wiki

key1=val1&key2=val2&key3[a][b][c]=val3&key3[a][b][c]=val4&key4&key3[a][b][d]=val5&key5[]=val6

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key3[a][b][c]': ['val3', 'val4'], 'key2': ['val2'], 'key1': ['val1'], 'key4': [''], 'key5[]': ['val6'], 'key3[a][b][d]': ['val5']} 20.9338 {'key1': ['val1'], 'key2': ['val2'], 'key3[a][b][c]': ['val3', 'val4'], 'key4': [''], 'key3[a][b][d]': ['val5'], 'key5[]': ['val6']} 15.3484
jta.qsutil {'key3': {'a': {'b': {'c': ['val3', 'val4'], 'd': 'val5'}}}, 'key2': 'val2', 'key1': 'val1', 'key5': ['val6'], 'key4': ''} 33.8413 {'key1': 'val1', 'key2': 'val2', 'key3': {'a': {'b': {'c': ['val3', 'val4'], 'd': 'val5'}}}, 'key4': '', 'key5': ['val6']} 27.6924
querystring {u'key3[a][b][c]': [u'val3', u'val4'], u'key2': u'val2', u'key1': u'val1', u'key4': u'', u'key5[]': u'val6', u'key3[a][b][d]': u'val5'} 29.5554 maximum recursion depth exceeded
querystring_parser
Django QueryDict <QueryDict: {u'key3[a][b][c]': [u'val3', u'val4'], u'key2': [u'val2'], u'key1': [u'val1'], u'key4': [u''], u'key5[]': [u'val6'], u'key3[a][b][d]': [u'val5']}> 81.0198 <QueryDict: {'key1': ['val1'], 'key2': ['val2'], 'key3[a][b][c]': ['val3', 'val4'], 'key4': [''], 'key3[a][b][d]': ['val5'], 'key5[]': ['val6']}> 44.8243

key1=val1&key2=val2

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key2': ['val2'], 'key1': ['val1']} 7.50772 {'key1': ['val1'], 'key2': ['val2']} 5.19323
jta.qsutil {'key2': 'val2', 'key1': 'val1'} 9.65223 {'key1': 'val1', 'key2': 'val2'} 6.99575
querystring {u'key2': u'val2', u'key1': u'val1'} 8.7864 maximum recursion depth exceeded
querystring_parser {u'key2': u'val2', u'key1': u'val1'} 15.2224 {'key1': 'val1', 'key2': 'val2'} 7.70124
Django QueryDict <QueryDict: {u'key2': [u'val2'], u'key1': [u'val1']}> 25.5595 <QueryDict: {'key1': ['val1'], 'key2': ['val2']}> 15.3726

key1=val1&key1=val2

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key1': ['val1', 'val2']} 7.527 {'key1': ['val1', 'val2']} 5.33717
jta.qsutil {'key1': ['val1', 'val2']} 10.4305 {'key1': ['val1', 'val2']} 7.27401
querystring {u'key1': [u'val1', u'val2']} 9.78487 maximum recursion depth exceeded
querystring_parser {u'key1': [u'val1', u'val2']} 17.1351 {'key1': ['val1', 'val2']} 8.21547
Django QueryDict <QueryDict: {u'key1': [u'val1', u'val2']}> 25.603 <QueryDict: {'key1': ['val1', 'val2']}> 13.6733

singleSymbol

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'singleSymbol': ['']} 5.69297 {'singleSymbol': ['']} 3.29414
jta.qsutil {'singleSymbol': ''} 5.59453 {'singleSymbol': ''} 4.16835
querystring {u'singleSymbol': u''} 5.93884 maximum recursion depth exceeded
querystring_parser
Django QueryDict <QueryDict: {u'singleSymbol': [u'']}> 16.9025 <QueryDict: {'singleSymbol': ['']}> 9.20682

singleValArray[]=val1

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'singleValArray[]': ['val1']} 4.97693 {'singleValArray[]': ['val1']} 3.31352
jta.qsutil {'singleValArray': ['val1']} 6.70675 {'singleValArray': ['val1']} 4.36919
querystring {u'singleValArray[]': u'val1'} 5.45911 maximum recursion depth exceeded
querystring_parser {u'singleValArray': {u'': u'val1'}} 12.0448 {'singleValArray': {'': 'val1'}} 6.83262
Django QueryDict <QueryDict: {u'singleValArray[]': [u'val1']}> 15.8583 <QueryDict: {'singleValArray[]': ['val1']}> 9.25253

key1[]=val1&key1[]=val2

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key1[]': ['val1', 'val2']} 7.91884 {'key1[]': ['val1', 'val2']} 5.40576
jta.qsutil {'key1': ['val1', 'val2']} 11.127 {'key1': ['val1', 'val2']} 8.53695
querystring {u'key1[]': [u'val1', u'val2']} 10.1977 maximum recursion depth exceeded
querystring_parser {u'key1': {u'': [u'val1', u'val2']}} 22.9695 {'key1': {'': ['val1', 'val2']}} 17.598
Django QueryDict <QueryDict: {u'key1[]': [u'val1', u'val2']}> 24.5081 <QueryDict: {'key1[]': ['val1', 'val2']}> 15.3227

key1[a][b][c]=val1

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key1[a][b][c]': ['val1']} 4.65594 {'key1[a][b][c]': ['val1']} 3.2922
jta.qsutil {'key1': {'a': {'b': {'c': 'val1'}}}} 7.77346 {'key1': {'a': {'b': {'c': 'val1'}}}} 6.02485
querystring {u'key1[a][b][c]': u'val1'} 5.29699 maximum recursion depth exceeded
querystring_parser {u'key1': {u'a': {u'b': {u'c': u'val1'}}}} 17.8402 {'key1': {'a': {'b': {'c': 'val1'}}}} 13.1148
Django QueryDict <QueryDict: {u'key1[a][b][c]': [u'val1']}> 15.3444 <QueryDict: {'key1[a][b][c]': ['val1']}> 10.6192

key1[a][b][c]=val1&key1[a][b][d]=val2

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key1[a][b][c]': ['val1'], 'key1[a][b][d]': ['val2']} 7.33389 {'key1[a][b][c]': ['val1'], 'key1[a][b][d]': ['val2']} 6.04012
jta.qsutil {'key1': {'a': {'b': {'c': 'val1', 'd': 'val2'}}}} 12.959 {'key1': {'a': {'b': {'c': 'val1', 'd': 'val2'}}}} 11.6805
querystring {u'key1[a][b][c]': u'val1', u'key1[a][b][d]': u'val2'} 9.27237 maximum recursion depth exceeded
querystring_parser {u'key1': {u'a': {u'b': {u'c': u'val1', u'd': u'val2'}}}} 35.3864 {'key1': {'a': {'b': {'c': 'val1', 'd': 'val2'}}}} 29.7264
Django QueryDict <QueryDict: {u'key1[a][b][c]': [u'val1'], u'key1[a][b][d]': [u'val2']}> 25.816 <QueryDict: {'key1[a][b][c]': ['val1'], 'key1[a][b][d]': ['val2']}> 17.1759

key1[a][b][]=val1

Library Python 2 Result Python 2 Time Python 3 Result Python 3 Time
urlparser or urllib.parse {'key1[a][b][]': ['val1']} 4.99559 {'key1[a][b][]': ['val1']} 3.5889
jta.qsutil {'key1': {'a': {'b': ['val1']}}} 9.16587 {'key1': {'a': {'b': ['val1']}}} 8.79707
querystring {u'key1[a][b][]': u'val1'} 6.49496 maximum recursion depth exceeded
querystring_parser {u'key1': {u'a': {u'b': {u'': u'val1'}}}} 20.81 {'key1': {'a': {'b': {'': 'val1'}}}} 14.4895
Django QueryDict <QueryDict: {u'key1[a][b][]': [u'val1']}> 15.2236 <QueryDict: {'key1[a][b][]': ['val1']}> 9.62286