[ruby-core:121682] [Ruby Bug#19288] Ractor JSON parsing significantly slower than linear parsing
From:
"jhawthorn (John Hawthorn) via ruby-core" <ruby-core@...>
Date:
2025-04-18 05:26:42 UTC
List:
ruby-core #121682
SXNzdWUgIzE5Mjg4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamhhd3Rob3JuIChKb2huIEhhd3Rob3Ju KS4NCg0KU3RhdHVzIGNoYW5nZWQgZnJvbSBPcGVuIHRvIENsb3NlZA0KDQpJJ3ZlIG1hZGUgYSBj b3VwbGUgY2hhbmdlcyB3aGljaCBzaG91bGQgaW1wcm92ZSB0aGlzLiBUaGlzIGlzIGEgYml0IG9m IGFuIG9kZCBiZW5jaG1hcmsgYXMgdGhlIGtleXMgYXJlIGFsd2F5cyByYW5kb20gKHdoaWNoIEkg dGhpbmsgd291bGQgYmUgcXVpdGUgdW5jb21tb24gaW4gcmVhbCBKU09OIHBhcnNpbmcgc2l0dWF0 aW9ucykuIEJ1dCB0aGlzIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIGJlbmNobWFyayBmb3Igc29t ZSB3b3JzdCBjYXNlIGJlaGF2aW91cnMuDQoNClRoZSB0d28gdGhpbmdzIHRoaXMgYmVuY2htYXJr IGlzIGV4ZXJjaXNpbmcsIGFzIG90aGVycyBoYXZlIHBvaW50ZWQgb3V0LCBpcyBmbG9hdCBwYXJz aW5nIGFuZCBpbnNlcnRpb24gaW50byB0aGUgZnN0cmluZyB0YWJsZS4NCg0KVGhlIGZpcnN0IGNo YW5nZSBpcyBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvMTI5OTEsIHdoaWNoIHJl bW92ZXMgYSBzcGlubG9jayBpbiBgZHRvYS5jYCBmb3IgYmlnbnVtIG1lbW9yeSBtYW5hZ2VtZW50 IChCYWxsb2MvQmZyZWUpLg0KDQpUaGUgc2Vjb25kIGNoYW5nZSBpcyBodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy9pc3N1ZXMvMjEyNjggLyBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1 bGwvMTI5MjEsIHdoaWNoIEkndmUganVzdCBtZXJnZWQgKE5CLiBpdCAqKmlzbid0KiogaW4gcHJl dmlldzEpLg0KDQpXaXRoIHRoZXNlIHR3byBJIGJlbGlldmUgdGhlIG1haW4gYm90dGxlbmVja3Mg b2YgdGhpcyBiZW5jaG1hcmsgaGF2ZSBiZWVuIHJlbW92ZWQuIFRob3VnaCBwZXJmb3JtYW5jZSBj YW4gYWx3YXlzIGJlIGltcHJvdmVkLCB0aGVzZSBhcmUgbm93IGZhc3RlciB1bmRlciBSYWN0b3Jz IHRoYW4gc2VyaWFsLiBUaGUgbWFpbiBjb250ZW50aW9uIGlzIG5vdyBHQyBwcmVzc3VyZSBjYXVz ZWQgYnkgdGhlIEpTT04gYmVpbmcgcGFyc2VkIChpbiBwYXJ0aWN1bGFyIHRoZSByYW5kb20gc3Ry aW5nIGtleXMsIEkgd291bGQgZXhwZWN0IGEgbW9yZSByZWFzb25hYmxlIHNldCBvZiBKU09OIHRv IHBlcmZvcm0gZXZlbiBiZXR0ZXIpLg0KDQotLS0NCg0KKipPcmlnaW5hbCBiZW5jaG1hcmsqKg0K DQpgYGANClNlcmlhbCAtIFJ1YnkgMy40LjINCiAgMC45OTUxODYgICAwLjAzMDEzMSAgIDEuMDI1 MzE3ICggIDEuMDI1NDM5KQ0KDQpTZXJpYWwgLSBSdWJ5IG1hc3RlckAzYTI5ZTgzNWU2OTE4NzMz MGJiM2ZlZTAzNWYxMjg5NTYxZGU1ZGFkDQogIDAuOTMzNjUwICAgMC4wMTQxMTkgICAwLjk0Nzc2 OSAoICAwLjk0Nzc4MCkNCg0KUmFjdG9ycyAtIFJ1YnkgMy40LjINCiAxMC44NzU1MDcgICAxLjYw MDc5NyAgMTIuNDc2MzA0ICggIDMuMzgwOTI2KQ0KDQpSYWN0b3JzIC0gUnVieSBtYXN0ZXJAM2Ey OWU4MzVlNjkxODczMzBiYjNmZWUwMzVmMTI4OTU2MWRlNWRhZA0KICAxLjQ5MDM2OSAgIDAuMTky NjI0ICAgMS42ODI5OTMgKCAgMC43NDk3NDcpDQpgYGANCg0KDQoqKkVyZWdvbidzIGltcHJvdmVk IGJlbmNobWFyayAtIHdpdGggc2hhcmVhYmxlIG9iamVjdHMqKg0KDQpgYGANClNlcmlhbCAtIFJ1 YnkgMy40LjINCiAgMC45ODIwMTggICAwLjAzNTAwMyAgIDEuMDE3MDIxICggIDEuMDE3ODE2KQ0K DQpTZXJpYWwgLSBSdWJ5IG1hc3RlckAzYTI5ZTgzNWU2OTE4NzMzMGJiM2ZlZTAzNWYxMjg5NTYx ZGU1ZGFkDQogIDAuOTgxOTY2ICAgMC4wMjY2MzUgICAxLjAwODYwMSAoICAxLjAwODU5MykNCg0K UmFjdG9ycyAtIFJ1YnkgMy40LjINCiAxMi4yMzI3NjYgICAxLjc3MjY1MyAgMTQuMDA1NDE5ICgg IDMuNTc4NTU5KQ0KDQpSYWN0b3JzIC0gUnVieSBtYXN0ZXJAM2EyOWU4MzVlNjkxODczMzBiYjNm ZWUwMzVmMTI4OTU2MWRlNWRhZA0KICAxLjMwMTIwMCAgIDAuMTIyNzI1ICAgMS40MjM5MjUgKCAg MC40NzAzOTUpDQpgYGANCg0KKipMdWtlLWdydSdzIEJlbmNobWFyayAtIHdpdGggbm8gc2VuZC9y ZWN2KioNCg0KYGBgDQpCZW5jaG1hcmsgMTogcnVieSAzLjQuMiBzZXJpYWwNCiAgVGltZSAobWVh biDCsSDPgyk6ICAgICA0NTkuNCBtcyDCsSAgMTAuNSBtcyAgICBbVXNlcjogNDQ5LjggbXMsIFN5 c3RlbTogOC44IG1zXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgIDQ1MC43IG1zIOKApiA0Nzgu MiBtcyAgICAxMCBydW5zDQoNCkJlbmNobWFyayAyOiBydWJ5IG1hc3RlciBzZXJpYWwNCiAgVGlt ZSAobWVhbiDCsSDPgyk6ICAgICAzOTEuMiBtcyDCsSAgNjAuNCBtcyAgICBbVXNlcjogMzgxLjcg bXMsIFN5c3RlbTogOC41IG1zXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgIDIyMC4wIG1zIOKA piA0MTkuMCBtcyAgICAxMCBydW5zDQoNCiAgV2FybmluZzogU3RhdGlzdGljYWwgb3V0bGllcnMg d2VyZSBkZXRlY3RlZC4gQ29uc2lkZXIgcmUtcnVubmluZyB0aGlzIGJlbmNobWFyayBvbiBhIHF1 aWV0IHN5c3RlbSB3aXRob3V0IGFueSBpbnRlcmZlcmVuY2VzIGZyb20gb3RoZXIgcHJvZ3JhbXMu IEl0IG1pZ2h0IGhlbHAgdG8gdXNlIHRoZSAnLS13YXJtdXAnIG9yICctLXByZXBhcmUnIG9wdGlv bnMuDQoNCkJlbmNobWFyayAzOiBydWJ5IDMuNC4yIHJhY3RvcnMNCiAgVGltZSAobWVhbiDCsSDP gyk6ICAgICAgMi4yNTggcyDCsSAgMC42ODUgcyAgICBbVXNlcjogMTMuNTg1IHMsIFN5c3RlbTog MC4zNjcgc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAgMC4zMTAgcyDigKYgIDIuNDg0IHMg ICAgMTAgcnVucw0KDQogIFdhcm5pbmc6IFN0YXRpc3RpY2FsIG91dGxpZXJzIHdlcmUgZGV0ZWN0 ZWQuIENvbnNpZGVyIHJlLXJ1bm5pbmcgdGhpcyBiZW5jaG1hcmsgb24gYSBxdWlldCBzeXN0ZW0g d2l0aG91dCBhbnkgaW50ZXJmZXJlbmNlcyBmcm9tIG90aGVyIHByb2dyYW1zLiBJdCBtaWdodCBo ZWxwIHRvIHVzZSB0aGUgJy0td2FybXVwJyBvciAnLS1wcmVwYXJlJyBvcHRpb25zLg0KDQpCZW5j aG1hcmsgNDogcnVieSBtYXN0ZXIgcmFjdG9ycw0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgIDE5 MS4yIG1zIMKxICAxMy44IG1zICAgIFtVc2VyOiA1NDcuMSBtcywgU3lzdGVtOiAxMTAuMyBtc10N CiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAxNDQuMyBtcyDigKYgMjAxLjUgbXMgICAgMTQgcnVu cw0KDQogIFdhcm5pbmc6IFN0YXRpc3RpY2FsIG91dGxpZXJzIHdlcmUgZGV0ZWN0ZWQuIENvbnNp ZGVyIHJlLXJ1bm5pbmcgdGhpcyBiZW5jaG1hcmsgb24gYSBxdWlldCBzeXN0ZW0gd2l0aG91dCBh bnkgaW50ZXJmZXJlbmNlcyBmcm9tIG90aGVyIHByb2dyYW1zLiBJdCBtaWdodCBoZWxwIHRvIHVz ZSB0aGUgJy0td2FybXVwJyBvciAnLS1wcmVwYXJlJyBvcHRpb25zLg0KDQpTdW1tYXJ5DQogIHJ1 YnkgbWFzdGVyIHJhY3RvcnMgcmFuDQogICAgMi4wNSDCsSAwLjM1IHRpbWVzIGZhc3RlciB0aGFu IHJ1YnkgbWFzdGVyIHNlcmlhbA0KICAgIDIuNDAgwrEgMC4xOCB0aW1lcyBmYXN0ZXIgdGhhbiBy dWJ5IDMuNC4yIHNlcmlhbA0KICAgMTEuODEgwrEgMy42OCB0aW1lcyBmYXN0ZXIgdGhhbiBydWJ5 IDMuNC4yIHJhY3RvcnMNCmBgYA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpCdWcgIzE5Mjg4OiBSYWN0b3IgSlNPTiBwYXJzaW5nIHNpZ25pZmljYW50bHkgc2xv d2VyIHRoYW4gbGluZWFyIHBhcnNpbmcNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vl cy8xOTI4OCNjaGFuZ2UtMTEyNzM0DQoNCiogQXV0aG9yOiBtYWNpZWoubWVuc2ZlbGQgKE1hY2ll aiBNZW5zZmVsZCkNCiogU3RhdHVzOiBDbG9zZWQNCiogcnVieSAtdjogcnVieSAzLjIuMCAoMjAy Mi0xMi0yNSByZXZpc2lvbiBhNTI4OTA4MjcxKSBbeDg2XzY0LWxpbnV4XQ0KKiBCYWNrcG9ydDog Mi43OiBVTktOT1dOLCAzLjA6IFVOS05PV04sIDMuMTogVU5LTk9XTiwgMy4yOiBVTktOT1dODQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQphIHNpbXBsZSBiZW5jaG1h cms6DQoNCmBgYHJ1YnkNCnJlcXVpcmUgJ2pzb24nDQpyZXF1aXJlICdiZW5jaG1hcmsnDQoNCkNP TkNVUlJFTlQgPSA1DQpSQUNUT1JTID0gdHJ1ZQ0KRUxFTUVOVFMgPSAxMDBfMDAwDQoNCmRhdGEg PSBDT05DVVJSRU5ULnRpbWVzLm1hcCBkbw0KICBFTEVNRU5UUy50aW1lcy5tYXAgZG8NCiAgICB7 DQogICAgICByYW5kID0+IHJhbmQsDQogICAgICByYW5kID0+IHJhbmQsDQogICAgICByYW5kID0+ IHJhbmQsDQogICAgICByYW5kID0+IHJhbmQNCiAgICB9LnRvX2pzb24NCiAgZW5kDQplbmQNCg0K cmFjdG9ycyA9IENPTkNVUlJFTlQudGltZXMubWFwIGRvDQogIFJhY3Rvci5uZXcgZG8NCiAgICBS YWN0b3IucmVjZWl2ZS5lYWNoIHsgSlNPTi5wYXJzZShfMSkgfQ0KICBlbmQNCmVuZA0KDQpyZXN1 bHQgPSBCZW5jaG1hcmsubWVhc3VyZSBkbw0KICBpZiBSQUNUT1JTDQogICAgQ09OQ1VSUkVOVC50 aW1lcyBkbyB8aXwNCiAgICAgIHJhY3RvcnNbaV0uc2VuZChkYXRhW2ldLCBtb3ZlOiBmYWxzZSkN CiAgICBlbmQNCg0KICAgIHJhY3RvcnMuZWFjaCgmOnRha2UpDQogIGVsc2UNCiAgICAjIExpbmVh ciB3aXRob3V0IGFueSB0aHJlYWRzDQogICAgZGF0YS5lYWNoIGRvIHxwaWVjZXwNCiAgICAgIHBp ZWNlLmVhY2ggeyBKU09OLnBhcnNlKF8xKSB9DQogICAgZW5kDQogIGVuZA0KZW5kDQoNCnB1dHMg cmVzdWx0DQpgYGANCg0KR2l2ZXMgZm9sbG93aW5nIHJlc3VsdHMgb24gbXkgOCBjb3JlIG1hY2hp bmU6DQoNCmBgYHNoZWxsDQojIHdpdGhvdXQgcmFjdG9yczoNCiAgMi43MzE3NDggICAwLjAwMzk5 MyAgIDIuNzM1NzQxICggIDIuNzM2MzQ5KQ0KDQojIHdpdGggcmFjdG9ycw0KMTIuNTgwNDUyICAg NS4wODk4MDIgIDE3LjY3MDI1NCAoICA1LjIwOTc1NSkNCmBgYA0KSSB3b3VsZCBleHBlY3QgUmFj dG9ycyBub3QgdG8gYmUgdHdvIHRpbWVzIHNsb3dlciBvbiB0aGUgQ1BVIGludGVuc2Ugd29yay4N Cg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxp c3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4g ZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZv IC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwu cnVieS1sYW5nLm9yZy8=