New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Produce profiles in google trace format #17702
Conversation
@coqbot bench |
Bench failed to upload artifacts (too large) There are some approaches we could use to limit artifact size
Probably the second is more reasonable. |
(that last fiat_crypto_via_setoid_rewrite_standalone is 19GB uncompressed BTW) |
Is .gz the best compression we can do? |
As written in Zulip also note:
|
I put some numbers in the "coq_makefile ..." commit |
🏁 Bench results:
🐢 Top 25 slow downs┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 128.4610 397.8810 269.4200 209.73% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 128.2650 397.5770 269.3120 209.97% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 16.6800 70.3260 53.6460 321.62% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 7.2500 34.3630 27.1130 373.97% 31 coq-performance-tests-lite/src/pattern.v.html │ │ 3.2990 16.9060 13.6070 412.46% 30 coq-performance-tests-lite/src/pattern.v.html │ │ 3.6040 12.2950 8.6910 241.15% 652 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 3.8660 12.4840 8.6180 222.92% 623 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 1.5300 8.3470 6.8170 445.56% 29 coq-performance-tests-lite/src/pattern.v.html │ │ 0.7530 4.1390 3.3860 449.67% 28 coq-performance-tests-lite/src/pattern.v.html │ │ 40.2010 42.2840 2.0830 5.18% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 3.1320 4.0530 0.9210 29.41% 32 coq-performance-tests-lite/src/n_polymorphic_universes.v.html │ │ 0.1270 0.5630 0.4360 343.31% 133 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.1260 0.5170 0.3910 310.32% 190 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 2.4680 2.7840 0.3160 12.80% 1001 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 0.0570 0.3010 0.2440 428.07% 162 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 1.3240 1.5670 0.2430 18.35% 566 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 1.2680 1.4820 0.2140 16.88% 853 coq-stdlib/FSets/FMapAVL.v.html │ │ 2.1660 2.3390 0.1730 7.99% 736 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 0.0630 0.2360 0.1730 274.60% 219 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.0050 0.1610 0.1560 3120.00% 730 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 0.1890 0.3330 0.1440 76.19% 905 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 0.0030 0.1470 0.1440 4800.00% 878 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.3850 0.5240 0.1390 36.10% 301 coq-stdlib/Reals/Abstract/ConstructiveLimits.v.html │ │ 0.2680 0.4030 0.1350 50.37% 198 coq-stdlib/setoid_ring/Ncring_initial.v.html │ │ 0.0000 0.1330 0.1330 inf% 1901 coq-stdlib/FSets/FMapFacts.v.html │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 3.5990 2.7840 -0.8150 -22.65% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 3.1640 2.5100 -0.6540 -20.67% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 1.9620 1.4700 -0.4920 -25.08% 209 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 1.1030 0.8410 -0.2620 -23.75% 384 coq-stdlib/MSets/MSetAVL.v.html │ │ 1.3870 1.1900 -0.1970 -14.20% 316 coq-stdlib/Strings/Byte.v.html │ │ 1.0770 0.8810 -0.1960 -18.20% 170 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 0.8640 0.6810 -0.1830 -21.18% 203 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 1.4020 1.2280 -0.1740 -12.41% 374 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.7140 0.5460 -0.1680 -23.53% 343 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.3690 0.2070 -0.1620 -43.90% 637 coq-stdlib/Reals/Abstract/ConstructiveSum.v.html │ │ 0.8930 0.7320 -0.1610 -18.03% 160 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 0.1780 0.0200 -0.1580 -88.76% 1307 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1520 0.0010 -0.1510 -99.34% 1903 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.3530 0.2040 -0.1490 -42.21% 204 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 0.3710 0.2240 -0.1470 -39.62% 637 coq-stdlib/Reals/Abstract/ConstructiveSum.v.html │ │ 0.1610 0.0140 -0.1470 -91.30% 1201 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.1470 0.0000 -0.1470 -100.00% 1910 coq-stdlib/FSets/FMapFacts.v.html │ │ 0.4810 0.3350 -0.1460 -30.35% 705 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 1.0090 0.8680 -0.1410 -13.97% 200 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 0.2500 0.1100 -0.1400 -56.00% 351 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 0.3010 0.1640 -0.1370 -45.51% 2037 coq-stdlib/FSets/FMapAVL.v.html │ │ 0.2730 0.1380 -0.1350 -49.45% 1845 coq-stdlib/FSets/FMapAVL.v.html │ │ 0.1340 0.0020 -0.1320 -98.51% 679 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1460 0.0150 -0.1310 -89.73% 396 coq-stdlib/MSets/MSetAVL.v.html │ │ 0.1230 0.0000 -0.1230 -100.00% 768 coq-stdlib/QArith/QArith_base.v.html │ └──────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
Summary of {
"args": {
"subtimes": {
"Conversion": "5.33E+07 us, 12974960 calls",
"Typeops.infer": "6.27E+04 us, 269 calls",
"check-wf-univs": "3.45E+03 us, 269 calls",
"close_proof": "3.47E+03 us, 76 calls",
"command": "8.24E+08 us, 509 calls",
"init": "5.45E+03 us, 1 call",
"intern": "1.79E+05 us, 806 calls",
"interp": "8.24E+08 us, 433 calls",
"interp-delayed-qed": "2.63E+04 us, 76 calls",
"kernel": "1.2E+05 us, 1377 calls",
"parse_command": "2.87E+04 us, 510 calls",
"pretyping": "1.43E+07 us, 3083964 calls",
"synterp": "5.78E+04 us, 433 calls",
"typeclass search": "1.2E+08 us, 2677 calls",
"unfreeze_full_state": "1.01E+04 us, 736 calls",
"unification": "2.45E+08 us, 67171072 calls",
"universes_of_constr": "2.33E+03 us, 422 calls"
},
"major": "4.65E+08 w",
"minor": "3.12E+11 w"
},
"name": "process",
"ph": "E",
"ts": 1686235869987325,
"pid": 30626,
"tid": 30626
} |
This looks very interesting. I could see this becoming a less noisy alternative to Do you know that printing directly won't lead to skewed results? When I implemented profiling in Mtac2 I had no choice but to collect everything into a list because the printing alone would distort nested events to the point of being unusable for any kind of microbenchmarks. It can be especially annoying when events have very different durations because the smallest events would be most affected by printing happening within them whereas for larger events it would almost make no difference, relatively speaking. One thing that would improve the usefulness of this change for me would be to use |
🏁 Bench results:
🐢 Top 25 slow downs┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 130.9890 343.7220 212.7330 162.41% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 130.7900 342.2090 211.4190 161.65% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 16.1390 59.6230 43.4840 269.43% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 7.1610 29.5620 22.4010 312.82% 31 coq-performance-tests-lite/src/pattern.v.html │ │ 3.2100 14.4190 11.2090 349.19% 30 coq-performance-tests-lite/src/pattern.v.html │ │ 3.6430 10.4640 6.8210 187.24% 652 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 3.9110 10.6390 6.7280 172.03% 623 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 1.5010 7.0500 5.5490 369.69% 29 coq-performance-tests-lite/src/pattern.v.html │ │ 0.7500 3.5040 2.7540 367.20% 28 coq-performance-tests-lite/src/pattern.v.html │ │ 40.4680 42.3610 1.8930 4.68% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 2.3530 3.1510 0.7980 33.91% 736 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 3.1540 3.8680 0.7140 22.64% 32 coq-performance-tests-lite/src/n_polymorphic_universes.v.html │ │ 0.8750 1.3820 0.5070 57.94% 382 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 2.8470 3.3100 0.4630 16.26% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 0.1300 0.4800 0.3500 269.23% 133 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.1290 0.4430 0.3140 243.41% 190 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 1.4340 1.7060 0.2720 18.97% 316 coq-stdlib/Strings/Byte.v.html │ │ 0.2450 0.4920 0.2470 100.82% 12 coq-stdlib/MSets/MSets.v.html │ │ 0.0640 0.2630 0.1990 310.94% 219 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.1280 0.3180 0.1900 148.44% 579 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.3710 0.5560 0.1850 49.87% 301 coq-stdlib/Reals/Abstract/ConstructiveLimits.v.html │ │ 0.1550 0.3230 0.1680 108.39% 811 coq-stdlib/Reals/Abstract/ConstructiveReals.v.html │ │ 0.4420 0.6050 0.1630 36.88% 353 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.1600 0.3110 0.1510 94.38% 431 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 0.0050 0.1540 0.1490 2980.00% 730 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 1.9730 1.5280 -0.4450 -22.55% 209 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 1.1280 0.7890 -0.3390 -30.05% 813 coq-stdlib/MSets/MSetRBT.v.html │ │ 1.1060 0.7920 -0.3140 -28.39% 200 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 1.3430 1.0510 -0.2920 -21.74% 467 coq-stdlib/Numbers/DecimalFacts.v.html │ │ 0.6360 0.3680 -0.2680 -42.14% 868 coq-stdlib/MSets/MSetRBT.v.html │ │ 1.1480 0.9000 -0.2480 -21.60% 170 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 0.9730 0.7470 -0.2260 -23.23% 203 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 2.7260 2.5130 -0.2130 -7.81% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 0.5060 0.2970 -0.2090 -41.30% 313 coq-stdlib/Reals/Abstract/ConstructiveLUB.v.html │ │ 0.9860 0.7880 -0.1980 -20.08% 160 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 0.6750 0.4780 -0.1970 -29.19% 564 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.1770 0.0200 -0.1570 -88.70% 1307 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.3200 0.1670 -0.1530 -47.81% 315 coq-stdlib/Reals/Abstract/ConstructiveLUB.v.html │ │ 0.5840 0.4310 -0.1530 -26.20% 387 coq-stdlib/Reals/Abstract/ConstructiveLimits.v.html │ │ 0.1530 0.0010 -0.1520 -99.35% 1903 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1800 0.0350 -0.1450 -80.56% 880 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.1380 0.0000 -0.1380 -100.00% 1426 coq-stdlib/FSets/FMapFacts.v.html │ │ 0.1280 0.0000 -0.1280 -100.00% 1910 coq-stdlib/FSets/FMapFacts.v.html │ │ 0.1320 0.0070 -0.1250 -94.70% 1008 coq-stdlib/setoid_ring/Field_theory.v.html │ │ 0.1430 0.0180 -0.1250 -87.41% 214 coq-stdlib/MSets/MSetProperties.v.html │ │ 0.1250 0.0020 -0.1230 -98.40% 679 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1360 0.0180 -0.1180 -86.76% 1201 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.2550 0.1370 -0.1180 -46.27% 12 coq-stdlib/Reals/Abstract/ConstructiveMinMax.v.html │ │ 0.3480 0.2300 -0.1180 -33.91% 14 coq-stdlib/Numbers/Cyclic/Int63/Ring63.v.html │ │ 0.2530 0.1360 -0.1170 -46.25% 1845 coq-stdlib/FSets/FMapAVL.v.html │ └──────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
🏁 Bench results:
🐢 Top 25 slow downs┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 129.2910 341.9850 212.6940 164.51% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 129.0450 340.8540 211.8090 164.14% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 16.1140 58.3800 42.2660 262.29% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 7.1720 28.7550 21.5830 300.93% 31 coq-performance-tests-lite/src/pattern.v.html │ │ 3.2110 14.0170 10.8060 336.53% 30 coq-performance-tests-lite/src/pattern.v.html │ │ 3.6120 10.4900 6.8780 190.42% 652 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 3.8230 10.6710 6.8480 179.13% 623 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 1.4990 6.8820 5.3830 359.11% 29 coq-performance-tests-lite/src/pattern.v.html │ │ 0.7410 3.4190 2.6780 361.40% 28 coq-performance-tests-lite/src/pattern.v.html │ │ 3.1420 3.8480 0.7060 22.47% 32 coq-performance-tests-lite/src/n_polymorphic_universes.v.html │ │ 0.1290 0.4870 0.3580 277.52% 133 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 1.1540 1.4730 0.3190 27.64% 853 coq-stdlib/FSets/FMapAVL.v.html │ │ 0.1250 0.3760 0.2510 200.80% 190 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.3420 0.5760 0.2340 68.42% 870 coq-stdlib/MSets/MSetRBT.v.html │ │ 1.2780 1.4940 0.2160 16.90% 372 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 1.1570 1.3680 0.2110 18.24% 374 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.6140 0.8180 0.2040 33.22% 203 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 0.0950 0.2820 0.1870 196.84% 312 coq-stdlib/Reals/Abstract/ConstructiveAbs.v.html │ │ 0.1780 0.3470 0.1690 94.94% 385 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 0.6440 0.8130 0.1690 26.24% 813 coq-stdlib/MSets/MSetRBT.v.html │ │ 0.0030 0.1590 0.1560 5200.00% 1303 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.0580 0.2090 0.1510 260.34% 162 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ │ 0.0030 0.1510 0.1480 4933.33% 1190 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.0520 0.1950 0.1430 275.00% 1885 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.0630 0.2030 0.1400 222.22% 219 coq-performance-tests-lite/PerformanceExperiments/Harness.v.html │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 41.0630 40.5630 -0.5000 -1.22% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 1.5740 1.1670 -0.4070 -25.86% 566 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 2.8060 2.4730 -0.3330 -11.87% 1001 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 0.8390 0.5570 -0.2820 -33.61% 211 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 3.6010 3.3790 -0.2220 -6.16% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 3.0620 2.8720 -0.1900 -6.21% 736 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 1.9360 1.7540 -0.1820 -9.40% 583 coq-stdlib/Strings/Byte.v.html │ │ 0.1480 0.0010 -0.1470 -99.32% 1903 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1770 0.0350 -0.1420 -80.23% 1307 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1460 0.0080 -0.1380 -94.52% 214 coq-stdlib/MSets/MSetProperties.v.html │ │ 0.2880 0.1550 -0.1330 -46.18% 1845 coq-stdlib/FSets/FMapAVL.v.html │ │ 0.1550 0.0230 -0.1320 -85.16% 1201 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.1630 0.0320 -0.1310 -80.37% 880 coq-stdlib/Reals/Abstract/ConstructiveRealsMorphisms.v.html │ │ 0.1390 0.0080 -0.1310 -94.24% 1008 coq-stdlib/setoid_ring/Field_theory.v.html │ │ 0.1310 0.0030 -0.1280 -97.71% 679 coq-stdlib/Numbers/Cyclic/Int31/Cyclic31.v.html │ │ 0.1270 0.0000 -0.1270 -100.00% 768 coq-stdlib/QArith/QArith_base.v.html │ │ 0.3470 0.2330 -0.1140 -32.85% 719 coq-stdlib/MSets/MSetRBT.v.html │ │ 0.1170 0.0090 -0.1080 -92.31% 644 coq-stdlib/ZArith/Znumtheory.v.html │ │ 0.2560 0.1490 -0.1070 -41.80% 1097 coq-stdlib/Reals/Abstract/ConstructiveReals.v.html │ │ 0.1320 0.0270 -0.1050 -79.55% 396 coq-stdlib/MSets/MSetAVL.v.html │ │ 0.3170 0.2150 -0.1020 -32.18% 11 coq-stdlib/Reals/Alembert.v.html │ │ 0.3040 0.2030 -0.1010 -33.22% 11 coq-stdlib/setoid_ring/Rings_Q.v.html │ │ 0.3370 0.2410 -0.0960 -28.49% 637 coq-stdlib/Reals/Abstract/ConstructiveSum.v.html │ │ 0.1070 0.0110 -0.0960 -89.72% 136 coq-stdlib/Reals/Abstract/ConstructiveMinMax.v.html │ │ 0.3400 0.2450 -0.0950 -27.94% 14 coq-stdlib/Numbers/Cyclic/Abstract/NZCyclic.v.html │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
IMHO a useful thing to have in a performance metric summary is a way to identify which calls are most costly, that is to say, "anomalous". For example it could be the case that the typechecking of some file is dominated by conversion or unification, but the interesting bit there is to try to know which calls are taking more time than they should. |
@coqbot bench |
🏁 Bench results:
INFO: failed to install 🐢 Top 25 slow downs┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 131.7620 136.0200 4.2580 3.23% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 131.9730 136.2060 4.2330 3.21% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 64.9830 68.6370 3.6540 5.62% 103 coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html │ │ 124.0760 126.6460 2.5700 2.07% 22 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 15.8240 17.8800 2.0560 12.99% 31 coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html │ │ 15.4360 17.2610 1.8250 11.82% 3158 coq-fiat-crypto-with-bedrock/src/Assembly/WithBedrock/Proofs.v.html │ │ 80.4790 82.2730 1.7940 2.23% 20 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html │ │ 38.2010 39.7540 1.5530 4.07% 835 coq-fiat-crypto-with-bedrock/src/Fancy/Compiler.v.html │ │ 80.8610 82.3750 1.5140 1.87% 618 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 111.4520 112.8850 1.4330 1.29% 48 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 8.5960 9.9800 1.3840 16.10% 496 coq-rewriter/src/Rewriter/Rewriter/Wf.v.html │ │ 8.4830 9.8480 1.3650 16.09% 496 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html │ │ 14.7030 16.0080 1.3050 8.88% 417 coq-verdi-raft/raft-proofs/LeaderLogsLogMatchingProof.v.html │ │ 16.0880 17.2880 1.2000 7.46% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 9.9570 11.1280 1.1710 11.76% 827 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 20.6660 21.6550 0.9890 4.79% 1495 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Examples/UnivalentKleisliEnriched.v.html │ │ 8.1280 9.0990 0.9710 11.95% 828 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 13.0690 14.0390 0.9700 7.42% 3090 coq-fiat-crypto-with-bedrock/src/Assembly/WithBedrock/Proofs.v.html │ │ 9.3870 10.3020 0.9150 9.75% 1271 coq-verdi-raft/raft/CommonTheorems.v.html │ │ 7.5740 8.4750 0.9010 11.90% 829 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 5.5160 6.3900 0.8740 15.84% 1391 coq-perennial/src/program_proof/aof/proof.v.html │ │ 6.8840 7.7110 0.8270 12.01% 830 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 26.9860 27.8030 0.8170 3.03% 12 coq-fourcolor/theories/job486to489.v.html │ │ 8.6800 9.4730 0.7930 9.14% 914 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 14.0140 14.8000 0.7860 5.61% 317 coq-fiat-crypto-with-bedrock/src/Bedrock/Group/ScalarMult/MontgomeryLadder.v.html │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 42.4280 40.5370 -1.8910 -4.46% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 20.2850 18.5320 -1.7530 -8.64% 808 coq-perennial/src/program_proof/wal/logger_proof.v.html │ │ 43.2500 41.6700 -1.5800 -3.65% 236 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 42.8190 41.2620 -1.5570 -3.64% 236 coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 50.0490 48.6430 -1.4060 -2.81% 365 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 41.2960 39.9590 -1.3370 -3.24% 368 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 35.2910 34.3720 -0.9190 -2.60% 548 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html │ │ 32.6550 31.7870 -0.8680 -2.66% 1333 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 25.1750 24.3400 -0.8350 -3.32% 20 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 25.1650 24.3680 -0.7970 -3.17% 25 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 8.6360 7.9260 -0.7100 -8.22% 723 coq-perennial/src/program_proof/simplepb/simplelog/proof.v.html │ │ 19.7390 19.0580 -0.6810 -3.45% 28 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 7.3330 6.7080 -0.6250 -8.52% 860 coq-fiat-crypto-with-bedrock/src/Fancy/Compiler.v.html │ │ 47.1310 46.5530 -0.5780 -1.23% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 1.4750 0.9200 -0.5550 -37.63% 382 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 159.1880 158.6410 -0.5470 -0.34% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 5.3000 4.8840 -0.4160 -7.85% 747 coq-perennial/src/program_proof/fencing/frontend_proof.v.html │ │ 13.1140 12.7050 -0.4090 -3.12% 15 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 1.0650 0.6750 -0.3900 -36.62% 816 coq-stdlib/MSets/MSetRBT.v.html │ │ 4.9100 4.5260 -0.3840 -7.82% 620 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Examples/FunctorCategory.v.html │ │ 4.5690 4.2040 -0.3650 -7.99% 2764 coq-iris-examples/theories/logatom/herlihy_wing_queue/hwq.v.html │ │ 25.8880 25.5330 -0.3550 -1.37% 2293 coq-perennial/src/goose_lang/logical_reln_fund.v.html │ │ 80.9240 80.5830 -0.3410 -0.42% 618 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 52.4290 52.0900 -0.3390 -0.65% 50 coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html │ │ 0.3810 0.0470 -0.3340 -87.66% 1447 coq-perennial/src/program_proof/aof/proof.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
Unrelated bench https://gitlab.com/coq/coq/-/jobs/4488727880: 126MB artifacts |
Removed the minimum time based skip @coqbot bench |
🏁 Bench results:
INFO: failed to install 🐢 Top 25 slow downs┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 129.7760 137.9340 8.1580 6.29% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 130.1090 138.0960 7.9870 6.14% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 65.3640 68.3280 2.9640 4.53% 103 coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html │ │ 123.7510 126.4160 2.6650 2.15% 22 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 112.5270 114.5930 2.0660 1.84% 48 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 15.9230 17.7890 1.8660 11.72% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 51.8080 53.5420 1.7340 3.35% 915 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 15.3370 17.0670 1.7300 11.28% 3158 coq-fiat-crypto-with-bedrock/src/Assembly/WithBedrock/Proofs.v.html │ │ 212.1770 213.8190 1.6420 0.77% 141 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 8.4590 10.0370 1.5780 18.65% 496 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html │ │ 16.2480 17.8260 1.5780 9.71% 31 coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html │ │ 38.1720 39.6450 1.4730 3.86% 835 coq-fiat-crypto-with-bedrock/src/Fancy/Compiler.v.html │ │ 8.4020 9.8750 1.4730 17.53% 496 coq-rewriter/src/Rewriter/Rewriter/Wf.v.html │ │ 14.5390 15.7420 1.2030 8.27% 417 coq-verdi-raft/raft-proofs/LeaderLogsLogMatchingProof.v.html │ │ 80.2860 81.3220 1.0360 1.29% 20 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html │ │ 8.6630 9.6580 0.9950 11.49% 192 coq-vst/veric/binop_lemmas5.v.html │ │ 122.2010 123.1870 0.9860 0.81% 155 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 13.7030 14.6450 0.9420 6.87% 615 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlattenExpr.v.html │ │ 13.0590 13.9590 0.9000 6.89% 3090 coq-fiat-crypto-with-bedrock/src/Assembly/WithBedrock/Proofs.v.html │ │ 10.0010 10.8660 0.8650 8.65% 827 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 13.7710 14.6300 0.8590 6.24% 613 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlattenExpr.v.html │ │ 59.2910 60.1360 0.8450 1.43% 27 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html │ │ 9.4840 10.3100 0.8260 8.71% 1271 coq-verdi-raft/raft/CommonTheorems.v.html │ │ 5.2650 6.0730 0.8080 15.35% 172 coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html │ │ 8.5640 9.3560 0.7920 9.25% 1078 coq-perennial/src/program_proof/grove_shared/urpc_proof.v.html │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 33.9990 31.4090 -2.5900 -7.62% 1730 coq-perennial/src/program_proof/simplepb/simplelog/proof.v.html │ │ 22.8720 20.6170 -2.2550 -9.86% 1357 coq-perennial/src/program_proof/wal/installer_proof.v.html │ │ 81.9990 80.4350 -1.5640 -1.91% 618 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 82.6760 81.2620 -1.4140 -1.71% 618 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 47.0140 46.1810 -0.8330 -1.77% 558 coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 36.7740 35.9690 -0.8050 -2.19% 522 coq-perennial/src/program_proof/txn/twophase_refinement_proof.v.html │ │ 7.9460 7.1430 -0.8030 -10.11% 881 coq-vst/veric/binop_lemmas4.v.html │ │ 46.9620 46.1820 -0.7800 -1.66% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 158.0850 157.3090 -0.7760 -0.49% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 2.7970 2.1020 -0.6950 -24.85% 736 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 8.6660 8.0410 -0.6250 -7.21% 723 coq-perennial/src/program_proof/simplepb/simplelog/proof.v.html │ │ 9.9220 9.3910 -0.5310 -5.35% 40 coq-fiat-crypto-with-bedrock/src/PushButtonSynthesis/SolinasReductionReificationCache.v.html │ │ 4.6420 4.1230 -0.5190 -11.18% 130 coq-category-theory/Functor/Strong/Product.v.html │ │ 1.3740 0.8550 -0.5190 -37.77% 382 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 28.2490 27.7600 -0.4890 -1.73% 194 coq-vst/veric/expr_lemmas4.v.html │ │ 13.8180 13.3590 -0.4590 -3.32% 187 coq-perennial/src/goose_lang/interpreter/disk_interpreter.v.html │ │ 52.6490 52.1920 -0.4570 -0.87% 50 coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html │ │ 30.2440 29.8040 -0.4400 -1.45% 12 coq-fourcolor/theories/job190to206.v.html │ │ 5.7600 5.3460 -0.4140 -7.19% 429 coq-perennial/src/program_proof/grove_shared/urpc_proof.v.html │ │ 1.0660 0.6660 -0.4000 -37.52% 200 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 1.5820 1.2540 -0.3280 -20.73% 1874 coq-perennial/src/program_proof/wal/recovery_proof.v.html │ │ 1.5000 1.1760 -0.3240 -21.60% 372 coq-stdlib/setoid_ring/Ncring_polynom.v.html │ │ 3.2520 2.9300 -0.3220 -9.90% 1409 coq-perennial/src/program_proof/wal/installer_proof.v.html │ │ 4.3010 3.9880 -0.3130 -7.28% 128 coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html │ │ 29.0360 28.7290 -0.3070 -1.06% 147 coq-vst/veric/expr_lemmas4.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
https://gitlab.com/coq/coq/-/jobs/4498167930: 240MB artifacts |
The largest is for https://github.com/thery/coqprime/blob/master/src/Coqprime/examples/BasePrimes.v which is a file with 25k commands. The .gz is 1.3MiB. |
profiles seem to compress well, for instance from profiling Hurkens: - .vo: 48KB (for reference) - .prof.json: 2.6MB - .prof.json.gz: 144KB (compression level 6 (default)) - .prof.json.gz: 124KB (compression level 9 (best)) - .prof.json.xz: 108KB (compression level 6 (default); also 9) - .prof.json.7z: 116KB - .prof.json.zip: 124KB (compression level 9) The chrome displayer supports importing straight from gzip so we use that.
…args although this could be computed afterwards this makes it easier to display nb because we sum floats accuracy may be shit
…OMPONENTS This interacts a bit weirdly with the minimum duration based skip, but maybe I'll remove the skip if this works well enough.
Co-authored-by: Jim Fehrle <jim.fehrle@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We will address the API tweaks in a further PR.
The issue of what JSON library Coq should use is referred to the next call.
I considered printing to a buffer originally but using Printf.fprintf in the subprints forces out_channel which confused me. |
Yes. IMHO the current default is good for coqc, it is better to flush directly to disk than to take valious RAM. Finer printing is only needed when you want to recheck only a part of the document. |
I think I understand better what you want after thinking about this printf / format stuff, cf new commits |
Thanks Gaëtan, this will be a good basis to start implementing the incremental support. I'm happy to merge now, not sure if we want to run the full CI tho? Gonna do it "just in case" I'd be nice to have the |
@coqbot run full CI |
|
||
let f fmt = match !accu with | ||
| None -> assert false | ||
| Some { ch } -> Format.fprintf ch fmt |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@SkySkimmer you may want to add a flush here if you want to have fully synchonous semantics, Format
can buffer aggresively some times.
This can also be done using the specifier %!
, or via the kprintf
family of functions.
@coqbot: merge now |
Still note the comments about flush, that could need a tweak in a further PR. |
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
Reviewed-by: ejgallego Reviewed-by: gares Ack-by: jfehrle Ack-by: rlepigre Co-authored-by: ejgallego <ejgallego@users.noreply.github.com>
(trace format doc: https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit)
display using https://profiler.firefox.com/
or https://ui.perfetto.dev/
(or in chrome's builtin display but I didn't test it)
Example visualization (in perfetto):
peano_naturals from HoTT (1MB gzipped)
hurkens from stdlib (3MB uncompressed, 170KB gzipped)
example from
uconstr:
for Ltac2? #13977 (120MB uncompressed, 4MB gzipped)