[ruby-core:102141] [Ruby master Bug#17497] Ractor performance issue
From:
keithrbennett@...
Date:
2021-01-18 18:11:43 UTC
List:
ruby-core #102141
SXNzdWUgIzE3NDk3IGhhcyBiZWVuIHVwZGF0ZWQgYnkga2VpdGhyYmVubmV0dCAoS2VpdGggQmVu bmV0dCkuDQoNCg0KSSB0b28gaGF2ZSBzZWVuIHN0cmFuZ2UgcmVzdWx0cyB0ZXN0aW5nIHJhY3Rv cnMuIEkgdXNlZCB0aGUgY29kZSBhdCBodHRwczovL2dpdGh1Yi5jb20va2VpdGhyYmVubmV0dC9r ZWl0aHJiZW5uZXR0LXJhY3Rvci10ZXN0L2Jsb2IvbWFzdGVyL215X3JhY3Rvci5yYiB0byBkbyBz b21lIGFyYml0cmFyeSBidXQgcHJlZGljdGFibGUgd29yay4gSSBoYXZlIGEgMjQtY29yZSBSeXpl biA5IENQVSwgYW5kIEkgY29tcGFyZWQgdXNpbmcgMSByYWN0b3Igd2l0aCB1c2luZyAyNC4gV2l0 aCAyNCwgaHRvcCByZXBvcnRlZCB0aGF0IGFsbCB0aGUgQ1BVJ3Mgd2VyZSBhdCAxMDAlIG1vc3Qg b2YgdGhlIHRpbWUsIHlldCB0aGUgZWxhcHNlZCB0aW1lIHVzaW5nIDI0IENQVSdzIHdhcyBvbmx5 IGFib3V0IGEgdGhpcmQgbGVzcyB0aGFuIHdoZW4gdXNpbmcgMSBDUFUuIEFsc28sIHRoZSBDUFUn cyBzZWVtZWQgdG8gYmUgd29ya2luZyBjb2xsZWN0aXZlbHkgYWJvdXQgdGVuIHRpbWVzIGhhcmRl ciB3aXRoIDI0IENQVSdzLiBIZXJlIGlzIHRoZSBwcm9ncmFtIG91dHB1dDoNCg0KYGBgDQoxIENQ VToNCk1hbnkgSFRPUCByZWFkaW5ncyBhcmUgPCAxMDAlIGZvciBhbGwgQ1BVJ3MNCiB0aW1lIHJh Y3Rvci9teV9yYWN0b3IucmIgcnVieSAnKi5yYicNClJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21t YW5kIHRvIGZpbmQgYWxsIGZpbGVzcGVjcyB0byBwcm9jZXNzOiBmaW5kIC1MIHJ1YnkgLXR5cGUg ZiAtbmFtZSAnKi5yYicgLXByaW50DQpQcm9jZXNzaW5nIDgyMTggZmlsZXMgaW4gMSBzbGljZXMs IHdob3NlIHNpemVzIGFyZToNCls4MjE4XQ0KcmFjdG9yL215X3JhY3Rvci5yYiBydWJ5ICcqLnJi JyAgMjUxMy45MHMgdXNlciA2Ljc1cyBzeXN0ZW0gOTklIGNwdSA0MjowMy4wMSB0b3RhbA0KDQoN CjI0IENQVSdzOg0KJSB0aW1lIHJhY3Rvci9teV9yYWN0b3IucmIgcnVieSAnKi5yYicgOyBlc3Bl YWsgZmluaXNoZWQNClJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGZpbmQgYWxsIGZp bGVzcGVjcyB0byBwcm9jZXNzOiBmaW5kIC1MIHJ1YnkgLXR5cGUgZiAtbmFtZSAnKi5yYicgLXBy aW50DQpQcm9jZXNzaW5nIDgyMTggZmlsZXMgaW4gMjQgc2xpY2VzLCB3aG9zZSBzaXplcyBhcmU6 DQpbMzQzLCAzNDMsIDM0MywgMzQzLCAzNDMsIDM0MywgMzQzLCAzNDMsIDM0MywgMzQzLCAzNDMs IDM0MywgMzQzLCAzNDMsIDM0MywgMzQzLCAzNDMsIDM0MywgMzQzLCAzNDMsIDM0MywgMzQzLCAz NDMsIDMyOV0NCnJhY3Rvci9teV9yYWN0b3IucmIgcnVieSAnKi5yYicgIDIyOTg2LjQycyB1c2Vy IDE0Ljk4cyBzeXN0ZW0gMTEzNCUgY3B1IDMzOjQ3Ljk2IHRvdGFsDQpgYGANCg0KKEluIHRoZSBj b21tYW5kLCBgcnVieWAgcmVmZXJzIHRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggSSd2ZSBjbG9u ZWQgdGhlIEdpdGh1YiBSdWJ5IHJlcG8uKQ0KDQpIZXJlIGlzIHRoZSBjdXJyZW50IGNvbnRlbnQg b2YgdGhlIHRlc3QgcHJvZ3JhbToNCg0KYGBgDQojIS91c3IvYmluL2VudiBydWJ5DQoNCnJlcXVp cmUgJ2FtYXppbmdfcHJpbnQnDQpyZXF1aXJlICdldGMnDQpyZXF1aXJlICdzZXQnDQpyZXF1aXJl ICdzaGVsbHdvcmRzJw0KcmVxdWlyZSAneWFtbCcNCg0KcmFpc2UgIlRoaXMgc2NyaXB0IHJlcXVp cmVzIFJ1YnkgdmVyc2lvbiAzIG9yIGxhdGVyLiIgdW5sZXNzIFJVQllfVkVSU0lPTi5zcGxpdCgn LicpLmZpcnN0LnRvX2kgPj0gMw0KDQoNCiMgQW4gaW5zdGFuY2Ugb2YgdGhpcyBwYXJzZXIgY2xh c3MgaXMgY3JlYXRlZCBmb3IgZWFjaCByYWN0b3IuDQpjbGFzcyBSYWN0b3JQYXJzZXINCg0KICBh dHRyX3JlYWRlciA6ZGljdGlvbmFyeV93b3Jkcw0KDQogIGRlZiBpbml0aWFsaXplKGRpY3Rpb25h cnlfd29yZHMpDQogICAgQGRpY3Rpb25hcnlfd29yZHMgPSBkaWN0aW9uYXJ5X3dvcmRzDQogIGVu ZA0KDQogIGRlZiBwYXJzZShmaWxlc3BlY3MpDQogICAgZmlsZXNwZWNzLmluamVjdChTZXQubmV3 KSBkbyB8Zm91bmRfd29yZHMsIGZpbGVzcGVjfA0KICAgICAgZm91bmRfd29yZHMgfCBwcm9jZXNz X29uZV9maWxlKGZpbGVzcGVjKQ0KICAgIGVuZA0KICBlbmQNCg0KICBwcml2YXRlIGRlZiB3b3Jk PyhzdHJpbmcpDQogICAgZGljdGlvbmFyeV93b3Jkcy5pbmNsdWRlPyhzdHJpbmcpDQogIGVuZA0K DQogIHByaXZhdGUgZGVmIHN0cmlwX3B1bmN0dWF0aW9uKHN0cmluZykNCiAgICBwdW5jdHVhdGlv bl9yZWdleCA9IC9bWzpwdW5jdDpdXS8NCiAgICBzdHJpbmcuZ3N1YihwdW5jdHVhdGlvbl9yZWdl eCwgJyAnKQ0KICBlbmQNCg0KICBwcml2YXRlIGRlZiBmaWxlX2xpbmVzKGZpbGVzcGVjKQ0KICAg IGNvbW1hbmQgPSAic3RyaW5ncyAje1NoZWxsd29yZHMuZXNjYXBlKGZpbGVzcGVjKX0iDQogICAg dGV4dCA9IGAje2NvbW1hbmR9YA0KICAgIHN0cmlwX3B1bmN0dWF0aW9uKHRleHQpLnNwbGl0KCJc biIpDQogIGVuZA0KDQogIHByaXZhdGUgZGVmIGxpbmVfd29yZHMobGluZSkNCiAgICBsaW5lLnNw bGl0Lm1hcCgmOmRvd25jYXNlKS5zZWxlY3QgeyB8dGV4dHwgd29yZD8odGV4dCkgfQ0KICBlbmQN Cg0KICBwcml2YXRlIGRlZiBwcm9jZXNzX29uZV9maWxlKGZpbGVzcGVjKQ0KICAgIGZpbGVfd29y ZHMgPSBTZXQubmV3DQogICAgZmlsZV9saW5lcyhmaWxlc3BlYykuZWFjaCBkbyB8bGluZXwNCiAg ICAgIGxpbmVfd29yZHMobGluZSkuZWFjaCB7IHx3b3JkfCBmaWxlX3dvcmRzIDw8IHdvcmQgfQ0K ICAgIGVuZA0KDQogICAgIyBwdXRzICJGb3VuZCAje2ZpbGVfd29yZHMuY291bnR9IHdvcmRzIGlu ICN7ZmlsZXNwZWN9LiINCiAgICBmaWxlX3dvcmRzDQogIGVuZA0KZW5kDQoNCg0KY2xhc3MgTWFp bg0KDQogIEJBU0VESVIgPSAgQVJHVlswXSB8fCAnLicNCiAgRklMRU1BU0sgPSBBUkdWWzFdDQog IENQVV9DT1VOVCA9IEV0Yy5ucHJvY2Vzc29ycw0KDQogIGRlZiBjYWxsDQogICAgY2hlY2tfYXJn X2NvdW50DQogICAgc2xpY2VzID0gZ2V0X2ZpbGVzcGVjX3NsaWNlcw0KICAgIHJhY3RvcnMgPSBj cmVhdGVfYW5kX3BvcHVsYXRlX3JhY3RvcnMoc2xpY2VzKQ0KICAgIGFsbF93b3JkcyA9IGNvbGxh dGVfcmFjdG9yX3Jlc3VsdHMocmFjdG9ycykNCiAgICB5YW1sID0gYWxsX3dvcmRzLnRvX2Euc29y dC50b195YW1sDQogICAgRmlsZS53cml0ZSgncmFjdG9yLXdvcmRzLnlhbWwnLCB5YW1sKQ0KICAg IHB1dHMgIldvcmRzIGFyZSBpbiByYWN0b3Itd29yZHMueWFtbC4iDQogIGVuZA0KDQogIHByaXZh dGUgZGVmIGNoZWNrX2FyZ19jb3VudA0KICAgIGlmIEFSR1YubGVuZ3RoID4gMg0KICAgICAgcHV0 cyAiU3ludGF4IGlzIHJhY3RvciBbYmFzZV9kaXJlY3RvcnldIFtmaWxlbWFza10sIGFuZCBmaWxl bWFzayBtdXN0IGJlIHF1b3RlZCBzbyB0aGF0IHRoZSBzaGVsbCBkb2VzIG5vdCBleHBhbmQgaXQu Ig0KICAgICAgZXhpdCAtMQ0KICAgIGVuZA0KICBlbmQNCg0KICBwcml2YXRlIGRlZiBjb2xsYXRl X3JhY3Rvcl9yZXN1bHRzKHJhY3RvcnMpDQogICAgcmFjdG9ycy5pbmplY3QoU2V0Lm5ldykgZG8g fGFsbF93b3JkcywgcmFjdG9yfA0KICAgICAgYWxsX3dvcmRzIHwgcmFjdG9yLnRha2UNCiAgICBl bmQNCiAgZW5kDQoNCiAgcHJpdmF0ZSBkZWYgZ2V0X2ZpbGVzcGVjX3NsaWNlcw0KICAgIGFsbF9m aWxlc3BlY3MgPSBmaW5kX2FsbF9maWxlc3BlY3MNCiAgICBzbGljZV9zaXplID0gKGFsbF9maWxl c3BlY3Muc2l6ZSAvIENQVV9DT1VOVCkgKyAxDQogICAgIyBzbGljZV9zaXplID0gYWxsX2ZpbGVz cGVjcy5zaXplICMgdXNlIHRoaXMgbGluZSBpbnN0ZWFkIG9mIHByZXZpb3VzIHRvIHRlc3Qgd2l0 aCAxIHJhY3Rvcg0KICAgIHNsaWNlcyA9IGFsbF9maWxlc3BlY3MuZWFjaF9zbGljZShzbGljZV9z aXplKS50b19hDQogICAgcHV0cyAiUHJvY2Vzc2luZyAje2FsbF9maWxlc3BlY3Muc2l6ZX0gZmls ZXMgaW4gI3tzbGljZXMuc2l6ZX0gc2xpY2VzLCB3aG9zZSBzaXplcyBhcmU6XG4je3NsaWNlcy5t YXAoJjpzaXplKS5pbnNwZWN0fSINCiAgICBzbGljZXMNCiAgZW5kDQoNCiAgcHJpdmF0ZSBkZWYg Y3JlYXRlX2FuZF9wb3B1bGF0ZV9yYWN0b3JzKHNsaWNlcykNCiAgICB3b3JkcyA9IEZpbGUucmVh ZGxpbmVzKCcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnKS5tYXAoJjpjaG9tcCkubWFwKCY6ZG93bmNh c2UpLnNvcnQNCg0KICAgIHNsaWNlcy5tYXAgZG8gfHNsaWNlfA0KICAgICAgcmFjdG9yID0gUmFj dG9yLm5ldyBkbw0KICAgICAgICBmaWxlc3BlY3MgPSBSYWN0b3IucmVjZWl2ZQ0KICAgICAgICBk aWN0aW9uYXJ5X3dvcmRzID0gUmFjdG9yLnJlY2VpdmUNCiAgICAgICAgUmFjdG9yUGFyc2VyLm5l dyhkaWN0aW9uYXJ5X3dvcmRzKS5wYXJzZShmaWxlc3BlY3MpDQogICAgICBlbmQNCiAgICAgIHJh Y3Rvci5zZW5kKHNsaWNlKQ0KICAgICAgcmFjdG9yLnNlbmQod29yZHMpDQogICAgICByYWN0b3IN CiAgICBlbmQNCiAgZW5kDQoNCiAgcHJpdmF0ZSBkZWYgZmluZF9hbGxfZmlsZXNwZWNzDQogICAg ZmlsZW1hc2sgPSBGSUxFTUFTSyA/ICVRey1uYW1lICcje0ZJTEVNQVNLfSd9IDogJycNCiAgICBj b21tYW5kID0gImZpbmQgLUwgI3tCQVNFRElSfSAtdHlwZSBmICN7ZmlsZW1hc2t9IC1wcmludCIN CiAgICBwdXRzICJSdW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBmaW5kIGFsbCBmaWxl c3BlY3MgdG8gcHJvY2VzczogI3tjb21tYW5kfSINCiAgICBgI3tjb21tYW5kfWAuc3BsaXQoIlxu IikNCiAgZW5kDQplbmQNCg0KTWFpbi5uZXcuY2FsbA0KYGBgDQoNCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkJ1ZyAjMTc0OTc6IFJhY3RvciBwZXJmb3JtYW5jZSBp c3N1ZQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE3NDk3I2NoYW5nZS04OTk5 Mw0KDQoqIEF1dGhvcjogbWFyY2FuZHJlIChNYXJjLUFuZHJlIExhZm9ydHVuZSkNCiogU3RhdHVz OiBPcGVuDQoqIFByaW9yaXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IGtvMSAoS29pY2hpIFNhc2Fk YSkNCiogcnVieSAtdjogcnVieSAzLjAuMHAwICgyMDIwLTEyLTI1IHJldmlzaW9uIDk1YWZmMjE0 NjgpIFt4ODZfNjQtZGFyd2luMThdDQoqIEJhY2twb3J0OiAyLjU6IFVOS05PV04sIDIuNjogVU5L Tk9XTiwgMi43OiBVTktOT1dODQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpUaGVyZSdzIGEgc3RyYW5nZSBwZXJmb3JtYW5jZSBpc3N1ZSB3aXRoIFJhY3RvciAoYXQg bGVhc3Qgb24gTWFjT1MsIGRpZG4ndCBydW4gb24gb3RoZXIgT1MpLg0KDQpJIHJhbiBhIGJlbmNo bWFyayBkb2luZyAzIGRpZmZlcmVudCB0eXBlcyBvZiB3b3JrOg0KKiAiZmliIjogbWV0aG9kIGNh bGxzIChuYWl2ZSBmaWJvbmFjY2kgY2FsY3VsYXRpb24pDQoqICJjcHUiOiBgKDAuLi4xMDAwKS5p bmplY3QoOispYA0KKiAic2xlZXAiOiBjYWxsIGBzbGVlcGANCg0KSSBnZXQgdGhlIGtpbmQgb2Yg cmVzdWx0cyBJIHdhcyBleGNlcHRpbmcgZm9yIHRoZSBgZmliYCBhbmQgZm9yIHNsZWVwaW5nLCBi dXQgdGhlIHJlc3VsdHMgZm9yIHRoZSAiY3B1IiB3b3JrbG9hZCBzaG93IGEgcHJvYmxlbS4NCg0K SXQgaXMgc28gc2xvdyB0aGF0IG15IHB1cmUgUnVieSBiYWNrcG9ydCAodXNpbmcgVGhyZWFkcykg aXMgNjV4IGZhc3RlciDwn5iuIG9uIG15IE1hYyBQcm8gKGRlc3BpdGUgaGF2aW5nIDYgY29yZXMp LiBFeHBlY3RlZCByZXN1bHRzIHdvdWxkIGJlIDZ4IHNsb3dlciwgc28gaW4gdGhhdCBjYXNlIFJh Y3RvciBpcyA0MDB4IHNsb3dlciB0aGFuIGl0IHNob3VsZCDwn5i/DQoNCk9uIG15IE1hY0Jvb2sg KDIgY29yZXMpIHRoZSByZXN1bHRzIGFyZSBub3QgYXMgYmFkLCB0aGUgYGNwdWAgd29ya2xvYWQg aXMgM3ggZmFzdGVyIHdpdGggbXkgcHVyZS1SdWJ5IGJhY2twb3J0IChvbmx5KSBpbnN0ZWFkIG9m IH4yeCBzbG93ZXIsIHNvIHRoZSBmYWN0b3IgaXMgNnggdG9vIHNsb3cuDQoNCg0KYGBgDQokIGdl bSBpbnN0YWxsIGJhY2twb3J0cw0KU3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBiYWNrcG9ydHMtMy4y MC4wDQoxIGdlbSBpbnN0YWxsZWQNCiQgcnVieSByYWN0b3JfdGVzdC5yYg0KPGludGVybmFsOnJh Y3Rvcj46MjY3OiB3YXJuaW5nOiBSYWN0b3IgaXMgZXhwZXJpbWVudGFsLCBhbmQgdGhlIGJlaGF2 aW9yIG1heSBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFJ1YnkhIEFsc28gdGhlcmUgYXJl IG1hbnkgaW1wbGVtZW50YXRpb24gaXNzdWVzLg0KZmliOiAxMTAgbXMgIHwgIGNwdTogMjI5MDAg bXMgIHwgIHNsZWVwOiAyMDYgbXMNCiQgQj10IHJ1YnkgcmFjdG9yX3Rlc3QucmINClVzaW5nIHB1 cmUgUnVieSBpbXBsZW1lbnRhdGlvbg0KZmliOiA2NTIgbXMgIHwgIGNwdTogMzM3IG1zICB8ICBz bGVlcDogMjA5IG1zDQpgYGANCg0KTm90aWNlIHRoZSBgc2xlZXBgIHJ1biB0YWtlcyBzaW1pbGFy IHRpbWUsIHdoaWNoIGlzIGdvb2QsIGFuZCBgZmliYCBpcyB+NnggZmFzdGVyIG9uIG15IDYtY29y ZSBDUFUgKGFuZCB+MnggZmFzdGVyIG9uIG15IDItY29yZSBNYWNCb29rKSwgYWdhaW4gdGhhdCdz IGdvb2QgYXMgdGhlIHB1cmUgcnVieSB2ZXJzaW9uIHVzZXMgVGhyZWFkcyBhbmQgdGh1cyBydW5z IHdpdGggYSBzaW5nbGUgR1ZMLg0KDQpUaGUgYGNwdWAgdmVyc2lvbiBpcyB0aGUgcHJvYmxlbS4N Cg0KU2NyaXB0IGlzIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL21hcmNhbmRyZS9iZmVk NjI2ZTUzOGEzZDBmYzdjYWQzOGRjMDI2Y2YwZQ0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5 LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9y Zy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==