[ruby-core:91576] [Ruby trunk Feature#15331] [PATCH] Faster hashing for short string literals

From: duerst@...
Date: 2019-02-16 09:33:46 UTC
List: ruby-core #91576
SXNzdWUgIzE1MzMxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgZHVlcnN0IChNYXJ0aW4gRMO8cnN0KS4N
Cg0KDQpub2J1IChOb2J1eW9zaGkgTmFrYWRhKSB3cm90ZToNCj4gSXNuJ3QgMSUgYSBtZWFzdXJl
bWVudCBlcnJvcj8NCj4gRG9lcyBpdCBhbHdheXMgb2NjdXIgY29uc3RhbnRseT8NCg0KSWYgYSAx
JSBpbXByb3ZlbWVudCBpcyBjb25zaXN0ZW50bHkgcmVwcm9kdWNpYmxlLCB0aGVuIGl0J3Mgd29y
dGggcmVjb25zaWRlcmluZy4NCg0KYWxhbnd1IChBbGFuIFd1KSB3cm90ZToNCj4gSSBwcm9wb3Nl
ZCB0aGlzIGNoYW5nZSBiZWNhdXNlIGV2ZXJ5IGF0dHJpYnV0ZSBhY2Nlc3MgaW4gQWN0aXZlIFJl
Y29yZCBnb2VzIHRocm91Z2ggYSBoYXNoIGxvb2t1cC4NCj4gV2hlbiB3ZSBwcm9maWxlIG91ciBh
cHAgaW4gcHJvZHVjdGlvbiwgQWN0aXZlIFJlY29yZCBhdHRyaWJ1dGUgYWNjZXNzIHNob3dzIHVw
IGFzIGEgY2xlYXIgaG90IHNwb3QuDQoNClRoYXQgZG9lc24ndCBjb21lIGFzIGEgc3VycHJpc2Ug
dG8gbWUuDQoNCj4gV2hlbiBJIHVzZWQgdGhpcyBwYXRjaCB0byBydW4gcmVzcG9uc2UgdGltZSBi
ZW5jaG1hcmsgYWdhaW5zdCBodHRwczovL2dpdGh1Yi5jb20vY29kZXRyaWFnZS9jb2RldHJpYWdl
LA0KPiB0aGVyZSB3YXMgYSAxJSBpbXByb3ZlbWVudC4gQSAxJSBpbXByb3ZlbWVudCB3b3VsZCBi
ZSB0cmFuc2xhdGUgdG8gYSBncmVhdCBkZWFsIG9mIGNvc3Qgc2F2aW5ncyBmb3IgdXMgaW4gcHJv
ZHVjdGlvbi4NCg0KQ2FuIHlvdSBnaXZlIG1vcmUgaW5mb3JtYXRpb24/IFdoYXQgJ3Jlc3BvbnNl
IHRpbWUgYmVuY2htYXJrJyBkaWQgeW91IHVzZSAoSSBkaWRuJ3QgZmluZCBhbnkgc3VjaCBiZW5j
aG1hcmsgaW4gY29kZXRyaWFnZSwgYnV0IEkgZGlkbid0IGxvb2sgdmVyeSBoYXJkIGFuZCBhbSBu
b3QgZmFtaWxpYXIgd2l0aCB0aGF0IGFwcGxpY2F0aW9uKT8gRGlkIHlvdSB0cnkgb3RoZXIgYmVu
Y2htYXJrcywgb3IgY2FuIHlvdSB0cnkgdGhlbT8NCg0KPiBJJ20gZGlzYXBwb2ludGVkIHRoYXQg
dGhlIHBhdGNoIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggc3BlZWQtdXAgdG8ganVzdGlmeSB0aGUg
bWFpbnRlbmFuY2UgYnVyZGVuLA0KPiBidXQgSSB0aGFuayB5b3UgYm90aCBmb3IgeW91ciB0aW1l
Lg0KDQpJIGRvbid0IHRoaW5rIHdlIHNheSB0aGF0IDElIGlzbid0IGVub3VnaC4gSWYgaXQncyBy
ZXByb2R1Y2libGUsIGl0J3MgdmVyeSBlYXNpbHkgd29ydGggaXQuIEJ1dCBpZiB3ZSBjYW4ndCBy
ZXByb2R1Y2UgdGhlIHNwZWVkdXAsIGl0J3MgZGlmZmljdWx0IGZvciB1cyB0byBpbmNsdWRlIHlv
dXIgY29kZS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVh
dHVyZSAjMTUzMzE6IFtQQVRDSF0gRmFzdGVyIGhhc2hpbmcgZm9yIHNob3J0IHN0cmluZyBsaXRl
cmFscw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE1MzMxI2NoYW5nZS03Njg0
MA0KDQoqIEF1dGhvcjogYWxhbnd1IChBbGFuIFd1KQ0KKiBTdGF0dXM6IENsb3NlZA0KKiBQcmlv
cml0eTogTm9ybWFsDQoqIEFzc2lnbmVlOiANCiogVGFyZ2V0IHZlcnNpb246IA0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyMgQmFja2dyb3VuZA0KDQpJdCdzIGNv
bW1vbiBmb3IgYXBwbGljYXRpb25zIHRvIHVzZSBzdHJpbmcgbGl0ZXJhbHMgYXMgaGFzaCBrZXlz
LCBlc3BlY2lhbGx5DQpmb3IgYXBwbGljYXRpb25zIHRoYXQgd29yayB3aXRoIFlBTUwgb3IgSlNP
TjoNCg0KYGBgDQpwYXlsb2RbJ25hbWUnXQ0KYGBgDQoNCkF0IHRoZSBtb21lbnQgKHI2NTg5NSks
IGhhc2ggbG9va3VwcyB1c2luZyBhIHN0cmluZyBrZXkgaXMgYWJvdXQgMzAlIHNsb3dlcg0KdGhh
biB1c2luZyBhIHN5bWJvbCBrZXkuDQoNCiMjIFByb3Bvc2FsDQoNCldlIG1lbW9pemUgdGhlIGhh
c2ggY29kZSBmb3Igc2hvcnQgZnN0cmluZ3MuIFRoZXJlIGlzIGV4dHJhLCBjdXJyZW50bHkgdW51
c2VkDQpzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBSU3RyaW5nIHN0cnVjdCB3ZSBjYW4gdXNlIHRv
IHN0b3JlIHRoZSBoYXNoIGNvZGUuDQpUaGUgdW5pcXVlIG5hdHVyZSBvZiBmc3RyaW5ncyBtYWtl
cyBpdCBzbyB0aGF0IGV2ZXJ5IHVzZXIgb2YgZWFjaCBmc3RyaW5nIGJlbmVmaXQNCmZyb20gdGhl
IG1lbW9pemVkIGhhc2guDQoNCiMjIEV2YWx1YXRpb24NCg0KVGhlIGluY2x1ZGVkIGJlbmNobWFy
ayBoYXNoX2FyZWZfZnN0ci5yYiBpcyBhYm91dCAyMCUgZmFzdGVyIHdpdGggdGhpcyBvcHRpbWl6
YXRpb24uDQpoYXNoX2FyZWZfbG9uZ19zdHIucmIgc2hvd3MgdGhhdCBmb3IgbG9uZyBzdHJpbmdz
IHdoaWNoIHdlIGNhbm5vdCBtZW1vaXplLCB0aGVyZSBpcw0Kbm8gdmlzaWJsZSBwZXJmb3JtYW5j
ZSBwZW5hbHR5Lg0KDQp2bTJfZnJlZXplc3RyaW5nLnltbCBpcyBhbHNvIG5vdCB2aXNpYmx5IHNs
b3dlciBhZnRlciB0aGlzIG9wdGltaXphdGlvbi4NCg0KSSBoYXZlIGFsc28gYXR0YWNoZWQgYSBi
ZWNobWFyayAoc3RyaW5nX2tleV92c19zeW1ib2xfa2V5LnJiKSB0aGF0IGNvbXBhcmVzIGhhc2gN
Cmxvb2t1cHMgd2l0aCBzeW1ib2xzIGFnYWluc3QgaGFzaCBsb29rdXBzIHdpdGggc3RyaW5ncy4g
V2l0aCB0aGlzIG9wdGltaXphdGlvbiwgdGhlDQpnYXAgaW4gcGVyZm9ybWFuY2UgaXMgc21hbGxl
ci4gKDEwJSBzbG93ZXIgcG9zdCBwYXRjaCB2cyAzMCUgc2xvd2VyIG9uIHRydW5rKQ0KDQotLS1G
aWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdHJpbmdfa2V5X3ZzX3N5bWJv
bF9rZXkucmIgKDU5NCBCeXRlcykNCjAwMDEtSGFzaC1jb2RlLW1lbW9pemF0aW9uLWZvci1zaG9y
dC1mc3RyaW5ncy5wYXRjaCAoMy42MiBLQikNCjAwMDEtSGFzaC1jb2RlLW1lbW9pemF0aW9uLWZv
ci1zaG9ydC1mc3RyaW5ncy12Mi5wYXRjaCAoNC4yOSBLQikNCjAwMDEtSGFzaC1jb2RlLW1lbW9p
emF0aW9uLWZvci1zaG9ydC1mc3RyaW5ncy12My5wYXRjaCAoNC4zNiBLQikNCjAwMDEtSGFzaC1j
b2RlLW1lbW9pemF0aW9uLWZvci1zaG9ydC1mc3RyaW5ncy12NC5wYXRjaCAoNC4zMSBLQikNCjAw
MDEtSGFzaC1jb2RlLW1lbW9pemF0aW9uLWZvci1zaG9ydC1mc3RyaW5ncy12NS5wYXRjaCAoMTIu
OSBLQikNCjAwMDEtQWRkLXN0X3VwZGF0ZV93aXRoX2hhc2gucGF0Y2ggKDMuMDkgS0IpDQowMDAy
LUhhc2gtY29kZS1tZW1vaXphdGlvbi1mb3Itc2hvcnQtZnN0cmluZ3MucGF0Y2ggKDEwIEtCKQ0K
DQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWls
dG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8
aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1j
b3JlPgo=

In This Thread

Prev Next