Skip to content

Commit e680231

Browse files
committed
Updating perf tests to match python
1 parent a5b289e commit e680231

File tree

5 files changed

+63
-36
lines changed

5 files changed

+63
-36
lines changed

bin/perf.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@ function runSuite($file)
2121
foreach ($json as $suite) {
2222
foreach ($suite['cases'] as $case) {
2323
$total += runCase(
24-
str_replace(getcwd(), '.', $file),
2524
$suite['given'],
26-
$case['expression']
25+
$case['expression'],
26+
$case['name']
2727
);
2828
}
2929
}
3030
return $total;
3131
}
3232

33-
function runCase($file, $given, $expression)
33+
function runCase($given, $expression, $name)
3434
{
3535
$best = 99999;
3636
$runtime = \JmesPath\Env::createRuntime();
3737

38-
for ($i = 0; $i < 1000; $i++) {
38+
for ($i = 0; $i < 100; $i++) {
3939
$t = microtime(true);
4040
$runtime($expression, $given);
4141
$tryTime = (microtime(true) - $t) * 1000;
@@ -51,9 +51,7 @@ function runCase($file, $given, $expression)
5151
}
5252
}
5353

54-
$template = "time: %fms, %s: %s\n";
55-
$expression = str_replace("\n", '\n', $expression);
56-
printf($template, $best, basename($file), substr($expression, 0, 50));
54+
printf("time: %07.4fms name: %s\n", $best, $name);
5755

5856
return $best;
5957
}

tests/compliance/perf/basic.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66
{
77
"name": "single_expression",
88
"expression": "foo",
9-
"result": [{"bar": {"baz": "correct"}}]
9+
"result": {"bar": {"baz": "correct"}}
1010
},
1111
{
1212
"name": "single_dot_expression",
1313
"expression": "foo.bar",
14-
"result": [{"baz": "correct"}]
14+
"result": {"baz": "correct"}
1515
},
1616
{
1717
"name": "double_dot_expression",
1818
"expression": "foo.bar.baz",
19-
"result": ["correct"]
19+
"result": "correct"
2020
},
2121
{
2222
"name": "dot_no_match",
2323
"expression": "foo.bar.baz.bad",
24-
"result": []
24+
"result": null
2525
}
2626
]
2727
}]
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
[{
2-
"description": "Deeply nested dict",
3-
"given":
4-
{"j49": {"j48": {"j47": {"j46": {"j45": {"j44": {"j43": {"j42": {"j41": {"j40": {"j39": {"j38": {"j37": {"j36": {"j35": {"j34": {"j33": {"j32": {"j31": {"j30": {"j29": {"j28": {"j27": {"j26": {"j25": {"j24": {"j23": {"j22": {"j21": {"j20": {"j19": {"j18": {"j17": {"j16": {"j15": {"j14": {"j13": {"j12": {"j11": {"j10": {"j9": {"j8": {"j7": {"j6": {"j5": {"j4": {"j3": {"j2": {"j1": {"j0": {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},
5-
"cases": [
6-
{
7-
"name": "deep_nesting_10",
8-
"expression": "j49.j48.j47.j46.j45.j44.j43.j42.j41.j40",
9-
"result": []
10-
},
11-
{
12-
"name": "deep_nesting_50",
13-
"expression": "j49.j48.j47.j46.j45.j44.j43.j42.j41.j40.j39.j38.j37.j36.j35.j34.j33.j32.j31.j30.j29.j28.j27.j26.j25.j24.j23.j22.j21.j20.j19.j18.j17.j16.j15.j14.j13.j12.j11.j10.j9.j8.j7.j6.j5.j4.j3.j2.j1.j0",
14-
"result": []
15-
},
16-
{
17-
"name": "deep_nesting_50_pipe",
18-
"expression": "j49|j48|j47|j46|j45|j44|j43|j42|j41|j40|j39|j38|j37|j36|j35|j34|j33|j32|j31|j30|j29|j28|j27|j26|j25|j24|j23|j22|j21|j20|j19|j18|j17|j16|j15|j14|j13|j12|j11|j10|j9|j8|j7|j6|j5|j4|j3|j2|j1|j0",
19-
"result": {}
20-
},
21-
{
22-
"name": "deep_nesting_50_index",
23-
"expression": "[49][48][47][46][45][44][43][42][41][40][39][38][37][36][35][34][33][32][31][30][29][28][27][26][25][24][23][22][21][20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1][0]",
24-
"result": {}
25-
}
26-
]
2+
"description": "Deeply nested dict",
3+
"given":
4+
{"j49": {"j48": {"j47": {"j46": {"j45": {"j44": {"j43": {"j42": {"j41": {"j40": {"j39": {"j38": {"j37": {"j36": {"j35": {"j34": {"j33": {"j32": {"j31": {"j30": {"j29": {"j28": {"j27": {"j26": {"j25": {"j24": {"j23": {"j22": {"j21": {"j20": {"j19": {"j18": {"j17": {"j16": {"j15": {"j14": {"j13": {"j12": {"j11": {"j10": {"j9": {"j8": {"j7": {"j6": {"j5": {"j4": {"j3": {"j2": {"j1": {"j0": {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},
5+
"cases": [
6+
{
7+
"name": "deep_nesting_10",
8+
"expression": "j49.j48.j47.j46.j45.j44.j43.j42.j41.j40",
9+
"result": {"j39": {"j38": {"j37": {"j36": {"j35": {"j34": {"j33": {"j32": {"j31": {"j30": {"j29": {"j28": {"j27": {"j26": {"j25": {"j24": {"j23": {"j22": {"j21": {"j20": {"j19": {"j18": {"j17": {"j16": {"j15": {"j14": {"j13": {"j12": {"j11": {"j10": {"j9": {"j8": {"j7": {"j6": {"j5": {"j4": {"j3": {"j2": {"j1": {"j0": {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
10+
},
11+
{
12+
"name": "deep_nesting_50",
13+
"expression": "j49.j48.j47.j46.j45.j44.j43.j42.j41.j40.j39.j38.j37.j36.j35.j34.j33.j32.j31.j30.j29.j28.j27.j26.j25.j24.j23.j22.j21.j20.j19.j18.j17.j16.j15.j14.j13.j12.j11.j10.j9.j8.j7.j6.j5.j4.j3.j2.j1.j0",
14+
"result": {}
15+
},
16+
{
17+
"name": "deep_nesting_50_pipe",
18+
"expression": "j49|j48|j47|j46|j45|j44|j43|j42|j41|j40|j39|j38|j37|j36|j35|j34|j33|j32|j31|j30|j29|j28|j27|j26|j25|j24|j23|j22|j21|j20|j19|j18|j17|j16|j15|j14|j13|j12|j11|j10|j9|j8|j7|j6|j5|j4|j3|j2|j1|j0",
19+
"result": {}
20+
},
21+
{
22+
"name": "deep_nesting_50_index",
23+
"expression": "[49][48][47][46][45][44][43][42][41][40][39][38][37][36][35][34][33][32][31][30][29][28][27][26][25][24][23][22][21][20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1][0]",
24+
"result": null
25+
}
26+
]
2727
}]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[{
2+
"description": "Deep projections",
3+
"given":
4+
{"a": []},
5+
"cases": [
6+
{
7+
"name": "deep_projection_104",
8+
"expression": "a[*].b[*].c[*].d[*].e[*].f[*].g[*].h[*].i[*].j[*].k[*].l[*].m[*].n[*].o[*].p[*].q[*].r[*].s[*].t[*].u[*].v[*].w[*].x[*].y[*].z[*].a[*].b[*].c[*].d[*].e[*].f[*].g[*].h[*].i[*].j[*].k[*].l[*].m[*].n[*].o[*].p[*].q[*].r[*].s[*].t[*].u[*].v[*].w[*].x[*].y[*].z[*].a[*].b[*].c[*].d[*].e[*].f[*].g[*].h[*].i[*].j[*].k[*].l[*].m[*].n[*].o[*].p[*].q[*].r[*].s[*].t[*].u[*].v[*].w[*].x[*].y[*].z[*].a[*].b[*].c[*].d[*].e[*].f[*].g[*].h[*].i[*].j[*].k[*].l[*].m[*].n[*].o[*].p[*].q[*].r[*].s[*].t[*].u[*].v[*].w[*].x[*].y[*].z[*]",
9+
"result": []
10+
}
11+
]
12+
}]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[{
2+
"description": "Deep projections",
3+
"given":
4+
[749, 222, 102, 148, 869, 848, 326, 644, 402, 150, 361, 827, 741, 60, 842, 943, 214, 519, 134, 866, 621, 851, 59, 580, 760, 576, 951, 989, 266, 259, 809, 643, 292, 731, 129, 970, 589, 430, 690, 715, 901, 491, 276, 88, 738, 282, 547, 349, 236, 879, 403, 557, 554, 23, 649, 720, 531, 2, 601, 152, 530, 477, 568, 122, 811, 75, 181, 203, 683, 152, 794, 155, 54, 314, 957, 468, 740, 532, 504, 806, 927, 827, 840, 100, 519, 357, 536, 398, 417, 543, 599, 383, 144, 772, 988, 184, 118, 921, 497, 193, 320, 919, 583, 346, 575, 143, 866, 907, 570, 255, 539, 164, 764, 256, 315, 305, 960, 587, 804, 577, 667, 869, 563, 956, 677, 469, 934, 52, 323, 933, 398, 305, 138, 133, 443, 419, 717, 838, 287, 177, 192, 210, 892, 319, 470, 76, 643, 737, 135, 425, 586, 882, 844, 113, 268, 323, 938, 569, 374, 295, 648, 27, 703, 530, 667, 118, 176, 972, 611, 60, 47, 19, 500, 344, 332, 452, 647, 388, 188, 235, 151, 353, 219, 766, 626, 885, 456, 182, 363, 617, 236, 285, 152, 87, 666, 429, 599, 762, 13, 778, 634, 43, 199, 361, 300, 370, 957, 488, 359, 354, 972, 368, 482, 88, 766, 709, 804, 637, 368, 950, 752, 932, 638, 291, 177, 739, 740, 357, 928, 964, 621, 472, 813, 36, 271, 642, 3, 771, 397, 670, 324, 244, 827, 194, 693, 846, 351, 668, 911, 600, 682, 735, 26, 876, 581, 915, 184, 263, 857, 960, 5, 523, 932, 694, 457, 739, 897, 28, 794, 885, 77, 768, 39, 763, 748, 792, 60, 582, 667, 909, 820, 898, 569, 252, 583, 237, 677, 613, 914, 956, 541, 297, 853, 581, 118, 888, 368, 156, 582, 183],
5+
"cases": [
6+
{
7+
"name": "min sort with slice",
8+
"expression": "sort(@)[:3]",
9+
"result": [2, 3, 5]
10+
},
11+
{
12+
"name": "max sort with slice",
13+
"expression": "sort(@)[-3:]",
14+
"result": [972, 988, 989]
15+
}
16+
]
17+
}]

0 commit comments

Comments
 (0)